You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/09/26 10:52:46 UTC

svn commit: r1526419 - in /tomee/tomee/trunk/container: openejb-core/src/main/java/org/apache/openejb/config/ openejb-core/src/test/java/org/apache/openejb/cdi/ openejb-core/src/test/resources/ openejb-jee/src/main/java/org/apache/openejb/jee/

Author: rmannibucau
Date: Thu Sep 26 08:52:45 2013
New Revision: 1526419

URL: http://svn.apache.org/r1526419
Log:
TOMEE-1050 tolerate weld/candi config in beans.xml

Added:
    tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/cdi/BeansXmlNamespaceTest.java
    tomee/tomee/trunk/container/openejb-core/src/test/resources/beans-namespace.xml
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
    tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=1526419&r1=1526418&r2=1526419&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java Thu Sep 26 08:52:45 2013
@@ -633,6 +633,7 @@ public class ReadDescriptors implements 
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the beans.xml");// file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
+            e.printStackTrace();
             throw new OpenEJBException("Cannot unmarshall the beans.xml");// file: " + url.toExternalForm(), e);
         } catch (IOException e) {
             throw new OpenEJBException("Cannot read the beans.xml");// file: " + url.toExternalForm(), e);

Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/cdi/BeansXmlNamespaceTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/cdi/BeansXmlNamespaceTest.java?rev=1526419&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/cdi/BeansXmlNamespaceTest.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/cdi/BeansXmlNamespaceTest.java Thu Sep 26 08:52:45 2013
@@ -0,0 +1,35 @@
+/**
+ * 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.openejb.cdi;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.jee.Beans;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class BeansXmlNamespaceTest {
+    @Test
+    public void read() throws OpenEJBException {
+        final Beans beans = ReadDescriptors.readBeans(getClass().getResourceAsStream("/beans-namespace.xml"));
+        assertEquals(1, beans.getInterceptors().size());
+        assertEquals("foo", beans.getInterceptors().iterator().next());
+        assertEquals(1, beans.getDecorators().size());
+        assertEquals("bar", beans.getDecorators().iterator().next());
+    }
+}

Added: tomee/tomee/trunk/container/openejb-core/src/test/resources/beans-namespace.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/resources/beans-namespace.xml?rev=1526419&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/resources/beans-namespace.xml (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/resources/beans-namespace.xml Thu Sep 26 08:52:45 2013
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:weld="http://jboss.org/schema/weld/beans"
+       xsi:schemaLocation="
+          http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
+          http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
+  <interceptors>
+    <class>foo</class>
+  </interceptors>
+  <weld:scan>
+    <weld:exclude name="com.acme.swing.**"/>
+    <weld:exclude name="com.acme.gwt.**">
+      <weld:if-class-available name="!com.google.GWT"/>
+    </weld:exclude>
+    <weld:exclude pattern="^(.*)Blether$">
+      <weld:if-system-property name="verbosity" value="low"/>
+    </weld:exclude>
+    <weld:exclude name="com.acme.jsf.**">
+      <weld:if-class-available name="org.pahce.wicket.Wicket"/>
+      <weld:if-system-property name="!viewlayer"/>
+    </weld:exclude>
+  </weld:scan>
+  <decorators>
+    <class>bar</class>
+  </decorators>
+</beans>

Modified: tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java?rev=1526419&r1=1526418&r2=1526419&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java (original)
+++ tomee/tomee/trunk/container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java Thu Sep 26 08:52:45 2013
@@ -266,6 +266,8 @@ public class JaxbJavaee {
     public static class JavaeeNamespaceFilter extends XMLFilterImpl {
         private static final InputSource EMPTY_INPUT_SOURCE = new InputSource(new ByteArrayInputStream(new byte[0]));
 
+        private boolean ignore = false;
+
         public JavaeeNamespaceFilter(XMLReader xmlReader) {
             super(xmlReader);
         }
@@ -281,12 +283,38 @@ public class JaxbJavaee {
 
         @Override
         public void startElement(String uri, String localName, String qname, Attributes atts) throws SAXException {
-            super.startElement("http://java.sun.com/xml/ns/javaee", localName, qname, atts);
+            if (ignore) {
+                return;
+            }
+
+            if (uri != null && (uri.startsWith("http://jboss.org") || uri.startsWith("urn:java:"))) { // ignore it to be able to read beans.xml with weld config for instances
+                ignore = true;
+            } else {
+                super.startElement("http://java.sun.com/xml/ns/javaee", localName, qname, atts);
+            }
+        }
+
+        @Override
+        public void characters(final char ch[], final int start, final int length) throws SAXException {
+            if (!ignore) {
+                super.characters(ch, start, length);
+            }
+        }
+
+        @Override
+        public void ignorableWhitespace(final char ch[], final int start, final int length) throws SAXException {
+            if (!ignore) {
+                super.ignorableWhitespace(ch, start, length);
+            }
         }
 
         @Override
         public void endElement(String uri, String localName, String qName) throws SAXException {
-            super.endElement("http://java.sun.com/xml/ns/javaee", localName, qName);
+            if (uri != null && (uri.startsWith("http://jboss.org") || uri.startsWith("urn:java:"))) { // ignore it
+                ignore = false;
+            } else if (!ignore) {
+                super.endElement("http://java.sun.com/xml/ns/javaee", localName, qName);
+            }
         }
     }