i know why you did it in this case - but in general: -1 for committing such large changes in case of an ongoing discussion. some hours ago i added a suggestion to [1] exactly for such cases.
regards, gerhard [1] http://s.apache.org/oo 2012/1/22 <[email protected]> > Updated Branches: > refs/heads/master f5d1995b3 -> e3f7e3e4e > > > DELTASPIKE-24 rework Deactivation logic > > This introduces 3 new features > a.) allow deactivation and also re-activation based on ordinals > b.) make it a 1-liner to use for external Extensions > c.) Deativatable is now a pure Marker Interface > > > Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo > Commit: > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/e3f7e3e4 > Tree: > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/e3f7e3e4 > Diff: > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/e3f7e3e4 > > Branch: refs/heads/master > Commit: e3f7e3e4e254401265ac5cc87fcaff5f232392f8 > Parents: f5d1995 > Author: Mark Struberg <[email protected]> > Authored: Sun Jan 22 14:21:52 2012 +0100 > Committer: Mark Struberg <[email protected]> > Committed: Sun Jan 22 14:21:52 2012 +0100 > > ---------------------------------------------------------------------- > .../api/activation/AbstractClassDeactivator.java | 61 ------- > .../core/api/activation/ClassDeactivation.java | 122 +++++++++++++++ > .../core/api/activation/ClassDeactivator.java | 16 +- > .../core/api/activation/Deactivatable.java | 20 +-- > .../deltaspike/core/api/config/ConfigResolver.java | 10 +- > .../core/impl/exclude/ExcludeExtension.java | 14 +- > .../core/impl/util/ClassDeactivation.java | 113 ------------- > .../core/impl/util/ClassDeactivatorStorage.java | 66 -------- > .../core/impl/util/DefaultClassDeactivator.java | 51 ------ > .../test/core/impl/activation/ActivatedClass.java | 5 +- > .../core/impl/activation/DeactivatedClass.java | 4 +- > .../impl/activation/TestClassDeactivation.java | 6 +- > .../core/impl/activation/TestClassDeactivator.java | 19 ++- > .../core/api/exclude/ExcludeIntegrationTest.java | 3 +- > .../META-INF/apache-deltaspike.properties | 1 - > 15 files changed, 178 insertions(+), 333 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/AbstractClassDeactivator.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/AbstractClassDeactivator.java > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/AbstractClassDeactivator.java > deleted file mode 100644 > index f3755ad..0000000 > --- > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/AbstractClassDeactivator.java > +++ /dev/null > @@ -1,61 +0,0 @@ > -/* > - * Licensed to the Apache Software Foundation (ASF) under one > - * or more contributor license agreements. See the NOTICE file > - * distributed with this work for additional information > - * regarding copyright ownership. The ASF licenses this file > - * to you under the Apache License, Version 2.0 (the > - * "License"); you may not use this file except in compliance > - * with the License. You may obtain a copy of the License at > - * > - * http://www.apache.org/licenses/LICENSE-2.0 > - * > - * Unless required by applicable law or agreed to in writing, > - * software distributed under the License is distributed on an > - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > - * KIND, either express or implied. See the License for the > - * specific language governing permissions and limitations > - * under the License. > - */ > -package org.apache.deltaspike.core.api.activation; > - > -import java.util.HashSet; > -import java.util.Set; > - > -/** > - * Base implementation which allows an easier class-deactivator > implementation > - */ > -public abstract class AbstractClassDeactivator implements ClassDeactivator > -{ > - // HashSet due to Serializable warning in checkstyle rules > - private HashSet<Class> deactivatedClasses = null; > - > - /** > - * {@inheritDoc} > - */ > - @Override > - public final synchronized Set<Class> getDeactivatedClasses() > - { > - if (this.deactivatedClasses == null) > - { > - this.deactivatedClasses = new HashSet<Class>(); > - deactivateClasses(); > - } > - return this.deactivatedClasses; > - } > - > - /** > - * Can be used by sub-classes to add deactivated classes easily. > - * > - * @param deactivatedClass class to deactivate > - */ > - protected final void addDeactivatedClass(Class deactivatedClass) > - { > - this.deactivatedClasses.add(deactivatedClass); > - } > - > - /** > - * An implementation has to add classes which shouldn't be used by > DeltaSpike. > - * (use {@link #addDeactivatedClass(Class)} for adding classes) > - */ > - protected abstract void deactivateClasses(); > -} > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivation.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivation.java > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivation.java > new file mode 100644 > index 0000000..6a31ad9 > --- /dev/null > +++ > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivation.java > @@ -0,0 +1,122 @@ > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > +package org.apache.deltaspike.core.api.activation; > + > +import org.apache.deltaspike.core.api.config.ConfigResolver; > +import org.apache.deltaspike.core.api.util.ClassUtils; > + > +import javax.enterprise.inject.Typed; > +import java.util.ArrayList; > +import java.util.List; > +import java.util.Map; > +import java.util.concurrent.ConcurrentHashMap; > +import java.util.logging.Logger; > + > +/** > + * Helper methods for {@link ClassDeactivator} > + */ > +@Typed() > +public final class ClassDeactivation > +{ > + private static final Logger LOG = > Logger.getLogger(ClassDeactivation.class.getName()); > + > + /** > + * This Map holds the ClassLoader as first level to make it possible > to have different configurations per > + * WebApplication in an EAR or other Multi-ClassLoader scenario. > + * > + * The Map then contains a List of {@link ClassDeactivator}s in order > of their configured ordinal. > + */ > + private static Map<ClassLoader, List<ClassDeactivator>> > classDeactivatorMap > + = new ConcurrentHashMap<ClassLoader, List<ClassDeactivator>>(); > + > + private ClassDeactivation() > + { > + // private ct to prevent utility class from instantiation. > + } > + > + /** > + * Evaluates if the given {@link Deactivatable} is active. > + * > + * @param deactivatableClazz {@link Deactivatable} under test. > + * @return <code>true</code> if it is active, <code>false</code> > otherwise > + */ > + public static synchronized boolean isActivated(Class<? extends > Deactivatable> deactivatableClazz) > + { > + List<ClassDeactivator> classDeactivators = getClassDeactivators(); > + > + Boolean isActivated = Boolean.TRUE; // by default a class is > always activated. > + > + for (ClassDeactivator classDeactivator : classDeactivators) > + { > + Boolean isLocallyActivated = > classDeactivator.isActivated(deactivatableClazz); > + if (isLocallyActivated != null) > + { > + isActivated = isLocallyActivated; > + } > + } > + > + if (!isActivated) > + { > + LOG.info("Deactivating class " + deactivatableClazz); > + } > + > + return isActivated; > + } > + > + > + /** > + * @return the List of configured @{link ClassDeactivator}s for the > current context ClassLoader. > + */ > + private static List<ClassDeactivator> getClassDeactivators() > + { > + List<ClassDeactivator> classDeactivators = > classDeactivatorMap.get(ClassUtils.getClassLoader(null)); > + if (classDeactivators == null) > + { > + classDeactivators = getConfiguredClassDeactivator(); > + } > + > + return classDeactivators; > + } > + > + private static List<ClassDeactivator> getConfiguredClassDeactivator() > + { > + List<String> classDeactivatorClassNames = > ConfigResolver.getAllPropertyValues(ClassDeactivator.class.getName()); > + > + List<ClassDeactivator> classDeactivators = new > ArrayList<ClassDeactivator>(); > + > + for (String classDeactivatorClassName : > classDeactivatorClassNames) > + { > + LOG.fine("processing ClassDeactivator: " + > classDeactivatorClassName); > + > + try > + { > + ClassDeactivator currentClassDeactivator = > + (ClassDeactivator) > ClassUtils.instantiateClassForName(classDeactivatorClassName); > + classDeactivators.add(currentClassDeactivator); > + } > + catch (Exception e) > + { > + LOG.warning(classDeactivatorClassName + " can't be > instantiated"); > + throw new RuntimeException(e); > + } > + } > + > + return classDeactivators; > + } > +} > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivator.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivator.java > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivator.java > index 1506539..89e4a6f 100644 > --- > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivator.java > +++ > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/ClassDeactivator.java > @@ -19,26 +19,28 @@ > package org.apache.deltaspike.core.api.activation; > > import java.io.Serializable; > -import java.util.Set; > > /** > - * <p>A class-deactivator allows to specify deactivated classes which > can't be deactivated via std. CDI mechanisms.</p> > + * <p>A class-deactivator allows to specify deactivated classes which > can't be deactivated via std. CDI mechanisms. > + * This might be the case for CDI Extensions because CDI mechanisms are > not available at startup time.</p> > * > * <p>A class-deactivator will be resolved from the environment via the > default resolvers or via a custom resolver which > * allows to use any type of configuration-format. See {@link > org.apache.deltaspike.core.api.config.ConfigResolver} > * for more information about how to configure it. The configuration key is > * > <code>org.apache.deltaspike.core.api.activation.ClassDeactivator</code></p> > * > - * <p>Furthermore, {@link AbstractClassDeactivator} is a convenience > class which > - * allows an easier implementation. All classes which implement {@link > Deactivatable} in-/directly, can be deactivated > - * with this mechanism. For all other classes/beans, you can use the veto > mechanism provided by CDI.</p> > + * <p>All DlassDeactivators will get picked up in order of their ordinal > and might explicitely activate or > + * deactivate {@link Deactivatable} classes. Returning a > <code>null</code> value means that the ClassDeactivator > + * doesn't care about the very Deactivatable class.</p> > + * > */ > public interface ClassDeactivator extends Serializable > { > /** > * Provides classes which should be deactivated. > * > - * @return classes which should be deactivated > + * @return {@link Boolean#FALSE} if class should get activated, > {@link Boolean#FALSE} if class must be available > + * and <code>null</code> to let it as is (defined by default > or other > */ > - Set<Class> getDeactivatedClasses(); > + Boolean isActivated(Class<? extends Deactivatable> > deactivatableClazz); > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/Deactivatable.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/Deactivatable.java > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/Deactivatable.java > index 42bb6c7..a0785e3 100644 > --- > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/Deactivatable.java > +++ > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/activation/Deactivatable.java > @@ -19,20 +19,18 @@ > package org.apache.deltaspike.core.api.activation; > > /** > - * Interface to allow easier detection of deactivatable classes. > - * These classes are activated by default (e.g. via CDI config). > + * <p>Interface to allow easier detection of deactivatable classes.</p> > + * > + * <p>These classes are activated by default and can be disabled on > demand (e.g. via CDI config). > * Since CDI, JSF,... currently don't allow to deactivate default > implementations, > - * DeltaSpike has to introduce a proprietary mechanism. > + * DeltaSpike has to introduce a proprietary mechanism.</p> > + * > + * <p>This is e.g. used to disable CDI Extensions in DeltaSpike and might > get > + * used for other Extension libraries as well.</p> > * > - * This is e.g. used to disable CDI Extensions in DeltaSpike and might get > - * used for other Extension libraries as well. > + * <p><b>Note:</b> It is suggested that the implementations > + * use the {@link ClassDeactivation} for implementing the lookup</p> > */ > public interface Deactivatable > { > - /** > - * Returns if the current instance is active or not. > - * > - * @return true if the current instance is active, false otherwise > - */ > - boolean isActivated(); > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigResolver.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigResolver.java > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigResolver.java > index fa83da9..6c71add 100644 > --- > a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigResolver.java > +++ > b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/ConfigResolver.java > @@ -84,9 +84,13 @@ public final class ConfigResolver > } > > /** > - * Resolve all values for the given key, from all registered > ConfigSources. > - * @param key > - * @return List with all found property values, sorted in order of > their ordinal. > + * Resolve all values for the given key, from all registered > ConfigSources ordered by their > + * ordinal value in ascending ways. If more {@link ConfigSource}s > have the same ordinal, their > + * order is undefined. > + * > + * @param key under which configuration is stored > + * @return List with all found property values, sorted in ascending > order of their ordinal. > + * @see > org.apache.deltaspike.core.spi.config.ConfigSource#getOrdinal() > */ > public static List<String> getAllPropertyValues(String key) > { > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/ExcludeExtension.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/ExcludeExtension.java > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/ExcludeExtension.java > index ad73a81..c86ac94 100644 > --- > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/ExcludeExtension.java > +++ > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/ExcludeExtension.java > @@ -18,6 +18,7 @@ > */ > package org.apache.deltaspike.core.impl.exclude; > > +import org.apache.deltaspike.core.api.activation.ClassDeactivation; > import org.apache.deltaspike.core.api.activation.Deactivatable; > import org.apache.deltaspike.core.api.exclude.Exclude; > import org.apache.deltaspike.core.api.interpreter.ExpressionInterpreter; > @@ -25,7 +26,6 @@ import > org.apache.deltaspike.core.api.projectstage.ProjectStage; > import org.apache.deltaspike.core.api.util.ClassUtils; > import > org.apache.deltaspike.core.impl.interpreter.PropertyExpressionInterpreter; > import org.apache.deltaspike.core.impl.projectstage.ProjectStageProducer; > -import org.apache.deltaspike.core.impl.util.ClassDeactivation; > > import javax.enterprise.event.Observes; > import javax.enterprise.inject.spi.AfterDeploymentValidation; > @@ -44,6 +44,8 @@ public class ExcludeExtension implements Extension, > Deactivatable > { > private static final Logger LOG = > Logger.getLogger(ExcludeExtension.class.getName()); > > + private Boolean isActivated = null; > + > /** > * triggers initialization in any case > * @param afterDeploymentValidation observed event > @@ -197,12 +199,12 @@ public class ExcludeExtension implements Extension, > Deactivatable > processAnnotatedType.getAnnotatedType().getJavaClass()); > } > > - /** > - * {@inheritDoc} > - */ > - @Override > public boolean isActivated() > { > - return ClassDeactivation.isClassActivated(getClass()); > + if (isActivated == null) > + { > + isActivated = ClassDeactivation.isActivated(getClass()); > + } > + return isActivated; > } > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivation.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivation.java > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivation.java > deleted file mode 100644 > index ef06193..0000000 > --- > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivation.java > +++ /dev/null > @@ -1,113 +0,0 @@ > -/* > - * Licensed to the Apache Software Foundation (ASF) under one > - * or more contributor license agreements. See the NOTICE file > - * distributed with this work for additional information > - * regarding copyright ownership. The ASF licenses this file > - * to you under the Apache License, Version 2.0 (the > - * "License"); you may not use this file except in compliance > - * with the License. You may obtain a copy of the License at > - * > - * http://www.apache.org/licenses/LICENSE-2.0 > - * > - * Unless required by applicable law or agreed to in writing, > - * software distributed under the License is distributed on an > - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > - * KIND, either express or implied. See the License for the > - * specific language governing permissions and limitations > - * under the License. > - */ > -package org.apache.deltaspike.core.impl.util; > - > -import org.apache.deltaspike.core.api.activation.ClassDeactivator; > -import org.apache.deltaspike.core.api.config.ConfigResolver; > -import org.apache.deltaspike.core.api.util.ClassUtils; > - > -import javax.enterprise.inject.Typed; > -import java.util.HashSet; > -import java.util.List; > -import java.util.Set; > -import java.util.logging.Logger; > - > -/** > - * Helper methods for {@link ClassDeactivator} > - */ > -@Typed() > -public final class ClassDeactivation > -{ > - private static final Logger LOG = > Logger.getLogger(ClassDeactivation.class.getName()); > - > - private ClassDeactivation() > - { > - } > - > - /** > - * Evaluates if the given class is active > - * > - * @param targetClass current class > - * @return true if it is active, false otherwise > - */ > - public static boolean isClassActivated(Class targetClass) > - { > - ClassDeactivator classDeactivator = > ClassDeactivatorStorage.getClassDeactivator(); > - > - if (classDeactivator == null) > - { > - classDeactivator = resolveAndCacheClassDeactivator(); > - } > - > - boolean classDeactivated = > classDeactivator.getDeactivatedClasses().contains(targetClass); > - > - return !classDeactivated; > - } > - > - /** > - * Allows to provide a custom {@link ClassDeactivator} > - * > - * @param classDeactivator class-deactivator which should be used > - */ > - public static void setClassDeactivator(ClassDeactivator > classDeactivator) > - { > - ClassDeactivatorStorage.setClassDeactivator(classDeactivator); > - } > - > - private static ClassDeactivator resolveAndCacheClassDeactivator() > - { > - ClassDeactivator classDeactivator = > getConfiguredClassDeactivator(); > - > - // display deactivated classes here once > - // NOTE that isClassActivated() will be called many times for the > same class > - for (Class<?> deactivatedClass : > classDeactivator.getDeactivatedClasses()) > - { > - LOG.info("deactivate: " + deactivatedClass); > - } > - > - ClassDeactivatorStorage.setClassDeactivator(classDeactivator); > - return classDeactivator; > - } > - > - private static ClassDeactivator getConfiguredClassDeactivator() > - { > - List<String> classDeactivatorClassNames = > ConfigResolver.getAllPropertyValues(ClassDeactivator.class.getName()); > - Set<Class> deactivatedClasses = new HashSet<Class>(); > - > - ClassDeactivator currentClassDeactivator; > - for (String classDeactivatorClassName : > classDeactivatorClassNames) > - { > - LOG.info(classDeactivatorClassName + " gets processed"); > - > - currentClassDeactivator = > - > ClassUtils.tryToInstantiateClassForName(classDeactivatorClassName, > ClassDeactivator.class); > - > - if (currentClassDeactivator != null) > - { > - > deactivatedClasses.addAll(currentClassDeactivator.getDeactivatedClasses()); > - } > - else > - { > - LOG.warning(classDeactivatorClassName + " can't be > instantiated"); > - } > - } > - > - return new DefaultClassDeactivator(deactivatedClasses); > - } > -} > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivatorStorage.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivatorStorage.java > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivatorStorage.java > deleted file mode 100644 > index a7c2d02..0000000 > --- > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ClassDeactivatorStorage.java > +++ /dev/null > @@ -1,66 +0,0 @@ > -/* > - * Licensed to the Apache Software Foundation (ASF) under one > - * or more contributor license agreements. See the NOTICE file > - * distributed with this work for additional information > - * regarding copyright ownership. The ASF licenses this file > - * to you under the Apache License, Version 2.0 (the > - * "License"); you may not use this file except in compliance > - * with the License. You may obtain a copy of the License at > - * > - * http://www.apache.org/licenses/LICENSE-2.0 > - * > - * Unless required by applicable law or agreed to in writing, > - * software distributed under the License is distributed on an > - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > - * KIND, either express or implied. See the License for the > - * specific language governing permissions and limitations > - * under the License. > - */ > -package org.apache.deltaspike.core.impl.util; > - > -import org.apache.deltaspike.core.api.activation.ClassDeactivator; > -import org.apache.deltaspike.core.api.util.ClassUtils; > - > -import javax.enterprise.inject.Typed; > -import java.util.Map; > -import java.util.concurrent.ConcurrentHashMap; > - > -/** > - * Cache for {@link ClassDeactivator} implementations > - */ > -@Typed() > -class ClassDeactivatorStorage > -{ > - private static Map<ClassLoader, ClassDeactivator> classDeactivatorMap > - = new ConcurrentHashMap<ClassLoader, ClassDeactivator>(); > - > - private ClassDeactivatorStorage() > - { > - } > - > - static void setClassDeactivator(ClassDeactivator classDeactivator) > - { > - if (classDeactivator != null) > - { > - classDeactivatorMap.put(getClassLoader(), classDeactivator); > - } > - else > - { > - classDeactivatorMap.remove(getClassLoader()); > - } > - } > - > - static ClassDeactivator getClassDeactivator() > - { > - if (!classDeactivatorMap.containsKey(getClassLoader())) > - { > - return null; > - } > - return classDeactivatorMap.get(getClassLoader()); > - } > - > - private static ClassLoader getClassLoader() > - { > - return ClassUtils.getClassLoader(null); > - } > -} > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/DefaultClassDeactivator.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/DefaultClassDeactivator.java > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/DefaultClassDeactivator.java > deleted file mode 100644 > index b8c2831..0000000 > --- > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/DefaultClassDeactivator.java > +++ /dev/null > @@ -1,51 +0,0 @@ > -/* > - * Licensed to the Apache Software Foundation (ASF) under one > - * or more contributor license agreements. See the NOTICE file > - * distributed with this work for additional information > - * regarding copyright ownership. The ASF licenses this file > - * to you under the Apache License, Version 2.0 (the > - * "License"); you may not use this file except in compliance > - * with the License. You may obtain a copy of the License at > - * > - * http://www.apache.org/licenses/LICENSE-2.0 > - * > - * Unless required by applicable law or agreed to in writing, > - * software distributed under the License is distributed on an > - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > - * KIND, either express or implied. See the License for the > - * specific language governing permissions and limitations > - * under the License. > - */ > -package org.apache.deltaspike.core.impl.util; > - > -import org.apache.deltaspike.core.api.activation.ClassDeactivator; > - > -import java.util.Set; > - > -/** > - * Helper implementation which gets initialized with all configured > classes which have to be deactivated > - */ > -class DefaultClassDeactivator implements ClassDeactivator > -{ > - private static final long serialVersionUID = -1653478265237950470L; > - > - private Set<Class> deactivatedClasses; > - > - /** > - * Required constructor which receives all configured classes which > will be returned by #getDeactivatedClasses > - * @param deactivatedClasses classes which get returned by > #getDeactivatedClasses > - */ > - public DefaultClassDeactivator(Set<Class> deactivatedClasses) > - { > - this.deactivatedClasses = deactivatedClasses; > - } > - > - /** > - * {@inheritDoc} > - */ > - @Override > - public Set<Class> getDeactivatedClasses() > - { > - return this.deactivatedClasses; > - } > -} > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ActivatedClass.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ActivatedClass.java > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ActivatedClass.java > index 4eb5fe7..86fcb34 100644 > --- > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ActivatedClass.java > +++ > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ActivatedClass.java > @@ -18,9 +18,12 @@ > */ > package org.apache.deltaspike.test.core.impl.activation; > > +import org.apache.deltaspike.core.api.activation.Deactivatable; > + > /** > * Class which isn't deactivated > */ > -public class ActivatedClass > +public class ActivatedClass implements Deactivatable > { > + > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/DeactivatedClass.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/DeactivatedClass.java > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/DeactivatedClass.java > index a8f1a62..8cba1c0 100644 > --- > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/DeactivatedClass.java > +++ > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/DeactivatedClass.java > @@ -18,9 +18,11 @@ > */ > package org.apache.deltaspike.test.core.impl.activation; > > +import org.apache.deltaspike.core.api.activation.Deactivatable; > + > /** > * Class which is deactivated > */ > -public class DeactivatedClass > +public class DeactivatedClass implements Deactivatable > { > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivation.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivation.java > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivation.java > index f5af85d..bb4e7a1 100644 > --- > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivation.java > +++ > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivation.java > @@ -18,7 +18,7 @@ > */ > package org.apache.deltaspike.test.core.impl.activation; > > -import org.apache.deltaspike.core.impl.util.ClassDeactivation; > +import org.apache.deltaspike.core.api.activation.ClassDeactivation; > import org.apache.deltaspike.test.core.api.provider.TestBean; > import > org.apache.deltaspike.test.core.api.temptestutil.ShrinkWrapArchiveUtil; > import org.apache.deltaspike.test.util.FileUtils; > @@ -64,7 +64,7 @@ public class TestClassDeactivation > @Test > public void testActivatedClass() > { > - > Assert.assertTrue(ClassDeactivation.isClassActivated(ActivatedClass.class)); > + > Assert.assertTrue(ClassDeactivation.isActivated(ActivatedClass.class)); > } > > /** > @@ -73,6 +73,6 @@ public class TestClassDeactivation > @Test > public void testDeactivatedClass() > { > - > > Assert.assertFalse(ClassDeactivation.isClassActivated(DeactivatedClass.class)); > + > Assert.assertFalse(ClassDeactivation.isActivated(DeactivatedClass.class)); > } > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivator.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivator.java > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivator.java > index 2d7557f..e7ec158 100644 > --- > a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivator.java > +++ > b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/TestClassDeactivator.java > @@ -18,20 +18,23 @@ > */ > package org.apache.deltaspike.test.core.impl.activation; > > -import org.apache.deltaspike.core.api.activation.AbstractClassDeactivator; > + > +import org.apache.deltaspike.core.api.activation.ClassDeactivator; > +import org.apache.deltaspike.core.api.activation.Deactivatable; > > /** > * Test {@link org.apache.deltaspike.core.api.activation.ClassDeactivator} > - * which is needed to test {@link > org.apache.deltaspike.core.impl.util.ClassDeactivation} > + * which is needed to test {@link > org.apache.deltaspike.core.api.activation.ClassDeactivation} > */ > -public class TestClassDeactivator extends AbstractClassDeactivator > +public class TestClassDeactivator implements ClassDeactivator > { > - /** > - * {@inheritDoc} > - */ > @Override > - protected void deactivateClasses() > + public Boolean isActivated(Class<? extends Deactivatable> > deactivatableClazz) > { > - addDeactivatedClass(DeactivatedClass.class); > + if (deactivatableClazz.equals(DeactivatedClass.class)) > + { > + return Boolean.FALSE; > + } > + return null; > } > } > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/integration-test/src/test/java/org/apache/deltaspike/integration/core/api/exclude/ExcludeIntegrationTest.java > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/integration-test/src/test/java/org/apache/deltaspike/integration/core/api/exclude/ExcludeIntegrationTest.java > b/deltaspike/core/integration-test/src/test/java/org/apache/deltaspike/integration/core/api/exclude/ExcludeIntegrationTest.java > index c63a9ba..246c1a1 100644 > --- > a/deltaspike/core/integration-test/src/test/java/org/apache/deltaspike/integration/core/api/exclude/ExcludeIntegrationTest.java > +++ > b/deltaspike/core/integration-test/src/test/java/org/apache/deltaspike/integration/core/api/exclude/ExcludeIntegrationTest.java > @@ -68,7 +68,8 @@ public class ExcludeIntegrationTest > "META-INF/beans.xml", > new String[]{"org.apache.deltaspike.core", > "org.apache.deltaspike.integration", > - > "org.apache.deltaspike.test.core.api.exclude"}, > + > "org.apache.deltaspike.test.core.api.exclude", > + > "org.apache.deltaspike.test.core.impl.activation"}, > null)) > .addClass(IntegrationTestProjectStageProducer.class) > > .addAsResource(FileUtils.getFileForURL(deltaSpikeConfig.toString()), > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/e3f7e3e4/deltaspike/core/integration-test/src/test/resources/META-INF/apache-deltaspike.properties > ---------------------------------------------------------------------- > diff --git > a/deltaspike/core/integration-test/src/test/resources/META-INF/apache-deltaspike.properties > b/deltaspike/core/integration-test/src/test/resources/META-INF/apache-deltaspike.properties > index 8a7e771..043eaaa 100644 > --- > a/deltaspike/core/integration-test/src/test/resources/META-INF/apache-deltaspike.properties > +++ > b/deltaspike/core/integration-test/src/test/resources/META-INF/apache-deltaspike.properties > @@ -18,6 +18,5 @@ > deltaspike_ordinal=1001 > > > > org.apache.deltaspike.core.impl.projectstage.ProjectStageProducer=org.apache.deltaspike.integration.core.api.projectstage.IntegrationTestProjectStageProducer > > -org.apache.deltaspike.core.api.activation.ClassDeactivator=org.apache.deltaspike.integration.core.impl.activation.TestClassDeactivator > db=itDb > > >
