Author: dblevins
Date: Thu Jul  9 08:15:06 2009
New Revision: 792441

URL: http://svn.apache.org/viewvc?rev=792441&view=rev
Log:
A not quite yet complete/working test case for OPENEJB-1039
A few other business interface issues have been discovered by both Ivan and I, 
this testcase will cover them all and more.

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
   (contents, props changed)
      - copied, changed from r785410, 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java

Copied: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
 (from r785410, 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java?p2=openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java&p1=openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java&r1=785410&r2=792441&rev=792441&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
 Thu Jul  9 08:15:06 2009
@@ -18,107 +18,332 @@
 
 import junit.framework.TestCase;
 import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.SecurityServiceInfo;
-import org.apache.openejb.assembler.classic.TransactionServiceInfo;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.client.LocalInitialContextFactory;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.apache.openejb.DeploymentInfo;
-import org.apache.openejb.client.LocalInitialContextFactory;
 
 import javax.ejb.Local;
 import javax.ejb.Remote;
-import javax.ejb.Stateless;
-import javax.jws.WebService;
-import javax.naming.InitialContext;
-import static java.util.Arrays.asList;
-import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
-public class UberInterfaceTest extends TestCase {
+public class BusinessInterfacesTest extends TestCase {
 
     public void test() throws Exception {
+    }
+
+    public void _testDefault() throws Exception {
+        System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
LocalInitialContextFactory.class.getName());
+
+        ConfigurationFactory config = new ConfigurationFactory();
+        Assembler assembler = new Assembler();
+
+        
SystemInstance.get().setProperty("openejb.strict.interface.declaration", 
"false");
+
+        
assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+        
assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+
+        EjbJar ejbJar = new EjbJar();
+        ejbJar.addEnterpriseBean(new StatelessBean(OrangeBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(RedBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(YellowBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(GreenBean.class));
+
+        StatelessBean white = ejbJar.addEnterpriseBean(new 
StatelessBean(WhiteBean.class));
+        white.addBusinessLocal(WhiteOne.class);
+        white.addBusinessLocal(WhiteThree.class);
+
+        StatelessBean black = ejbJar.addEnterpriseBean(new 
StatelessBean(BlackBean.class));
+        black.addBusinessRemote(BlackTwo.class);
+        black.addBusinessRemote(BlackThree.class);
+
+        ejbJar.addEnterpriseBean(new StatelessBean(MagentaBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(CyanBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(PurpleBean.class));
+
+        EjbJarInfo ejbJarInfo = config.configureApplication(ejbJar);
+
+        Map<String, EnterpriseBeanInfo> beans = 
asMap(ejbJarInfo.enterpriseBeans);
+
+        EnterpriseBeanInfo beanInfo = beans.get("OrangeBean");
+
+        assertEquals(list(OrangeOne.class, OrangeThree.class, 
OrangeFour.class), sort(beanInfo.businessLocal));
+        assertEquals(list(OrangeTwo.class, OrangeThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("RedBean");
+
+        assertEquals(list(RedOne.class, RedThree.class, RedFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(RedTwo.class, RedThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("YellowBean");
+
+        assertEquals(list(YellowOne.class, YellowThree.class, 
YellowFour.class), sort(beanInfo.businessLocal));
+        assertEquals(list(YellowTwo.class, YellowThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("GreenBean");
+
+        assertEquals(list(GreenOne.class, GreenThree.class, GreenFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(GreenTwo.class, GreenThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("WhiteBean");
+
+        assertEquals(list(WhiteOne.class, WhiteThree.class, WhiteFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(WhiteTwo.class, WhiteThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("BlackBean");
+
+        assertEquals(list(BlackOne.class, BlackThree.class, BlackFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(BlackTwo.class, BlackThree.class), 
sort(beanInfo.businessRemote));
+
+    }
+
+    public void _testStrict() throws Exception {
         System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
LocalInitialContextFactory.class.getName());
 
         ConfigurationFactory config = new ConfigurationFactory();
         Assembler assembler = new Assembler();
 
+        
SystemInstance.get().setProperty("openejb.strict.interface.declaration", 
"true");
+
         
assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
         
assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
 
         EjbJar ejbJar = new EjbJar();
-        StatelessBean bean = ejbJar.addEnterpriseBean(new 
StatelessBean(SuperBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(OrangeBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(RedBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(YellowBean.class));
+        ejbJar.addEnterpriseBean(new StatelessBean(GreenBean.class));
+
+        StatelessBean white = ejbJar.addEnterpriseBean(new 
StatelessBean(WhiteBean.class));
+        white.addBusinessLocal(WhiteOne.class);
+        white.addBusinessLocal(WhiteThree.class);
+
+        StatelessBean black = ejbJar.addEnterpriseBean(new 
StatelessBean(BlackBean.class));
+        black.addBusinessRemote(BlackTwo.class);
+        black.addBusinessRemote(BlackThree.class);
 
         EjbJarInfo ejbJarInfo = config.configureApplication(ejbJar);
 
-        EnterpriseBeanInfo beanInfo = ejbJarInfo.enterpriseBeans.get(0);
+        Map<String, EnterpriseBeanInfo> beans = 
asMap(ejbJarInfo.enterpriseBeans);
+
+        EnterpriseBeanInfo beanInfo = beans.get("OrangeBean");
+
+        assertEquals(list(OrangeOne.class, OrangeThree.class, 
OrangeFour.class), sort(beanInfo.businessLocal));
+        assertEquals(list(OrangeTwo.class, OrangeThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("RedBean");
+
+        assertEquals(list(RedOne.class, RedThree.class, RedFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(RedTwo.class, RedThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("YellowBean");
+
+        assertEquals(list(YellowOne.class, YellowThree.class, 
YellowFour.class), sort(beanInfo.businessLocal));
+        assertEquals(list(YellowTwo.class, YellowThree.class), 
sort(beanInfo.businessRemote));
+
+        beanInfo = beans.get("GreenBean");
 
-        assertEquals(asList(Everything.class.getName()), 
beanInfo.businessLocal);
-        assertEquals(asList(Everything.class.getName()), 
beanInfo.businessRemote);
-        assertEquals(Everything.class.getName(), beanInfo.serviceEndpoint);
+        assertEquals(list(GreenOne.class, GreenThree.class, GreenFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(GreenTwo.class, GreenThree.class), 
sort(beanInfo.businessRemote));
 
-        assembler.createApplication(ejbJarInfo);
+        beanInfo = beans.get("WhiteBean");
 
-        ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
-        DeploymentInfo deployment = 
containerSystem.getDeploymentInfo(beanInfo.ejbDeploymentId);
+        assertEquals(list(WhiteOne.class, WhiteThree.class, WhiteFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(WhiteTwo.class, WhiteThree.class), 
sort(beanInfo.businessRemote));
 
-        assertEquals(asList(Everything.class), 
deployment.getBusinessLocalInterfaces());
-        assertEquals(asList(Everything.class), 
deployment.getBusinessRemoteInterfaces());
-        assertEquals(Everything.class, 
deployment.getServiceEndpointInterface());
+        beanInfo = beans.get("BlackBean");
 
-        InitialContext context = new InitialContext();
+        assertEquals(list(BlackOne.class, BlackThree.class, BlackFour.class), 
sort(beanInfo.businessLocal));
+        assertEquals(list(BlackTwo.class, BlackThree.class), 
sort(beanInfo.businessRemote));
 
-        Everything local = (Everything) context.lookup("SuperBeanLocal");
-        Everything remote = (Everything) context.lookup("SuperBeanRemote");
+    }
 
-        Reference reference = new Reference("test");
+    private <T extends Comparable<? super T>> List<T> sort(List<T> list) {
+        Collections.sort(list);
+        return list;
+    }
 
-        assertEquals(reference, local.echo(reference));
-        assertSame(reference, local.echo(reference)); // pass by reference
+    private Map<String, EnterpriseBeanInfo> asMap(List<EnterpriseBeanInfo> 
enterpriseBeans) {
+        Map<String, EnterpriseBeanInfo> map = new HashMap<String, 
EnterpriseBeanInfo>();
+        for (EnterpriseBeanInfo bean : enterpriseBeans) {
+            map.put(bean.ejbName, bean);
+        }
 
-        assertEquals(reference, remote.echo(reference));
-        assertNotSame(reference, remote.echo(reference)); // pass by value
+        return map;
     }
 
+    private List<String> list(Class... classes) {
+        ArrayList<String> list = new ArrayList<String>();
+        for (Class clazz : classes) {
+            list.add(clazz.getName());
+        }
+        return sort(list);
+    }
+
+
+    // OrangeBean 
----------------------------------------------------------------
 
     @Local
+    public static interface OrangeOne {
+    }
+
     @Remote
-    @WebService
-    public static interface Everything {
-        public Object echo(Object o);
+    public static interface OrangeTwo {
     }
 
-    public static class SuperBean implements Everything {
-        public Object echo(Object o) {
-            return o;
-        }
+    @Local
+    @Remote
+    public static interface OrangeThree {
     }
 
-    public static class Reference implements Serializable {
-        private final String value;
+    public static interface OrangeFour {
+    }
 
-        public Reference(String value) {
-            this.value = value;
-        }
+    public static class OrangeBean implements OrangeOne, OrangeTwo, 
OrangeThree, OrangeFour {
+    }
 
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) return true;
-            if (o == null || getClass() != o.getClass()) return false;
+    // RedBean ----------------------------------------------------------------
 
-            Reference value1 = (Reference) o;
+    @Local
+    public static interface RedOne {
+    }
 
-            if (!value.equals(value1.value)) return false;
+    @Remote
+    public static interface RedTwo {
+    }
 
-            return true;
-        }
+    @Local
+    @Remote
+    public static interface RedThree {
+    }
 
-        @Override
-        public int hashCode() {
-            return value.hashCode();
-        }
+    public static interface RedFour {
+    }
+
+    @Local({RedOne.class, RedThree.class})
+    @Remote({RedTwo.class, RedThree.class})
+    public static class RedBean implements RedOne, RedTwo, RedThree, RedFour {
+    }
+
+    // YellowBean 
----------------------------------------------------------------
+
+    @Local
+    public static interface YellowOne {
+    }
+
+    public static interface YellowTwo {
+    }
+
+    @Local
+    public static interface YellowThree {
+    }
+
+    public static interface YellowFour {
+    }
+
+    @Remote({YellowTwo.class, YellowThree.class})
+    public static class YellowBean implements YellowOne, YellowTwo, 
YellowThree, YellowFour {
+    }
+
+    // GreenBean 
----------------------------------------------------------------
+
+    public static interface GreenOne {
+    }
+
+    @Remote
+    public static interface GreenTwo {
+    }
+
+    @Remote
+    public static interface GreenThree {
+    }
+
+    public static interface GreenFour {
+    }
+
+    @Local({GreenOne.class, GreenThree.class})
+    public static class GreenBean implements GreenOne, GreenTwo, GreenThree, 
GreenFour {
+    }
+
+    // WhiteBean 
----------------------------------------------------------------
+
+    public static interface WhiteOne {
+    }
+
+    @Remote
+    public static interface WhiteTwo {
+    }
+
+    @Remote
+    public static interface WhiteThree {
+    }
+
+    public static interface WhiteFour {
+    }
+
+    // local interfaces declared in deployment descriptor
+    //@Local({WhiteOne.class, WhiteThree.class})
+    public static class WhiteBean implements WhiteOne, WhiteTwo, WhiteThree, 
WhiteFour {
+    }
+
+    // BlackBean 
----------------------------------------------------------------
+
+    @Local
+    public static interface BlackOne {
+    }
+
+    public static interface BlackTwo {
+    }
+
+    @Local
+    public static interface BlackThree {
+    }
+
+    public static interface BlackFour {
+    }
+
+    // remote interfaces declared in deployment descriptor
+    //@Remote({BlackTwo.class, BlackThree.class})
+    public static class BlackBean implements BlackOne, BlackTwo, BlackThree, 
BlackFour {
+    }
+
+
+    // MagentaBean 
----------------------------------------------------------------
+
+
+    public static interface MagentaOne { }
+    public static interface MagentaTwo { }
+
+    @Local
+    @Remote(MagentaTwo.class)
+    public static class MagentaBean implements MagentaOne {
+    }
+
+    // CyanBean 
----------------------------------------------------------------
+
+    public static interface CyanOne { }
+    public static interface CyanTwo { }
+
+    @Local(CyanOne.class)
+    @Remote
+    public static class CyanBean implements CyanTwo {
+    }
+
+    // PurpleBean 
----------------------------------------------------------------
+
+    public static interface Purple { }
+
+    @Local
+    @Remote
+    public static class PurpleBean implements Purple {
     }
 
-}
+}
\ No newline at end of file

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author Id Revision HeadURL

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Jul  9 08:15:06 2009
@@ -0,0 +1 @@
+/openejb/branches/openejb-3.1.1/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java:779593


Reply via email to