deltaspike-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Struberg <strub...@yahoo.de>
Subject Re: git commit: DELTASPIKE-24 rework Deactivation logic
Date Sun, 22 Jan 2012 17:18:24 GMT
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 <gerhard.petracek@gmail.com>
> To: deltaspike-dev@incubator.apache.org
> 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 <struberg@apache.org>
> 
>>  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 <struberg@apache.org>
>>  Authored: Sun Jan 22 14:21:52 2012 +0100
>>  Committer: Mark Struberg <struberg@apache.org>
>>  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
>> 
>> 
>> 
> 

Mime
View raw message