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/08/12 21:21:18 UTC
svn commit: r1157221 -
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
Author: struberg
Date: Fri Aug 12 19:21:18 2011
New Revision: 1157221
URL: http://svn.apache.org/viewvc?rev=1157221&view=rev
Log:
OWB-603 allow to define the same Interceptor in multiple beans.xml files
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
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=1157221&r1=1157220&r2=1157221&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 Fri Aug 12 19:21:18 2011
@@ -21,6 +21,7 @@ package org.apache.webbeans.xml;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
+import java.util.HashSet;
import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedType;
@@ -245,12 +246,18 @@ public final class WebBeansXMLConfigurat
*
* @param interceptorsElement interceptors element
*/
- private void configureInterceptorsElement(Element interceptorsElement, String fileName,ScannerService scanner)
+ private void configureInterceptorsElement(Element interceptorsElement, String fileName, ScannerService scanner)
{
WebBeansContext webBeansContext = WebBeansContext.getInstance();
InterceptorsManager manager = webBeansContext.getInterceptorsManager();
Node node;
Element child;
+
+ // the interceptors in this beans.xml
+ // this gets used to detect multiple definitions of the
+ // same interceptor in one beans.xml file.
+ Set<Class> interceptorsInFile = new HashSet<Class>();
+
NodeList ns = interceptorsElement.getChildNodes();
for (int i = 0; i < ns.getLength(); i++)
{
@@ -304,15 +311,25 @@ public final class WebBeansXMLConfigurat
+ " must have at least one @InterceptorBinding");
}
+ // check if the interceptor got defined twice in this beans.xml
+ if (interceptorsInFile.contains(clazz))
+ {
+ throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Interceptor class : "
+ + child.getTextContent().trim()
+ + " already defined in this beans.xml file!");
+ }
+ interceptorsInFile.add(clazz);
+
boolean isBDAScanningEnabled=(scanner!=null && scanner.isBDABeansXmlScanningEnabled());
if ((!isBDAScanningEnabled && manager.isInterceptorEnabled(clazz)) ||
(isBDAScanningEnabled && !scanner.getBDABeansXmlScanner().addInterceptor(clazz, fileName)))
{
- throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Interceptor class : " +
- child.getTextContent().trim() + " is already defined");
+ logger.warn( "Interceptor class : " + child.getTextContent().trim() + " is already defined");
+ }
+ else
+ {
+ manager.addNewInterceptor(clazz);
}
-
- manager.addNewInterceptor(clazz);
}
}