yes - with "ongoing discussion" i talked about your initial mail (today).
we didn't agree on it.

regards,
gerhard



2012/1/22 Mark Struberg <[email protected]>

> sorry, didn't know you are still working on that stuff. It was marked as
> done and while reviewing I spotted a few areas where I thought we can do
> this even better.
>
> LieGrue,
> strub
>
>
>
> ----- Original Message -----
> > From: Gerhard Petracek <[email protected]>
> > To: [email protected]
> > Cc:
> > Sent: Sunday, January 22, 2012 3:23 PM
> > Subject: Re: git commit: DELTASPIKE-24 rework Deactivation logic
> >
> > 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
> >>
> >>
> >>
> >
>

Reply via email to