You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2012/04/14 00:24:53 UTC

[2/2] DELTASPIKE-163 cleanup

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java
new file mode 100644
index 0000000..b132c22
--- /dev/null
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java
@@ -0,0 +1,521 @@
+/*
+ * 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.exclude.extension;
+
+import org.apache.deltaspike.core.api.config.ConfigResolver;
+import org.apache.deltaspike.core.api.exclude.annotation.Exclude;
+import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
+import org.apache.deltaspike.core.impl.exclude.GlobalAlternative;
+import org.apache.deltaspike.core.spi.activation.Deactivatable;
+import org.apache.deltaspike.core.api.interpreter.ExpressionInterpreter;
+import org.apache.deltaspike.core.api.projectstage.ProjectStage;
+import org.apache.deltaspike.core.impl.interpreter.PropertyExpressionInterpreter;
+import org.apache.deltaspike.core.util.ClassDeactivationUtils;
+import org.apache.deltaspike.core.util.ClassUtils;
+import org.apache.deltaspike.core.util.ProjectStageProducer;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Alternative;
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.enterprise.util.Nonbinding;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * <p>This class implements the logic for handling
+ * {@link org.apache.deltaspike.core.api.exclude.annotation.Exclude} annotations.</p>
+ * <p/>
+ * <p>Further details see {@link org.apache.deltaspike.core.api.exclude.annotation.Exclude}</p>
+ */
+public class ExcludeExtension implements Extension, Deactivatable
+{
+    private static final Logger LOG = Logger.getLogger(ExcludeExtension.class.getName());
+
+    private static Boolean isOwbDetected = null;
+
+    private Boolean isActivated = null;
+    private Boolean isGlobalAlternativeActivated = null;
+
+    /**
+     * triggers initialization in any case
+     * @param afterDeploymentValidation observed event
+     */
+    @SuppressWarnings("UnusedDeclaration")
+    protected void initProjectStage(@Observes AfterDeploymentValidation afterDeploymentValidation)
+    {
+        ProjectStageProducer.getInstance();
+    }
+
+    /**
+     * Observer which is vetoing beans based on {@link Exclude}
+     * @param processAnnotatedType observed event
+     */
+    @SuppressWarnings("UnusedDeclaration")
+    protected void vetoBeans(@Observes ProcessAnnotatedType<Object> processAnnotatedType, BeanManager beanManager)
+    {
+        initActivation();
+
+        //we need to do it before the exclude logic to keep the @Exclude support for global alternatives
+        if (this.isGlobalAlternativeActivated)
+        {
+            detectCdiImplementation();
+
+            if (isOwbDetected)
+            {
+                activateGlobalAlternativesOwb(processAnnotatedType, beanManager);
+            }
+            else
+            {
+                activateGlobalAlternativesWeld(processAnnotatedType, beanManager);
+            }
+        }
+
+        if (!this.isActivated)
+        {
+            return;
+        }
+
+        //TODO needs further discussions for a different feature CodiStartupBroadcaster.broadcastStartup();
+
+        //also forces deterministic project-stage initialization
+        ProjectStage projectStage = ProjectStageProducer.getInstance().getProjectStage();
+
+        if (!processAnnotatedType.getAnnotatedType().getJavaClass().isAnnotationPresent(Exclude.class))
+        {
+            return;
+        }
+
+        Exclude exclude = processAnnotatedType.getAnnotatedType().getJavaClass().getAnnotation(Exclude.class);
+
+        if (!evalExcludeWithoutCondition(processAnnotatedType, exclude))
+        {
+            return; //veto called already
+        }
+
+        if (!evalExcludeInProjectStage(processAnnotatedType, exclude, projectStage))
+        {
+            return; //veto called already
+        }
+
+        if (!evalExcludeNotInProjectStage(processAnnotatedType, exclude, projectStage))
+        {
+            return; //veto called already
+        }
+
+        evalExcludeWithExpression(processAnnotatedType, exclude);
+    }
+
+    private void activateGlobalAlternativesWeld(ProcessAnnotatedType<Object> processAnnotatedType,
+        BeanManager beanManager)
+    {
+        Class<Object> currentBean = processAnnotatedType.getAnnotatedType().getJavaClass();
+
+        if (currentBean.isInterface())
+        {
+            return;
+        }
+
+        Set<Class> beanBaseTypes = resolveBeanTypes(currentBean);
+
+        boolean isAlternativeBeanImplementation = currentBean.isAnnotationPresent(Alternative.class);
+
+        List<Annotation> qualifiersOfCurrentBean =
+                resolveQualifiers(processAnnotatedType.getAnnotatedType().getAnnotations(), beanManager);
+
+        String configuredBeanName;
+        List<Annotation> qualifiersOfConfiguredBean;
+        Class<Object> alternativeBeanClass;
+        Set<Annotation> alternativeBeanAnnotations;
+
+        for (Class currentType : beanBaseTypes)
+        {
+            alternativeBeanAnnotations = new HashSet<Annotation>();
+
+            configuredBeanName = ConfigResolver.getPropertyValue(currentType.getName());
+            if (configuredBeanName != null && configuredBeanName.length() > 0)
+            {
+                alternativeBeanClass = ClassUtils.tryToLoadClassForName(configuredBeanName);
+
+                if (alternativeBeanClass == null)
+                {
+                    throw new IllegalStateException("Can't find class " + configuredBeanName + " which is configured" +
+                            " for " + currentType.getName());
+                }
+
+                //check that the configured class is an alternative
+                if (!alternativeBeanClass.isAnnotationPresent(Alternative.class))
+                {
+                    //we have to continue because other classes can be configured as well
+                    continue;
+                }
+
+                alternativeBeanAnnotations.addAll(Arrays.asList(alternativeBeanClass.getAnnotations()));
+                qualifiersOfConfiguredBean = resolveQualifiers(alternativeBeanAnnotations, beanManager);
+            }
+            else
+            {
+                continue;
+            }
+
+            if (isAlternativeBeanImplementation) //current bean is annotated with @Alternative
+            {
+                if (doQualifiersMatch(qualifiersOfCurrentBean, qualifiersOfConfiguredBean))
+                {
+                    AnnotatedTypeBuilder<Object> annotatedTypeBuilder
+                        = new AnnotatedTypeBuilder<Object>().readFromType(processAnnotatedType.getAnnotatedType());
+
+                    annotatedTypeBuilder.removeFromClass(Alternative.class);
+                    processAnnotatedType.setAnnotatedType(annotatedTypeBuilder.create());
+                    return;
+                }
+            }
+            else //current bean is the original implementation
+            {
+                if (doQualifiersMatch(qualifiersOfCurrentBean, qualifiersOfConfiguredBean))
+                {
+                    //veto this original implementation because the alternative will be added
+                    processAnnotatedType.veto();
+                    return;
+                }
+            }
+        }
+    }
+
+    //see OWB-643
+    //just #veto the original implementation and remove @Alternative from the ProcessAnnotatedType of
+    // the configured alternative doesn't work with OWB (due to OWB-643)
+    private void activateGlobalAlternativesOwb(ProcessAnnotatedType<Object> processAnnotatedType,
+        BeanManager beanManager)
+    {
+        //the current bean is the bean with a potential global alternative
+        Class<Object> currentBean = processAnnotatedType.getAnnotatedType().getJavaClass();
+
+        if (currentBean.isInterface())
+        {
+            return;
+        }
+
+        Set<Class> beanBaseTypes = resolveBeanTypes(currentBean);
+
+        boolean isAlternativeBeanImplementation = currentBean.isAnnotationPresent(Alternative.class);
+
+        List<Annotation> qualifiersOfCurrentBean =
+            resolveQualifiers(processAnnotatedType.getAnnotatedType().getAnnotations(), beanManager);
+
+        String configuredBeanName;
+        List<Annotation> qualifiersOfConfiguredBean;
+        Class<Object> alternativeBeanClass;
+        Set<Annotation> alternativeBeanAnnotations;
+
+        for (Class currentType : beanBaseTypes)
+        {
+            alternativeBeanAnnotations = new HashSet<Annotation>();
+
+            configuredBeanName = ConfigResolver.getPropertyValue(currentType.getName());
+            if (configuredBeanName != null && configuredBeanName.length() > 0)
+            {
+                alternativeBeanClass = ClassUtils.tryToLoadClassForName(configuredBeanName);
+
+                if (alternativeBeanClass == null)
+                {
+                    throw new IllegalStateException("Can't find class " + configuredBeanName + " which is configured" +
+                            " for " + currentType.getName());
+                }
+                alternativeBeanAnnotations.addAll(Arrays.asList(alternativeBeanClass.getAnnotations()));
+                qualifiersOfConfiguredBean = resolveQualifiers(alternativeBeanAnnotations, beanManager);
+            }
+            else
+            {
+                continue;
+            }
+
+            if (isAlternativeBeanImplementation)
+            {
+                if (doQualifiersMatch(qualifiersOfCurrentBean, qualifiersOfConfiguredBean))
+                {
+                    //veto if the current annotated-type is a global alternative - it replaced the original type already
+                    processAnnotatedType.veto();
+                    break;
+                }
+            }
+            else
+            {
+                if (!alternativeBeanClass.isAnnotationPresent(Alternative.class))
+                {
+                    continue;
+                }
+
+                if (doQualifiersMatch(qualifiersOfCurrentBean, qualifiersOfConfiguredBean))
+                {
+                    AnnotatedTypeBuilder<Object> annotatedTypeBuilder
+                        = new AnnotatedTypeBuilder<Object>().readFromType(alternativeBeanClass);
+
+                    //just to avoid issues with switching between app-servers,...
+                    annotatedTypeBuilder.removeFromClass(Alternative.class);
+                    processAnnotatedType.setAnnotatedType(annotatedTypeBuilder.create());
+                }
+            }
+        }
+    }
+
+    private boolean doQualifiersMatch(List<Annotation> qualifiersOfCurrentBean,
+                                      List<Annotation> qualifiersOfConfiguredBean)
+    {
+        if (qualifiersOfCurrentBean.size() != qualifiersOfConfiguredBean.size())
+        {
+            return false;
+        }
+
+        int matchingQualifiers = 0;
+        for (Annotation currentQualifier : qualifiersOfCurrentBean)
+        {
+            for (Annotation qualifierConfiguredBean : qualifiersOfConfiguredBean)
+            {
+                if (doesQualifierMatch(currentQualifier, qualifierConfiguredBean))
+                {
+                    matchingQualifiers++;
+                    break;
+                }
+            }
+        }
+        return qualifiersOfConfiguredBean.size() == matchingQualifiers;
+    }
+
+    private boolean doesQualifierMatch(Annotation currentQualifier, Annotation qualifierConfiguredBean)
+    {
+        if (!currentQualifier.annotationType().equals(qualifierConfiguredBean.annotationType()))
+        {
+            return false;
+        }
+
+        Object currentValue;
+        Object valueOfQualifierConfiguredBean;
+        for (Method currentMethod : currentQualifier.annotationType().getDeclaredMethods())
+        {
+            if (currentMethod.isAnnotationPresent(Nonbinding.class))
+            {
+                continue;
+            }
+
+            try
+            {
+                currentMethod.setAccessible(true);
+                currentValue = currentMethod.invoke(currentQualifier);
+                valueOfQualifierConfiguredBean = currentMethod.invoke(qualifierConfiguredBean);
+
+                if (!currentValue.equals(valueOfQualifierConfiguredBean))
+                {
+                    return false;
+                }
+            }
+            catch (Exception e)
+            {
+                throw new IllegalStateException("Can't compare " + currentQualifier.annotationType().getName() +
+                    " with " + qualifierConfiguredBean.annotationType().getName());
+            }
+        }
+        return true;
+    }
+
+    private List<Annotation> resolveQualifiers(Set<Annotation> annotations, BeanManager beanManager)
+    {
+        List<Annotation> result = new ArrayList<Annotation>();
+
+        for (Annotation annotation : annotations)
+        {
+            if (beanManager.isQualifier(annotation.annotationType()))
+            {
+                result.add(annotation);
+            }
+        }
+        return result;
+    }
+
+    private Set<Class> resolveBeanTypes(Class beanClass)
+    {
+        Set<Class> result = new HashSet<Class>();
+
+        Class<?> currentClass = beanClass;
+        while (currentClass != null && !Object.class.getName().equals(currentClass.getName()))
+        {
+            result.add(currentClass);
+
+            for (Class interfaceClass : currentClass.getInterfaces())
+            {
+                if (interfaceClass.getName().startsWith("java.") || interfaceClass.getName().startsWith("javax."))
+                {
+                    continue;
+                }
+                result.addAll(resolveBeanTypes(interfaceClass));
+            }
+
+            currentClass = currentClass.getSuperclass();
+        }
+
+        return result;
+    }
+
+    private boolean evalExcludeWithoutCondition(ProcessAnnotatedType<Object> processAnnotatedType, Exclude exclude)
+    {
+        if (exclude.ifProjectStage().length == 0 && exclude.exceptIfProjectStage().length == 0 &&
+                "".equals(exclude.onExpression()))
+        {
+            veto(processAnnotatedType, "Stateless");
+            return false;
+        }
+        return true;
+    }
+
+    private boolean evalExcludeInProjectStage(ProcessAnnotatedType<Object> processAnnotatedType, Exclude exclude,
+        ProjectStage currentlyConfiguredProjectStage)
+    {
+        Class<? extends ProjectStage>[] activatedIn = exclude.ifProjectStage();
+
+        if (activatedIn.length == 0)
+        {
+            return true;
+        }
+
+        if (isInProjectStage(activatedIn, currentlyConfiguredProjectStage))
+        {
+            veto(processAnnotatedType, "IfProjectState");
+            return false;
+        }
+        return true;
+    }
+
+    private boolean evalExcludeNotInProjectStage(ProcessAnnotatedType<Object> processAnnotatedType, Exclude exclude,
+        ProjectStage currentlyConfiguredProjectStage)
+    {
+        Class<? extends ProjectStage>[] notIn = exclude.exceptIfProjectStage();
+
+        if (notIn.length == 0)
+        {
+            return true;
+        }
+
+        if (!isInProjectStage(notIn, currentlyConfiguredProjectStage))
+        {
+            veto(processAnnotatedType, "ExceptIfProjectState");
+            return false;
+        }
+        return true;
+    }
+
+    private void evalExcludeWithExpression(ProcessAnnotatedType<Object> processAnnotatedType, Exclude exclude)
+    {
+        if ("".equals(exclude.onExpression()))
+        {
+            return;
+        }
+
+        if (isDeactivated(exclude, PropertyExpressionInterpreter.class))
+        {
+            veto(processAnnotatedType, "Expression");
+        }
+    }
+
+    private boolean isInProjectStage(Class<? extends ProjectStage>[] activatedIn,
+        ProjectStage currentlyConfiguredProjectStage)
+    {
+        if (activatedIn != null && activatedIn.length > 0)
+        {
+            for (Class<? extends ProjectStage> activated : activatedIn)
+            {
+                if (currentlyConfiguredProjectStage.getClass().equals(activated))
+                {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    private boolean isDeactivated(Exclude exclude, Class defaultExpressionInterpreterClass)
+    {
+        String expressions = exclude.onExpression();
+
+        Class<? extends ExpressionInterpreter> interpreterClass = exclude.interpretedBy();
+
+        if (interpreterClass.equals(ExpressionInterpreter.class))
+        {
+            interpreterClass = defaultExpressionInterpreterClass;
+        }
+
+        ExpressionInterpreter<String, Boolean> expressionInterpreter =
+                ClassUtils.tryToInstantiateClass(interpreterClass);
+
+        if (expressionInterpreter == null)
+        {
+            if (LOG.isLoggable(Level.WARNING))
+            {
+                LOG.warning("can't instantiate " + interpreterClass.getClass().getName());
+            }
+            return true;
+        }
+
+        return expressionInterpreter.evaluate(expressions);
+    }
+
+    private void veto(ProcessAnnotatedType<?> processAnnotatedType, String vetoType)
+    {
+        processAnnotatedType.veto();
+        LOG.finer(vetoType + " based veto for bean with type: " +
+                processAnnotatedType.getAnnotatedType().getJavaClass());
+    }
+
+    public void initActivation()
+    {
+        if (isActivated == null)
+        {
+            isActivated = ClassDeactivationUtils.isActivated(getClass());
+            isGlobalAlternativeActivated = ClassDeactivationUtils.isActivated(GlobalAlternative.class);
+        }
+    }
+
+    private void detectCdiImplementation()
+    {
+        if (isOwbDetected == null)
+        {
+            isOwbDetected = false;
+
+            IllegalStateException runtimeException = new IllegalStateException();
+
+            for (StackTraceElement element : runtimeException.getStackTrace())
+            {
+                if (element.toString().contains("org.apache.webbeans."))
+                {
+                    isOwbDetected = true;
+                    break;
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleExtension.java
index d8fcfb8..0c6badd 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleExtension.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleExtension.java
@@ -41,6 +41,7 @@ import org.apache.deltaspike.core.api.message.annotation.MessageTemplate;
 import org.apache.deltaspike.core.spi.activation.Deactivatable;
 import org.apache.deltaspike.core.util.ClassDeactivationUtils;
 
+//TODO move to extension package
 public class MessageBundleExtension implements Extension, Deactivatable
 {
     private final Collection<AnnotatedType<?>> messageBundleTypes = new HashSet<AnnotatedType<?>>();

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension b/deltaspike/core/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
index a095cac..9662070 100644
--- a/deltaspike/core/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
+++ b/deltaspike/core/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
@@ -17,7 +17,7 @@
 # under the License.
 #####################################################################################
 
-org.apache.deltaspike.core.impl.exclude.ExcludeExtension
-org.apache.deltaspike.core.impl.config.injectable.ConfigPropertyExtension
+org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension
+org.apache.deltaspike.core.impl.config.injectable.extension.ConfigPropertyExtension
 org.apache.deltaspike.core.impl.message.MessageBundleExtension
 org.apache.deltaspike.core.impl.exception.control.extension.ExceptionControlExtension

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeTest.java
index 79008ae..1895264 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeTest.java
@@ -21,7 +21,7 @@ package org.apache.deltaspike.test.core.api.exclude;
 
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.impl.exclude.ExcludeExtension;
+import org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension;
 import org.apache.deltaspike.core.util.ProjectStageProducer;
 import org.apache.deltaspike.test.util.ArchiveUtils;
 import org.apache.deltaspike.test.util.FileUtils;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/event/EventTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/event/EventTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/event/EventTest.java
index 670c071..322177b 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/event/EventTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/event/EventTest.java
@@ -19,11 +19,11 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.event;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionToCatchEvent;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.spi.exception.control.IntrospectiveExceptionEvent;
 import org.apache.deltaspike.test.core.impl.exception.control.event.literal.EventQualifierLiteral;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingBreadthFirstHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingBreadthFirstHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingBreadthFirstHandler.java
index 71275af..60bfc72 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingBreadthFirstHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingBreadthFirstHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingDepthHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingDepthHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingDepthHandler.java
index 90fe89b..da510ef 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingDepthHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/AbortingDepthHandler.java
@@ -19,9 +19,9 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ExceptionHandledHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ExceptionHandledHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ExceptionHandledHandler.java
index 4bf6480..bc6fc8e 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ExceptionHandledHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ExceptionHandledHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ProceedCauseHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ProceedCauseHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ProceedCauseHandler.java
index 12dbb4c..5e71693 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ProceedCauseHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ProceedCauseHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/RethrowHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/RethrowHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/RethrowHandler.java
index b6045d8..6278000 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/RethrowHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/RethrowHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 @ExceptionHandler
 public class RethrowHandler

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ThrowingNewHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ThrowingNewHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ThrowingNewHandler.java
index 7856b43..d133955 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ThrowingNewHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/flow/ThrowingNewHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.flow;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 @ExceptionHandler
 public class ThrowingNewHandler

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/BadInjectionPointHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/BadInjectionPointHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/BadInjectionPointHandler.java
index 2a19fac..1c162bc 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/BadInjectionPointHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/BadInjectionPointHandler.java
@@ -19,9 +19,9 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.handler;
 
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 /**
  * This handler is not valid as the injection point firstParam is not valid.

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/CalledExceptionHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/CalledExceptionHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/CalledExceptionHandler.java
index 36c1762..81bc2eb 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/CalledExceptionHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/CalledExceptionHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.handler;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.spi.BeanManager;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/ExtensionExceptionHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/ExtensionExceptionHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/ExtensionExceptionHandler.java
index 1b77174..8387a5a 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/ExtensionExceptionHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/ExtensionExceptionHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.handler;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 import org.apache.deltaspike.test.core.impl.exception.control.extension.Account;
 import org.apache.deltaspike.test.core.impl.exception.control.extension.Arquillian;
 import org.apache.deltaspike.test.core.impl.exception.control.extension.CatchQualifier;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/HandlerWhichThrowsExceptions.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/HandlerWhichThrowsExceptions.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/HandlerWhichThrowsExceptions.java
index e4d0d0a..4f43712 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/HandlerWhichThrowsExceptions.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/HandlerWhichThrowsExceptions.java
@@ -19,9 +19,9 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.handler;
 
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 /**
  * ExceptionHandler which is not valid.

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/UnMuteHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/UnMuteHandler.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/UnMuteHandler.java
index ca0da0a..61f0c8f 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/UnMuteHandler.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/handler/UnMuteHandler.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.handler;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import javax.enterprise.context.ApplicationScoped;
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/traversal/ExceptionHandlerMethods.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/traversal/ExceptionHandlerMethods.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/traversal/ExceptionHandlerMethods.java
index 85b73ab..f9183eb 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/traversal/ExceptionHandlerMethods.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/exception/control/traversal/ExceptionHandlerMethods.java
@@ -19,10 +19,10 @@
 
 package org.apache.deltaspike.test.core.impl.exception.control.traversal;
 
-import org.apache.deltaspike.core.api.exception.control.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.BeforeHandles;
+import org.apache.deltaspike.core.api.exception.control.annotation.ExceptionHandler;
+import org.apache.deltaspike.core.api.exception.control.annotation.Handles;
 import org.apache.deltaspike.core.api.exception.control.event.ExceptionEvent;
-import org.apache.deltaspike.core.api.exception.control.ExceptionHandler;
-import org.apache.deltaspike.core.api.exception.control.Handles;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/core/integration-test/src/test/resources/META-INF/services/test.javax.enterprise.inject.spi.Extension
----------------------------------------------------------------------
diff --git a/deltaspike/core/integration-test/src/test/resources/META-INF/services/test.javax.enterprise.inject.spi.Extension b/deltaspike/core/integration-test/src/test/resources/META-INF/services/test.javax.enterprise.inject.spi.Extension
index fdce9cd..a3620fb 100644
--- a/deltaspike/core/integration-test/src/test/resources/META-INF/services/test.javax.enterprise.inject.spi.Extension
+++ b/deltaspike/core/integration-test/src/test/resources/META-INF/services/test.javax.enterprise.inject.spi.Extension
@@ -18,5 +18,5 @@
 #####################################################################################
 
 org.apache.deltaspike.core.api.provider.BeanManagerProvider
-org.apache.deltaspike.core.impl.exclude.ExcludeExtension
-org.apache.deltaspike.core.impl.config.injectable.ConfigPropertyExtension
\ No newline at end of file
+org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension
+org.apache.deltaspike.core.impl.config.injectable.extension.ConfigPropertyExtension
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/UnexpectedCredentialException.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/UnexpectedCredentialException.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/UnexpectedCredentialException.java
index 7b51672..7ab7a98 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/UnexpectedCredentialException.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/UnexpectedCredentialException.java
@@ -27,6 +27,7 @@ public class UnexpectedCredentialException extends AuthenticationException
         super(message);
     }
 
+    @SuppressWarnings("UnusedDeclaration")
     public UnexpectedCredentialException(String message, Throwable cause)
     {
         super(message, cause);

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/AlreadyLoggedInEvent.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/AlreadyLoggedInEvent.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/AlreadyLoggedInEvent.java
index ef0ea45..e2d962f 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/AlreadyLoggedInEvent.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/AlreadyLoggedInEvent.java
@@ -24,5 +24,4 @@ package org.apache.deltaspike.security.api.authentication.event;
  */
 public class AlreadyLoggedInEvent 
 {
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PostAuthenticateEvent.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PostAuthenticateEvent.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PostAuthenticateEvent.java
index 3a5b745..90afebf 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PostAuthenticateEvent.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PostAuthenticateEvent.java
@@ -24,5 +24,4 @@ package org.apache.deltaspike.security.api.authentication.event;
  */
 public class PostAuthenticateEvent 
 {
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PreAuthenticateEvent.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PreAuthenticateEvent.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PreAuthenticateEvent.java
index 441ea34..ae548f1 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PreAuthenticateEvent.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authentication/event/PreAuthenticateEvent.java
@@ -23,5 +23,4 @@ package org.apache.deltaspike.security.api.authentication.event;
  */
 public class PreAuthenticateEvent 
 {
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/SecurityDefinitionException.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/SecurityDefinitionException.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/SecurityDefinitionException.java
index 5144aea..de0114c 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/SecurityDefinitionException.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/SecurityDefinitionException.java
@@ -32,7 +32,8 @@ public class SecurityDefinitionException extends org.apache.deltaspike.security.
         super(message);
     }
 
-    public SecurityDefinitionException(Throwable cause) 
+    @SuppressWarnings("UnusedDeclaration")
+    public SecurityDefinitionException(Throwable cause)
     {
         super(cause);
     }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/SecurityParameterBinding.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/SecurityParameterBinding.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/SecurityParameterBinding.java
index 46f5b2a..934492c 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/SecurityParameterBinding.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/SecurityParameterBinding.java
@@ -26,8 +26,8 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * Applied to an {@link Annotation} to declare it as a security parameter binding; to use business method invocation
- * values as {@link Secures} method arguments.
+ * Applied to an {@link java.lang.annotation.Annotation} to declare it as a security parameter binding; to use business
+ * method invocation values as {@link Secures} method arguments.
  */
 @Documented
 @Target({ ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/authorization/SecurityExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/authorization/SecurityExtension.java b/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/authorization/SecurityExtension.java
index 8e30a19..1a389ed 100644
--- a/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/authorization/SecurityExtension.java
+++ b/deltaspike/modules/security/impl/src/main/java/org/apache/deltaspike/security/impl/authorization/SecurityExtension.java
@@ -45,6 +45,7 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  * Extension for processing typesafe security annotations
  */
+//TODO move to extension package
 public class SecurityExtension implements Extension, Deactivatable
 {
     private static final SecurityInterceptorBinding INTERCEPTOR_BINDING = new SecurityInterceptorBindingLiteral();

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authentication/LoginLogoutTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authentication/LoginLogoutTest.java b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authentication/LoginLogoutTest.java
index 2dbc420..c8174ee 100644
--- a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authentication/LoginLogoutTest.java
+++ b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authentication/LoginLogoutTest.java
@@ -20,7 +20,7 @@ package org.apache.deltaspike.test.security.impl.authentication;
 
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.impl.exclude.ExcludeExtension;
+import org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension;
 import org.apache.deltaspike.security.api.Identity;
 import org.apache.deltaspike.security.api.authentication.UnexpectedCredentialException;
 import org.apache.deltaspike.security.api.credential.LoginCredential;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationTest.java b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationTest.java
index 26ed4ee..bb56e29 100644
--- a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationTest.java
+++ b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationTest.java
@@ -20,7 +20,7 @@ package org.apache.deltaspike.test.security.impl.authorization.secured;
 
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.impl.exclude.ExcludeExtension;
+import org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension;
 import org.apache.deltaspike.security.api.authorization.AccessDeniedException;
 import org.apache.deltaspike.test.util.ArchiveUtils;
 import org.jboss.arquillian.container.test.api.Deployment;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securitybinding/SecurityBindingTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securitybinding/SecurityBindingTest.java b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securitybinding/SecurityBindingTest.java
index c25ffd5..608ebcd 100644
--- a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securitybinding/SecurityBindingTest.java
+++ b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securitybinding/SecurityBindingTest.java
@@ -20,7 +20,7 @@ package org.apache.deltaspike.test.security.impl.authorization.securitybinding;
 
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.impl.exclude.ExcludeExtension;
+import org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension;
 import org.apache.deltaspike.security.api.authorization.AccessDeniedException;
 import org.apache.deltaspike.test.util.ArchiveUtils;
 import org.jboss.arquillian.container.test.api.Deployment;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1ced97b6/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securityparameterbinding/SecurityParameterBindingTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securityparameterbinding/SecurityParameterBindingTest.java b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securityparameterbinding/SecurityParameterBindingTest.java
index e0276a7..38eafee 100644
--- a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securityparameterbinding/SecurityParameterBindingTest.java
+++ b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/securityparameterbinding/SecurityParameterBindingTest.java
@@ -20,7 +20,7 @@ package org.apache.deltaspike.test.security.impl.authorization.securityparameter
 
 import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.impl.exclude.ExcludeExtension;
+import org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension;
 import org.apache.deltaspike.security.api.authorization.AccessDeniedException;
 import org.apache.deltaspike.test.util.ArchiveUtils;
 import org.jboss.arquillian.container.test.api.Deployment;