Repository: tomee
Updated Branches:
  refs/heads/master a329a6e83 -> 1bf768b76


http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/JMSConnectionFactory$JAXB.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/JMSConnectionFactory$JAXB.java
 
b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/JMSConnectionFactory$JAXB.java
new file mode 100644
index 0000000..36ae4ba
--- /dev/null
+++ 
b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/JMSConnectionFactory$JAXB.java
@@ -0,0 +1,244 @@
+/*
+ * 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.jee;
+
+import org.metatype.sxc.jaxb.JAXBObject;
+import org.metatype.sxc.jaxb.LifecycleCallback;
+import org.metatype.sxc.jaxb.RuntimeContext;
+import org.metatype.sxc.util.Attribute;
+import org.metatype.sxc.util.XoXMLStreamReader;
+import org.metatype.sxc.util.XoXMLStreamWriter;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.apache.openejb.jee.Property$JAXB.readProperty;
+import static org.apache.openejb.jee.Text$JAXB.readText;
+
+@SuppressWarnings({
+    "StringEquality"
+})
+public class JMSConnectionFactory$JAXB
+    extends JAXBObject<JMSConnectionFactory> {
+
+
+    public JMSConnectionFactory$JAXB() {
+        super(JMSConnectionFactory.class, null, new 
QName("http://java.sun.com/xml/ns/javaee".intern(), 
"jms-connection-factoryType".intern()), Text$JAXB.class, Property$JAXB.class);
+    }
+
+    public static JMSConnectionFactory readJMSConnectionFactory(final 
XoXMLStreamReader reader, final RuntimeContext context)
+        throws Exception {
+        return _read(reader, context);
+    }
+
+    public void write(final XoXMLStreamWriter writer, final 
JMSConnectionFactory JMSConnectionFactory, final RuntimeContext context)
+        throws Exception {
+        _write(writer, JMSConnectionFactory, context);
+    }
+
+    public final static JMSConnectionFactory _read(final XoXMLStreamReader 
reader, RuntimeContext context)
+        throws Exception {
+
+        // Check for xsi:nil
+        if (reader.isXsiNil()) {
+            return null;
+        }
+
+        if (context == null) {
+            context = new RuntimeContext();
+        }
+
+        final JMSConnectionFactory JMSConnectionFactory = new 
JMSConnectionFactory();
+        context.beforeUnmarshal(JMSConnectionFactory, LifecycleCallback.NONE);
+
+        ArrayList<Text> descriptions = null;
+        List<Property> property = null;
+
+        // Check xsi:type
+        final QName xsiType = reader.getXsiType();
+        if (xsiType != null) {
+            if (("jms-connection-factoryType" != xsiType.getLocalPart()) || 
("http://java.sun.com/xml/ns/javaee"; != xsiType.getNamespaceURI())) {
+                return context.unexpectedXsiType(reader, 
JMSConnectionFactory.class);
+            }
+        }
+
+        // Read attributes
+        for (final Attribute attribute : reader.getAttributes()) {
+            if (("id" == attribute.getLocalName()) && (("" == 
attribute.getNamespace()) || (attribute.getNamespace() == null))) {
+                // ATTRIBUTE: id
+                final String id = 
Adapters.collapsedStringAdapterAdapter.unmarshal(attribute.getValue());
+                context.addXmlId(reader, id, JMSConnectionFactory);
+                JMSConnectionFactory.id = id;
+            } else if (XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI != 
attribute.getNamespace()) {
+                context.unexpectedAttribute(attribute, new QName("", "id"));
+            }
+        }
+
+        // Read elements
+        for (final XoXMLStreamReader elementReader : 
reader.getChildElements()) {
+            if (("description" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: descriptions
+                final Text descriptionsItem = readText(elementReader, context);
+                if (descriptions == null) {
+                    descriptions = new ArrayList<Text>();
+                }
+                descriptions.add(descriptionsItem);
+            } else if (("name" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.name = name;
+            } else if (("class-name" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.className = name;
+            } else if (("interface-name" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.className = name;
+            } else if (("resource-adapter" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.resourceAdapter = name;
+            } else if (("user" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.user = name;
+            } else if (("password" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.password = name;
+            } else if (("client-id" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: name
+                final String nameRaw = elementReader.getElementAsString();
+
+                final String name;
+                try {
+                    name = 
Adapters.collapsedStringAdapterAdapter.unmarshal(nameRaw);
+                } catch (final Exception e) {
+                    context.xmlAdapterError(elementReader, 
CollapsedStringAdapter.class, String.class, String.class, e);
+                    continue;
+                }
+
+                JMSConnectionFactory.clientId = name;
+            } else if (("max-pool-size" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                final Integer portNumber = 
Integer.valueOf(elementReader.getElementAsString());
+                JMSConnectionFactory.maxPoolSize = portNumber;
+            } else if (("min-pool-size" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                final Integer portNumber = 
Integer.valueOf(elementReader.getElementAsString());
+                JMSConnectionFactory.minPoolSize = portNumber;
+            } else if (("transactional" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                JMSConnectionFactory.transactional = 
Boolean.parseBoolean(elementReader.getElementAsString());
+            } else if (("property" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
+                // ELEMENT: property
+                final Property propertyItem = readProperty(elementReader, 
context);
+                if (property == null) {
+                    property = JMSConnectionFactory.property;
+                    if (property != null) {
+                        property.clear();
+                    } else {
+                        property = new ArrayList<>();
+                    }
+                }
+                property.add(propertyItem);
+            } else if (!Boolean.getBoolean("tomee.xml.passthrough")) { // so 
to pass if not important
+                context.unexpectedElement(elementReader, new 
QName("http://java.sun.com/xml/ns/javaee";, "description"), new 
QName("http://java.sun.com/xml/ns/javaee";, "name"), new 
QName("http://java.sun.com/xml/ns/javaee";, "class-name"), new 
QName("http://java.sun.com/xml/ns/javaee";, "server-name"), new 
QName("http://java.sun.com/xml/ns/javaee";, "port-number"), new 
QName("http://java.sun.com/xml/ns/javaee";, "database-name"), new 
QName("http://java.sun.com/xml/ns/javaee";, "url"), new 
QName("http://java.sun.com/xml/ns/javaee";, "user"), new 
QName("http://java.sun.com/xml/ns/javaee";, "password"), new 
QName("http://java.sun.com/xml/ns/javaee";, "property"), new 
QName("http://java.sun.com/xml/ns/javaee";, "login-timeout"), new 
QName("http://java.sun.com/xml/ns/javaee";, "transactional"), new 
QName("http://java.sun.com/xml/ns/javaee";, "isolation-level"), new 
QName("http://java.sun.com/xml/ns/javaee";, "initial-pool-size"), new 
QName("http://java.sun.com/xml/ns/javaee";, "max-pool-size"), new QN
 ame("http://java.sun.com/xml/ns/javaee";, "min-pool-size"), new 
QName("http://java.sun.com/xml/ns/javaee";, "max-idle-time"), new 
QName("http://java.sun.com/xml/ns/javaee";, "max-statements"));
+            }
+        }
+        if (descriptions != null) {
+            try {
+                JMSConnectionFactory.description.set(descriptions.toArray(new 
Text[descriptions.size()]));
+            } catch (final Exception e) {
+                context.setterError(reader, JMSConnectionFactory.class, 
"setDescriptions", Text[].class, e);
+            }
+        }
+        if (property != null) {
+            JMSConnectionFactory.property = property;
+        }
+
+        context.afterUnmarshal(JMSConnectionFactory, LifecycleCallback.NONE);
+
+        return JMSConnectionFactory;
+    }
+
+    public final JMSConnectionFactory read(final XoXMLStreamReader reader, 
final RuntimeContext context)
+        throws Exception {
+        return _read(reader, context);
+    }
+
+    public final static void _write(final XoXMLStreamWriter writer, final 
JMSConnectionFactory JMSConnectionFactory, RuntimeContext context)
+        throws Exception {
+        // no-op while not useful
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/WebApp$JAXB.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/WebApp$JAXB.java
 
b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/WebApp$JAXB.java
index bfe99b7..dc02d93 100644
--- 
a/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/WebApp$JAXB.java
+++ 
b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/WebApp$JAXB.java
@@ -48,6 +48,7 @@ import static 
org.apache.openejb.jee.FilterMapping$JAXB.readFilterMapping;
 import static org.apache.openejb.jee.FilterMapping$JAXB.writeFilterMapping;
 import static org.apache.openejb.jee.Icon$JAXB.readIcon;
 import static org.apache.openejb.jee.Icon$JAXB.writeIcon;
+import static 
org.apache.openejb.jee.JMSConnectionFactory$JAXB.readJMSConnectionFactory;
 import static org.apache.openejb.jee.JspConfig$JAXB.readJspConfig;
 import static org.apache.openejb.jee.JspConfig$JAXB.writeJspConfig;
 import static 
org.apache.openejb.jee.LifecycleCallback$JAXB.readLifecycleCallback;
@@ -166,6 +167,7 @@ public class WebApp$JAXB
         List<org.apache.openejb.jee.LifecycleCallback> preDestroy = null;
         List<MessageDestination> messageDestination = null;
         KeyedCollection<String, DataSource> dataSource = null;
+        KeyedCollection<String, JMSConnectionFactory> jmsConnectionFactories = 
null;
 
         // Check xsi:type
         final QName xsiType = reader.getXsiType();
@@ -582,6 +584,18 @@ public class WebApp$JAXB
                     }
                 }
                 dataSource.add(dataSourceItem);
+            } else if (("jms-connection-factory" == 
elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee"; == 
elementReader.getNamespaceURI())) {
+                // ELEMENT: dataSource
+                final JMSConnectionFactory connectionFactory = 
readJMSConnectionFactory(elementReader, context);
+                if (jmsConnectionFactories == null) {
+                    jmsConnectionFactories = webApp.jmsConnectionFactories;
+                    if (jmsConnectionFactories != null) {
+                        jmsConnectionFactories.clear();
+                    } else {
+                        jmsConnectionFactories = new KeyedCollection<>();
+                    }
+                }
+                jmsConnectionFactories.add(connectionFactory);
             } else if (("module-name" == elementReader.getLocalName()) && 
("http://java.sun.com/xml/ns/javaee"; == elementReader.getNamespaceURI())) {
                 // ELEMENT: moduleName
                 final String moduleNameRaw = 
elementReader.getElementAsString();

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
index 9361bac..1d7beaa 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
@@ -136,6 +136,8 @@ public class Application implements JndiConsumer, 
NamedModule {
     protected KeyedCollection<String, MessageDestination> messageDestination;
     @XmlElement(name = "data-source")
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlAttribute(required = true)
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     protected java.lang.String version;
@@ -415,4 +417,14 @@ public class Application implements JndiConsumer, 
NamedModule {
     public void setId(final java.lang.String value) {
         this.id = value;
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
index d1ddff3..59aba37 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
@@ -130,6 +130,8 @@ public class ApplicationClient implements JndiConsumer, 
Lifecycle, NamedModule {
     protected KeyedCollection<String, MessageDestination> messageDestination;
     @XmlElement(name = "data-source")
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
 
 
     @XmlAttribute
@@ -422,4 +424,14 @@ public class ApplicationClient implements JndiConsumer, 
Lifecycle, NamedModule {
     public void setMainClass(final String mainClass) {
         this.mainClass = mainClass;
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
index 7498ca7..cd10c1d 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/EntityBean.java
@@ -167,6 +167,8 @@ public class EntityBean implements RemoteBean {
     protected List<LifecycleCallback> preDestroy;
     @XmlElement(name = "data-source")
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "security-role-ref", required = true)
     protected List<SecurityRoleRef> securityRoleRef;
     @XmlElement(name = "security-identity")
@@ -600,4 +602,14 @@ public class EntityBean implements RemoteBean {
 
     public void setTransactionType(final TransactionType type) {
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
index 5ce1077..1acd12f 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/Interceptor.java
@@ -112,6 +112,8 @@ public class Interceptor implements JndiConsumer, Session {
     protected KeyedCollection<String, PersistenceUnitRef> persistenceUnitRef;
     @XmlElement(name = "data-source", required = true)
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "post-construct", required = true)
     protected List<LifecycleCallback> postConstruct;
     @XmlElement(name = "pre-destroy", required = true)
@@ -436,5 +438,13 @@ public class Interceptor implements JndiConsumer, Session {
         getAroundTimeout().add(new AroundTimeout(interceptorClass, method));
     }
 
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
 
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/JMSConnectionFactory.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/JMSConnectionFactory.java
 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/JMSConnectionFactory.java
new file mode 100644
index 0000000..754be0a
--- /dev/null
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/JMSConnectionFactory.java
@@ -0,0 +1,187 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.jee;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.ArrayList;
+import java.util.List;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "jms-connection-factoryType", propOrder = {
+    "name",
+    "className",
+    "interfaceName",
+    "resourceAdapter",
+    "user",
+    "password",
+    "clientId",
+    "transactional",
+    "maxPoolSize",
+    "minPoolSize",
+    "property"
+})
+public class JMSConnectionFactory implements Keyable<String> {
+    @XmlTransient
+    protected TextMap description = new TextMap();
+    @XmlElement(required = true)
+    protected String name;
+    @XmlElement(name = "max-pool-size")
+    protected Integer maxPoolSize;
+    @XmlElement(name = "min-pool-size")
+    protected Integer minPoolSize;
+    @XmlElement(name = "class-name")
+    protected String className;
+    @XmlElement(name = "interface-name")
+    protected String interfaceName;
+    @XmlElement(name = "resource-adapter")
+    protected String resourceAdapter;
+    @XmlElement(name = "user")
+    protected String user;
+    @XmlElement(name = "password")
+    protected String password;
+    @XmlElement(name = "clientId")
+    protected String clientId;
+    @XmlElement(name = "transactional")
+    protected boolean transactional;
+    protected List<Property> property;
+    @XmlAttribute
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    @XmlID
+    @XmlSchemaType(name = "ID")
+    protected String id;
+
+    @XmlElement(name = "description")
+    public Text[] getDescriptions() {
+        return description.toArray();
+    }
+
+    public JMSConnectionFactory property(final String name, final String 
value) {
+        getProperty().add(new Property(name, value));
+        return this;
+    }
+
+    public boolean isTransactional() {
+        return transactional;
+    }
+
+    public void setTransactional(boolean transactional) {
+        this.transactional = transactional;
+    }
+
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getResourceAdapter() {
+        return resourceAdapter;
+    }
+
+    public void setResourceAdapter(String resourceAdapter) {
+        this.resourceAdapter = resourceAdapter;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getInterfaceName() {
+        return interfaceName;
+    }
+
+    public void setInterfaceName(String interfaceName) {
+        this.interfaceName = interfaceName;
+    }
+
+    public List<Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<Property>();
+        }
+        return this.property;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getMaxPoolSize() {
+        return maxPoolSize;
+    }
+
+    public void setMaxPoolSize(Integer maxPoolSize) {
+        this.maxPoolSize = maxPoolSize;
+    }
+
+    public Integer getMinPoolSize() {
+        return minPoolSize;
+    }
+
+    public void setMinPoolSize(Integer minPoolSize) {
+        this.minPoolSize = minPoolSize;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(final String value) {
+        this.id = value;
+    }
+
+    @Override
+    public String getKey() {
+        final String name = getName();
+        if (name == null || name.startsWith("java:")) return name;
+        return "java:comp/env/" + name;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
index 4cd1ceb..2d8e68c 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/JndiConsumer.java
@@ -5,14 +5,14 @@
  * 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.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.jee;
 
@@ -70,4 +70,8 @@ public interface JndiConsumer {
     Collection<DataSource> getDataSource();
 
     Map<String, DataSource> getDataSourceMap();
+
+    Collection<JMSConnectionFactory> getJMSConnectionFactories();
+
+    Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap();
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
index 1d66a4f..936032f 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/MessageDrivenBean.java
@@ -155,6 +155,8 @@ public class MessageDrivenBean implements EnterpriseBean, 
TimerConsumer, Invokab
     protected KeyedCollection<String, PersistenceUnitRef> persistenceUnitRef;
     @XmlElement(name = "data-source", required = true)
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "post-construct", required = true)
     protected List<LifecycleCallback> postConstruct;
     @XmlElement(name = "pre-destroy", required = true)
@@ -560,6 +562,16 @@ public class MessageDrivenBean implements EnterpriseBean, 
TimerConsumer, Invokab
         return this.dataSource.toMap();
     }
 
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
+
 
     public List<LifecycleCallback> getPostConstruct() {
         if (postConstruct == null) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
index 4cab0ef..4f2611a 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionBean.java
@@ -233,6 +233,8 @@ public class SessionBean implements RemoteBean, Session, 
TimerConsumer {
     protected List<LifecycleCallback> preDestroy;
     @XmlElement(name = "data-source")
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "post-activate", required = true)
     protected List<LifecycleCallback> postActivate;
     @XmlElement(name = "pre-passivate", required = true)
@@ -927,4 +929,14 @@ public class SessionBean implements RemoteBean, Session, 
TimerConsumer {
     public void setPassivationCapable(final Boolean passivationCapable) {
         this.passivationCapable = passivationCapable;
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
index 73c01e4..44a70cb 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
@@ -161,6 +161,8 @@ public class WebApp implements WebCommon, Lifecycle, 
NamedModule {
     protected KeyedCollection<String, PersistenceUnitRef> persistenceUnitRef;
     @XmlElement(name = "data-source", required = true)
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "post-construct", required = true)
     protected List<LifecycleCallback> postConstruct;
     @XmlElement(name = "pre-destroy", required = true)
@@ -569,6 +571,21 @@ public class WebApp implements WebCommon, Lifecycle, 
NamedModule {
         this.version = value;
     }
 
+    public Collection<JMSConnectionFactory> getJMSConnectionFactory() {
+        if (jmsConnectionFactories == null) {
+            jmsConnectionFactories = new KeyedCollection<>();
+        }
+        return this.jmsConnectionFactories;
+    }
+
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoryMap() {
+        if (jmsConnectionFactories == null) {
+            jmsConnectionFactories = new KeyedCollection<>();
+        }
+        return this.jmsConnectionFactories.toMap();
+    }
+
+
     public Collection<DataSource> getDataSource() {
         if (dataSource == null) {
             dataSource = new KeyedCollection<String, DataSource>();
@@ -759,4 +776,14 @@ public class WebApp implements WebCommon, Lifecycle, 
NamedModule {
         getListener().add(l);
         return this;
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1bf768b7/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
index 351a8fc..0adfef9 100644
--- 
a/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
+++ 
b/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebFragment.java
@@ -159,6 +159,8 @@ public class WebFragment implements WebCommon {
     protected KeyedCollection<String, PersistenceUnitRef> persistenceUnitRef;
     @XmlElement(name = "data-source", required = true)
     protected KeyedCollection<String, DataSource> dataSource;
+    @XmlElement(name = "jms-connection-factory", required = true)
+    protected KeyedCollection<String, JMSConnectionFactory> 
jmsConnectionFactories;
     @XmlElement(name = "post-construct", required = true)
     protected List<LifecycleCallback> postConstruct;
     @XmlElement(name = "pre-destroy", required = true)
@@ -609,4 +611,14 @@ public class WebFragment implements WebCommon {
     public void setName(final String name) {
         this.name = name;
     }
+
+    @Override
+    public Collection<JMSConnectionFactory> getJMSConnectionFactories() {
+        return jmsConnectionFactories == null ? (jmsConnectionFactories = new 
KeyedCollection<>()) : jmsConnectionFactories;
+    }
+
+    @Override
+    public Map<String, JMSConnectionFactory> getJMSConnectionFactoriesMap() {
+        return KeyedCollection.class.cast(getJMSConnectionFactories()).toMap();
+    }
 }
\ No newline at end of file

Reply via email to