deltaspike-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerhard Petracek <gerhard.petra...@gmail.com>
Subject Re: git commit: DELTASPIKE-24 rework Deactivation logic
Date Sun, 22 Jan 2012 14:23:25 GMT
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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message