You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2009/02/28 00:47:24 UTC

svn commit: r748748 - /openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java

Author: dblevins
Date: Fri Feb 27 23:47:24 2009
New Revision: 748748

URL: http://svn.apache.org/viewvc?rev=748748&view=rev
Log:
Test to verify xml overrides function

Added:
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java

Added: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java?rev=748748&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/XmlOverridesTest.java Fri Feb 27 23:47:24 2009
@@ -0,0 +1,211 @@
+/**
+ * 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.config;
+
+import junit.framework.TestCase;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.EjbJarInfo;
+import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
+import org.apache.openejb.assembler.classic.EnvEntryInfo;
+import org.apache.openejb.assembler.classic.JndiEncInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.assembler.classic.PersistenceContextReferenceInfo;
+import org.apache.openejb.assembler.classic.PersistenceUnitReferenceInfo;
+import org.apache.openejb.assembler.classic.ResourceReferenceInfo;
+import org.apache.openejb.assembler.classic.ResourceEnvReferenceInfo;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EjbLocalRef;
+import org.apache.openejb.jee.EnvEntry;
+import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.PersistenceContextType;
+import org.apache.openejb.jee.PersistenceUnitRef;
+import org.apache.openejb.jee.Property;
+import org.apache.openejb.jee.ResAuth;
+import org.apache.openejb.jee.ResSharingScope;
+import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.StatefulBean;
+import org.apache.openejb.jee.jpa.unit.Persistence;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.Local;
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceUnit;
+import javax.sql.DataSource;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class XmlOverridesTest extends TestCase {
+
+    public void test() throws Exception {
+        ConfigurationFactory config = new ConfigurationFactory();
+        Assembler assembler = new Assembler();
+
+        assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+        assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+
+        EjbJar ejbJar = new EjbJar();
+        StatefulBean bean = ejbJar.addEnterpriseBean(new StatefulBean(AnnotatedBean.class));
+
+        bean.getEjbLocalRef().add(new EjbLocalRef(name("annotatedLocal"), "BarBean"));
+
+        bean.getEnvEntry().add(new EnvEntry(name("striing"), "java.lang.Integer", "2"));
+        bean.getEnvEntry().add(new EnvEntry(name("doouble"), "java.lang.String", "two"));
+        bean.getEnvEntry().add(new EnvEntry(name("loong"), "java.lang.String", "three"));
+        bean.getEnvEntry().add(new EnvEntry(name("flooat"), "java.lang.String", "four"));
+        bean.getEnvEntry().add(new EnvEntry(name("inteeger"), "java.lang.String", "five"));
+        bean.getEnvEntry().add(new EnvEntry(name("shoort"), "java.lang.String", "six"));
+        bean.getEnvEntry().add(new EnvEntry(name("booolean"), "java.lang.String", "seven"));
+        bean.getEnvEntry().add(new EnvEntry(name("byyte"), "java.lang.String", "eight"));
+        bean.getEnvEntry().add(new EnvEntry(name("chaaracter"), "java.lang.String", "nine"));
+
+        bean.getResourceRef().add(new ResourceRef(name("daataSource"), DataSource.class.getName(), ResAuth.CONTAINER, ResSharingScope.SHAREABLE));
+
+        bean.getPersistenceUnitRef().add(new PersistenceUnitRef(name("emf"), "yellow"));
+
+        bean.getPersistenceContextRef().add(new PersistenceContextRef(name("em"), "yellow", PersistenceContextType.TRANSACTION, new ArrayList(Arrays.asList(new Property("zzzz", "AAAA")))));
+
+        org.apache.openejb.jee.jpa.unit.PersistenceUnit persistenceUnit = new org.apache.openejb.jee.jpa.unit.PersistenceUnit("yellow");
+
+        AppModule app = new AppModule(this.getClass().getClassLoader(), "app");
+        app.getEjbModules().add(new EjbModule(ejbJar));
+        app.getPersistenceModules().add(new PersistenceModule("root", new Persistence(persistenceUnit)));
+
+        AppInfo appInfo = config.configureApplication(app);
+
+        EjbJarInfo ejbJarInfo = appInfo.ejbJars.get(0);
+        EnterpriseBeanInfo beanInfo = ejbJarInfo.enterpriseBeans.get(0);
+        JndiEncInfo enc = beanInfo.jndiEnc;
+
+        assertEquals("Enc.ejbLocalReferences.size()", 1, enc.ejbLocalReferences.size());
+        assertEquals("Enc.ejbLocalReferences.get(0).link", "BarBean", enc.ejbLocalReferences.get(0).link);
+        assertEquals("Enc.ejbReferences.size()", 0, enc.ejbReferences.size());
+
+        assertEquals("Enc.envEntries.size()", 9, enc.envEntries.size());
+        Map<String, EnvEntryInfo> entries = map(enc.envEntries, "name");
+
+        assertEnvEntry(entries, name("striing"), "java.lang.Integer", "2");
+        assertEnvEntry(entries, name("doouble"), "java.lang.String", "two");
+        assertEnvEntry(entries, name("loong"), "java.lang.String", "three");
+        assertEnvEntry(entries, name("flooat"), "java.lang.String", "four");
+        assertEnvEntry(entries, name("inteeger"), "java.lang.String", "five");
+        assertEnvEntry(entries, name("shoort"), "java.lang.String", "six");
+        assertEnvEntry(entries, name("booolean"), "java.lang.String", "seven");
+        assertEnvEntry(entries, name("byyte"), "java.lang.String", "eight");
+        assertEnvEntry(entries, name("chaaracter"), "java.lang.String", "nine");
+
+        assertEquals("Enc.persistenceContextRefs.size()", 1, enc.persistenceContextRefs.size());
+        PersistenceContextReferenceInfo context = enc.persistenceContextRefs.get(0);
+        assertEquals("Context.extended", false, context.extended);
+        assertEquals("Context.persistenceUnitName", "yellow", context.persistenceUnitName);
+        assertEquals("Context.properties.size()", 1, context.properties.size());
+        assertEquals("Context.properties.getProperty(\"zzzz\")", "AAAA", context.properties.getProperty("zzzz"));
+
+        assertEquals("Enc.persistenceUnitRefs.size()", 1, enc.persistenceUnitRefs.size());
+        PersistenceUnitReferenceInfo unit = enc.persistenceUnitRefs.get(0);
+        assertEquals("Unit.persistenceUnitName", "yellow", unit.persistenceUnitName);
+
+        assertEquals("Enc.resourceRefs.size()", 1, enc.resourceRefs.size());
+        ResourceReferenceInfo resource = enc.resourceRefs.get(0);
+        assertEquals("Resource.referenceAuth", "CONTAINER", resource.referenceAuth);
+
+    }
+
+    private void assertEnvEntry(Map<String, EnvEntryInfo> entries, String name, String type, String value) {
+        EnvEntryInfo entryInfo = entries.get(name);
+        assertNotNull(name, entryInfo);
+        assertEquals(name + ".type", type, entryInfo.type);
+        assertEquals(name + ".value", value, entryInfo.value);
+    }
+
+    private <T> Map<String, T> map(List<T> list, String key) {
+        try {
+            Map<String, T> entries = new HashMap<String, T>();
+            for (T envEntry : list) {
+                Field field = envEntry.getClass().getField(key);
+                entries.put((String) field.get(envEntry), envEntry);
+            }
+            return entries;
+        } catch (Exception e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    private String name(String name) {
+        return AnnotatedBean.class.getName() + "/" + name;
+    }
+
+    @Local
+    public static interface AnnotatedLocal {
+
+    }
+
+    @Stateful
+    public static class AnnotatedBean implements AnnotatedLocal {
+
+        @EJB(beanName = "FooBean")
+        private AnnotatedLocal annotatedLocal;
+
+        @Resource
+        private String striing = "1";
+
+        @Resource
+        private Double doouble = 1.0D;
+
+        @Resource
+        private Long loong = 1L;
+
+        @Resource
+        private Float flooat = 1.0F;
+
+        @Resource
+        private Integer inteeger = 1;
+
+        @Resource
+        private Short shoort = (short) 1;
+
+        @Resource
+        private Boolean booolean = true;
+
+        @Resource
+        private Byte byyte = (byte) 1;
+
+        @Resource
+        private Character chaaracter = 'D';
+
+        @Resource(authenticationType = Resource.AuthenticationType.APPLICATION, shareable = false)
+        private DataSource daataSource;
+
+        @PersistenceUnit(unitName = "orange")
+        private EntityManagerFactory emf;
+
+        @PersistenceContext(unitName = "orange", type = javax.persistence.PersistenceContextType.EXTENDED, properties = {@javax.persistence.PersistenceProperty(name = "zzzz", value = "ZZZZ")})
+        private EntityManager em;
+    }
+}