You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2011/03/21 13:10:26 UTC

svn commit: r1083750 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/ container/ intercept/webbeans/ portable/events/discovery/ xml/

Author: struberg
Date: Mon Mar 21 12:10:26 2011
New Revision: 1083750

URL: http://svn.apache.org/viewvc?rev=1083750&view=rev
Log:
OWB-393 finally dropped the rest of the old XML stuff. 

moved additionalInterceptorBindingTypes over to BeanManagerImpl.
Finally we should introduce an own holder for all those 
'additional' stuff which gets registered via Extensions at startup.

Removed:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java?rev=1083750&r1=1083749&r2=1083750&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java Mon Mar 21 12:10:26 2011
@@ -54,7 +54,6 @@ import org.apache.webbeans.spi.SecurityS
 import org.apache.webbeans.spi.plugins.OpenWebBeansPlugin;
 import org.apache.webbeans.util.ClassUtil;
 import org.apache.webbeans.util.WebBeansUtil;
-import org.apache.webbeans.xml.XMLAnnotationTypeManager;
 
 /**
  * @version $Rev$ $Date$
@@ -83,7 +82,6 @@ public class WebBeansContext
     private PluginLoader pluginLoader = new PluginLoader();
     private SerializableBeanVault serializableBeanVault = new SerializableBeanVault();
     private StereoTypeManager stereoTypeManager = new StereoTypeManager();
-    private XMLAnnotationTypeManager xmlAnnotationTypeManager = new XMLAnnotationTypeManager(this);
     private AnnotationManager annotationManager = new AnnotationManager(this);
     private ResolutionUtil resolutionUtil = new ResolutionUtil(this);
     private InjectionPointFactory injectionPointFactory = new InjectionPointFactory(this);
@@ -294,11 +292,6 @@ public class WebBeansContext
         return javassistProxyFactory;
     }
 
-    public XMLAnnotationTypeManager getXMLAnnotationTypeManager()
-    {
-        return xmlAnnotationTypeManager;
-    }
-
     //candidates for fields
     public ScannerService getScannerService()
     {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1083750&r1=1083749&r2=1083750&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Mon Mar 21 12:10:26 2011
@@ -110,7 +110,7 @@ import static org.apache.webbeans.util.I
 @SuppressWarnings("unchecked")
 public class BeanManagerImpl implements BeanManager, Referenceable
 {
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 2L;
 
     /**
      * Holds the non-standard contexts with key = scope type
@@ -159,6 +159,9 @@ public class BeanManagerImpl implements 
     /**Additional interceptor class*/
     private List<Class<?>> additionalInterceptorClasses = new ArrayList<Class<?>>();
 
+    /**Additional interceptor binding types we got via Extensions */
+    private Map<Class<? extends Annotation>, Set<Annotation>> additionalInterceptorBindingTypes = new HashMap<Class<? extends Annotation>, Set<Annotation>>();
+
     /**
      * This list contains additional qualifiers which got set via the {@link javax.enterprise.inject.spi.BeforeBeanDiscovery#addQualifier(Class)}
      * event function.
@@ -170,11 +173,12 @@ public class BeanManagerImpl implements 
      * {@link javax.enterprise.inject.spi.BeforeBeanDiscovery#addScope(Class, boolean, boolean)} event function.
      */
     private List<ExternalScope> additionalScopes =  new ArrayList<ExternalScope>();
-    
-    private ErrorStack errorStack = new ErrorStack();
-    
+
     private List<AnnotatedType<?>> additionalAnnotatedTypes = new ArrayList<AnnotatedType<?>>();
 
+
+    private ErrorStack errorStack = new ErrorStack();
+    
     /**
      * This map stores all beans along with their unique {@link javax.enterprise.inject.spi.PassivationCapable} id.
      * This is used as a reference for serialization.
@@ -430,6 +434,32 @@ public class BeanManagerImpl implements 
         return this.additionalDecoratorClasses.contains(clazz);
     }
 
+    public void addInterceptorBindingType(Class<? extends Annotation> bindingType, Annotation... inheritsArray)
+    {
+        Set<Annotation> inherits = additionalInterceptorBindingTypes.get(bindingType);
+        if (inherits == null)
+        {
+            inherits = new HashSet<Annotation>();
+            additionalInterceptorBindingTypes.put(bindingType, inherits);
+        }
+        for(Annotation ann : inheritsArray)
+        {
+            inherits.add(ann);
+        }
+
+    }
+
+    public boolean hasInterceptorBindingType(Class<? extends Annotation> bindingType)
+    {
+        return additionalInterceptorBindingTypes.keySet().contains(bindingType);
+    }
+
+
+    public Set<Annotation> getInterceptorBindingTypeMetaAnnotations(Class<? extends Annotation> interceptorBindingType)
+    {
+        return Collections.unmodifiableSet(additionalInterceptorBindingTypes.get(interceptorBindingType));
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -1196,6 +1226,7 @@ public class BeanManagerImpl implements 
         this.additionalAnnotatedTypes.clear();
         this.additionalDecoratorClasses.clear();
         this.additionalInterceptorClasses.clear();
+        this.additionalInterceptorBindingTypes.clear();
         this.additionalQualifiers.clear();
         this.additionalScopes.clear();
         this.cacheProxies.clear();

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java?rev=1083750&r1=1083749&r2=1083750&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java Mon Mar 21 12:10:26 2011
@@ -193,9 +193,9 @@ public class WebBeansInterceptor<T> exte
             Set<Annotation> declared = null;
             Annotation[] anns = null;
 
-            if (webBeansContext.getXMLAnnotationTypeManager().hasInterceptorBindingType(clazzAnnot))
+            if (webBeansContext.getBeanManagerImpl().hasInterceptorBindingType(clazzAnnot))
             {
-                declared = webBeansContext.getXMLAnnotationTypeManager().getInterceptorBindingTypeInherites(clazzAnnot);
+                declared = webBeansContext.getBeanManagerImpl().getInterceptorBindingTypeMetaAnnotations(clazzAnnot);
                 anns = new Annotation[declared.size()];
                 anns = declared.toArray(anns);
             }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java?rev=1083750&r1=1083749&r2=1083750&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java Mon Mar 21 12:10:26 2011
@@ -71,7 +71,7 @@ public class BeforeBeanDiscoveryImpl imp
     @Override
     public void addInterceptorBinding(Class<? extends Annotation> binding, Annotation... bindingDef)
     {
-        webBeansContext.getXMLAnnotationTypeManager().addInterceotorBindingTypeInheritAnnotation(binding, bindingDef);
+        webBeansContext.getBeanManagerImpl().addInterceptorBindingType(binding, bindingDef);
     }
 
     /**

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java?rev=1083750&r1=1083749&r2=1083750&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java Mon Mar 21 12:10:26 2011
@@ -22,11 +22,14 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import javax.interceptor.Interceptor;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.decorator.DecoratorsManager;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.exception.WebBeansException;
 import org.apache.webbeans.inject.AlternativesManager;
 import org.apache.webbeans.intercept.InterceptorsManager;
 import org.apache.webbeans.logger.WebBeansLogger;
@@ -145,7 +148,7 @@ public final class WebBeansXMLConfigurat
                 CURRENT_SCAN_FILE_NAME = fileName;
 
                 //Get root element of the XML document
-                Element webBeansRoot = XMLUtil.getSpecStrictRootElement(xmlStream);
+                Element webBeansRoot = getSpecStrictRootElement(xmlStream);
 
                 //Start configuration
                 configureSpecSpecific(webBeansRoot,fileName,scanner);
@@ -158,6 +161,44 @@ public final class WebBeansXMLConfigurat
     }
 
     /**
+     * Gets the root element of the parsed document.
+     *
+     * @param stream parsed document
+     * @return root element of the document
+     * @throws WebBeansException if any runtime exception occurs
+     */
+    private Element getSpecStrictRootElement(InputStream stream) throws WebBeansException
+    {
+        try
+        {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            factory.setCoalescing(false);
+            factory.setExpandEntityReferences(true);
+            factory.setIgnoringComments(true);
+            factory.setIgnoringElementContentWhitespace(true);
+            factory.setNamespaceAware(true);
+            factory.setValidating(false);
+            DocumentBuilder documentBuilder = factory.newDocumentBuilder();
+            documentBuilder.setErrorHandler(new WebBeansErrorHandler());
+            documentBuilder.setEntityResolver(new WebBeansResolver());
+
+            Element root = documentBuilder.parse(stream).getDocumentElement();
+            return root;
+        }
+        catch (Exception e)
+        {
+            logger.fatal(e, OWBLogConst.FATAL_0002);
+            throw new WebBeansException(logger.getTokenString(OWBLogConst.EXCEPT_0013), e);
+        }
+    }
+
+    private String getName(Element element)
+    {
+        Asserts.assertNotNull(element, "element argument can not be null");
+        return element.getLocalName();
+    }
+
+    /**
      * Configures the xml file root element.
      *
      * @param webBeansRoot root element of the configuration xml file
@@ -177,16 +218,16 @@ public final class WebBeansXMLConfigurat
             child = (Element) node;
 
             /* <Interceptors> element decleration */
-            if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT))
+            if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT))
             {
                 configureInterceptorsElement(child,fileName,scanner);
             }
             /* <Decorators> element decleration */
-            else if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_DECORATORS_ELEMENT))
+            else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_DECORATORS_ELEMENT))
             {
                 configureDecoratorsElement(child,fileName,scanner);
             }
-            else if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_ALTERNATIVES))
+            else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_ALTERNATIVES))
             {
                 configureAlternativesElement(child,fileName,scanner);
             }
@@ -311,13 +352,13 @@ public final class WebBeansXMLConfigurat
             }
             child = (Element) node;
 
-            if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE) ||
-                XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_OWB_SPECIFIC_STEREOTYPE))
+            if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE) ||
+                getName(child).equals(WebBeansConstants.WEB_BEANS_XML_OWB_SPECIFIC_STEREOTYPE))
             {
                 addAlternative(child, true,fileName,scanner);
             }
-            else if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS)
-                     || XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_OWB_SPECIFIC_CLASS))
+            else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS)
+                     || getName(child).equals(WebBeansConstants.WEB_BEANS_XML_OWB_SPECIFIC_CLASS))
             {
                 addAlternative(child, false,fileName,scanner);
             }
@@ -325,7 +366,7 @@ public final class WebBeansXMLConfigurat
             {
                 if (logger.wblWillLogWarn())
                 {
-                    logger.warn(OWBLogConst.WARN_0002, XMLUtil.getName(child));
+                    logger.warn(OWBLogConst.WARN_0002, getName(child));
                 }
             }
         }
@@ -339,7 +380,7 @@ public final class WebBeansXMLConfigurat
 
         if (clazz == null)
         {
-            throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Alternative class : " + XMLUtil.getName(child) + " not found");
+            throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Alternative class : " + getName(child) + " not found");
         }
         else
         {