You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltaspike.apache.org by "Gerhard Petracek (JIRA)" <ji...@apache.org> on 2015/10/12 15:07:05 UTC
[jira] [Comment Edited] (DELTASPIKE-1001) Skip caching
ClassDeactivation for some project stages
[ https://issues.apache.org/jira/browse/DELTASPIKE-1001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14953078#comment-14953078 ]
Gerhard Petracek edited comment on DELTASPIKE-1001 at 10/12/15 1:06 PM:
------------------------------------------------------------------------
i agree that we should support switching project-stages, because it's supported by the test-control module...
adding that is easy as well and the test i showed before gets even easier with it.
{code}
private static ProjectStage previouslyDetectedProjectStage;
{code}
+
{code}
public static boolean isActivated(Class<? extends Deactivatable> targetClass)
{
ProjectStage currentProjectStage = ProjectStageProducer.getInstance().getProjectStage();
if (previouslyDetectedProjectStage != currentProjectStage)
{
previouslyDetectedProjectStage = currentProjectStage;
activationStatusCache.clear();
classDeactivatorMap.clear();
}
else if (currentProjectStage == ProjectStage.UnitTest || currentProjectStage == ProjectStage.Development)
{
activationStatusCache.clear();
}
//code as it was before
}
{code}
and the test:
{code}
public class ProjectStageDependentClassDeactivationTest
{
@Test
public void deactivationResultInProjectStageUnitTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.UnitTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(false, ClassDeactivationUtils.isActivated(classToCheck));
}
@Test
public void deactivationResultInProjectStageDevelopment()
{
ProjectStageProducer.setProjectStage(ProjectStage.Development);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(false, ClassDeactivationUtils.isActivated(classToCheck));
}
@Test
public void deactivationResultInProjectStageProduction()
{
ProjectStageProducer.setProjectStage(ProjectStage.Production);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageIntegrationTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.IntegrationTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageStaging()
{
ProjectStageProducer.setProjectStage(ProjectStage.Staging);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageSystemTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.SystemTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
private static class TestDeactivatable implements Deactivatable
{
}
}
{code}
@responsibility & behavior:
i basically agree, but not in this case.
#1 we don't have such a split in other parts
#2 we would get 3 additional classes in the >api< for almost nothing.
was (Author: gpetracek):
i agree that we should support switching project-stages, because it's supported by the test-control module...
adding that is easy as well and the test i showed before gets even easier with it.
{code}
private static ProjectStage previouslyDetectedProjectStage;
{code}
+
{code}
public static boolean isActivated(Class<? extends Deactivatable> targetClass)
{
ProjectStage currentProjectStage = ProjectStageProducer.getInstance().getProjectStage();
if (previouslyDetectedProjectStage != currentProjectStage)
{
previouslyDetectedProjectStage = currentProjectStage;
activationStatusCache.clear();
classDeactivatorMap.clear();
}
else if (currentProjectStage == ProjectStage.UnitTest || currentProjectStage == ProjectStage.Development)
{
activationStatusCache.clear();
}
//code as it was before
}
{code}
and the test:
{code}
public class ProjectStageDependentClassDeactivationTest
{
@Test
public void deactivationResultInProjectStageUnitTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.UnitTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(false, ClassDeactivationUtils.isActivated(classToCheck));
}
@Test
public void deactivationResultInProjectStageDevelopment()
{
ProjectStageProducer.setProjectStage(ProjectStage.Development);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(false, ClassDeactivationUtils.isActivated(classToCheck));
}
@Test
public void deactivationResultInProjectStageProduction()
{
ProjectStageProducer.setProjectStage(ProjectStage.Production);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageIntegrationTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.IntegrationTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageStaging()
{
ProjectStageProducer.setProjectStage(ProjectStage.Staging);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
@Test
public void deactivationResultInProjectStageSystemTest()
{
ProjectStageProducer.setProjectStage(ProjectStage.SystemTest);
final Class<? extends Deactivatable> classToCheck = TestDeactivatable.class;
EditableTestDeactivator.activate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck));
EditableTestDeactivator.deactivate(classToCheck);
Assert.assertEquals(true, ClassDeactivationUtils.isActivated(classToCheck)); //due to the cached result
}
private static class TestDeactivatable implements Deactivatable
{
}
}
{code}
> Skip caching ClassDeactivation for some project stages
> ------------------------------------------------------
>
> Key: DELTASPIKE-1001
> URL: https://issues.apache.org/jira/browse/DELTASPIKE-1001
> Project: DeltaSpike
> Issue Type: New Feature
> Components: Core
> Affects Versions: 1.5.0
> Reporter: John D. Ament
> Assignee: John D. Ament
> Fix For: 1.5.1
>
>
> Add the ability to skip caching if the project stage is unit test and possibly development.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)