[Jboss-cvs] JBossAS SVN: r56117 - in trunk/ejb3: . src/main/org/jboss/ejb3 src/main/org/jboss/ejb3/iiop src/main/org/jboss/ejb3/mdb src/main/org/jboss/ejb3/service src/main/org/jboss/ejb3/session src/test/org/jboss/ejb3/test/iiop/unit

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 21 12:15:31 EDT 2006


Author: wolfc
Date: 2006-08-21 12:15:08 -0400 (Mon, 21 Aug 2006)
New Revision: 56117

Modified:
   trunk/ejb3/build-test.xml
   trunk/ejb3/src/main/org/jboss/ejb3/ProxyFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/SessionContainer.java
   trunk/ejb3/src/main/org/jboss/ejb3/iiop/IORFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/mdb/ProducerFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/service/BaseServiceProxyFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java
   trunk/ejb3/src/main/org/jboss/ejb3/session/BaseSessionProxyFactory.java
   trunk/ejb3/src/test/org/jboss/ejb3/test/iiop/unit/IiopRemoteUnitTestCase.java
Log:
EJBTHREE-667: everything working except getHandle

Modified: trunk/ejb3/build-test.xml
===================================================================
--- trunk/ejb3/build-test.xml	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/build-test.xml	2006-08-21 16:15:08 UTC (rev 56117)
@@ -260,6 +260,11 @@
       <path refid="apache.httpclient.classpath"/>
    </path>
 
+   <path id="iiop.client.classpath">
+      <pathelement path="${resources}/test/iiop"/>
+      <path refid="client.classpath"/>
+   </path>
+   
    <!-- The classpath required to build javadocs. -->
    <path id="javadoc.classpath">
       <path refid="javac.classpath"/>
@@ -2614,12 +2619,21 @@
       <condition property="client.run.classpath" value="dd.classpath">
          <equals arg1="${test}" arg2="dd"/>
       </condition>
+      <condition property="client.run.classpath" value="iiop.client.classpath">
+         <equals arg1="${test}" arg2="iiop"/>
+      </condition>
       <condition property="client.run.classpath" value="client.classpath">
          <not>
             <isset property="client.run.classpath"/>
          </not>
       </condition>
 
+      <condition property="test.jndi.url" value="${node0.jndi.url}">
+         <not>
+            <isset property="test.jndi.url"/>
+         </not>
+      </condition>
+      
       <junit dir="${module.output}"
          printsummary="yes"
          haltonerror="false"
@@ -2643,7 +2657,7 @@
          <sysproperty key="jbosstest.cluster.node1" value="${node1}"/>
          <sysproperty key="jbosstest.cluster.node1.http.url" value="${node1.http.url}"/>
          <sysproperty key="jbosstest.cluster.node1.jndi.url" value="${node1.jndi.url}"/>
-         <sysproperty key="java.naming.provider.url" value="${node0.jndi.url}"/>
+         <sysproperty key="java.naming.provider.url" value="${test.jndi.url}"/>
 
 
          <jvmarg line="${jvmargs}" />
@@ -2652,7 +2666,7 @@
             <path refid="asm.asm.classpath"/>
             <path refid="hibernate.hibernate.classpath"/>
             <pathelement location="${build.classes}"/>
-            <pathelement location="${resources}/test"/>
+            <pathelement location="${resources}/test"/> <!-- TODO: now I can't override jndi.properties -->
             <path refid="${client.run.classpath}"/>
             <path refid="jboss.jbossws.classpath"/>
             <path refid="apache.xerces.classpath"/>
@@ -3625,8 +3639,18 @@
       <antcall target="test-with-jvmargs" inheritRefs="true">
          <param name="test" value="${test}"/>
          <param name="test.extension" value="jacorb"/>
+         <param name="test.jndi.url" value="corbaloc::localhost:3528/JBoss/Naming/root"/>
       	 <!-- using jacorb -->
-         <param name="jvmargs" value="${debugFlags} -Djava.security.manager -Djava.security.policy=${resources}/security/tst.policy -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -Dorg.omg.PortableInterceptor.ORBInitializerClass.org.jboss.tm.iiop.TxClientInterceptorInitializer -Dorg.omg.PortableInterceptor.ORBInitializerClass.org.jboss.iiop.csiv2.SASClientInitializer -DORBInitRef.NameService=corbaloc::localhost:3528/JBoss/Naming/root -Djacorb.log.default.verbosity=10 -Djacorb.log.loggerFactory=org.jboss.util.Log4jLoggerFactory"/>
+         <param name="jvmargs" value="${debugFlags} 
+            -Djava.security.manager 
+            -Djava.security.policy=${resources}/security/tst.policy 
+            -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB 
+            -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton 
+            -Dorg.omg.PortableInterceptor.ORBInitializerClass.org.jboss.tm.iiop.TxClientInterceptorInitializer 
+            -Dorg.omg.PortableInterceptor.ORBInitializerClass.org.jboss.iiop.csiv2.SASClientInitializer 
+            -DORBInitRef.NameService=corbaloc::localhost:3528/JBoss/Naming/root 
+            -Djacorb.log.default.verbosity=10 
+            -Djacorb.log.loggerFactory=org.jboss.util.Log4jLoggerFactory" />
       </antcall>
    </target>
 

Modified: trunk/ejb3/src/main/org/jboss/ejb3/ProxyFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/ProxyFactory.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/ProxyFactory.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -31,6 +31,8 @@
 {
    public void setContainer(Container container);
 
+   public Object createHomeProxy();
+   
    public Object createProxy();
 
    public Object createProxy(Object id);

Modified: trunk/ejb3/src/main/org/jboss/ejb3/SessionContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/SessionContainer.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/SessionContainer.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -26,6 +26,7 @@
 import java.util.Hashtable;
 import java.util.Map;
 
+import javax.ejb.EJBObject;
 import javax.ejb.Handle;
 import javax.ejb.LocalHome;
 import javax.ejb.RemoteHome;
@@ -288,7 +289,7 @@
          }
          else if (unadvisedMethod != null && isEJBObjectMethod(unadvisedMethod))
          {
-            return invokeEJBObjectMethod(id, info, args);
+            return invokeEJBObjectMethod(factory, id, info, args);
          }
 
          Interceptor[] aspects = info.getInterceptors();
@@ -339,7 +340,10 @@
       }
       else if (unadvisedMethod.getName().equals("remove"))
       {
-         removeHandle((Handle) args[0]);
+         if(args[0] instanceof Handle)
+            removeHandle((Handle) args[0]);
+         else
+            destroySession(args[0]);
 
          return null;
       }
@@ -368,9 +372,33 @@
       throw new RuntimeException("NYI");
    }
    
-   protected Object invokeEJBObjectMethod(Object id, MethodInfo info, Object args[]) throws Exception
+   protected Object invokeEJBObjectMethod(ProxyFactory factory, Object id, MethodInfo info, Object args[]) throws Exception
    {
       Method unadvisedMethod = info.getUnadvisedMethod();
+      if(unadvisedMethod.getName().equals("getEJBHome"))
+      {
+         return factory.createHomeProxy();
+      }
+      if(unadvisedMethod.getName().equals("getPrimaryKey"))
+      {
+         return id;
+      }
+      if(unadvisedMethod.getName().equals("isIdentical"))
+      {
+         // object has no identity
+         if(id == null)
+            return false;
+         
+         EJBObject bean = (EJBObject) args[0];
+
+         Object primaryKey = bean.getPrimaryKey();
+         if(primaryKey == null)
+            return false;
+
+         boolean isIdentical = id.equals(primaryKey);
+
+         return isIdentical;
+      }
       if (unadvisedMethod.getName().equals("remove"))
       {
          destroySession(id);

Modified: trunk/ejb3/src/main/org/jboss/ejb3/iiop/IORFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/iiop/IORFactory.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/iiop/IORFactory.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -127,7 +127,7 @@
    };
    
    // TODO: do I really need this method
-   public EJBHome createHomeProxy()
+   public Object createHomeProxy()
    {
       try
       {

Modified: trunk/ejb3/src/main/org/jboss/ejb3/mdb/ProducerFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/mdb/ProducerFactory.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/mdb/ProducerFactory.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -109,6 +109,11 @@
       jndiName = producer.getName();
    }
 
+   public Object createHomeProxy()
+   {
+      throw new UnsupportedOperationException("producer can't have a home interface");
+   }
+   
    public Object createProxy(Object id)
    {
       if(id != null)

Modified: trunk/ejb3/src/main/org/jboss/ejb3/service/BaseServiceProxyFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/service/BaseServiceProxyFactory.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/service/BaseServiceProxyFactory.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -45,6 +45,11 @@
    protected Container container;
    protected Advisor advisor;
 
+   public Object createHomeProxy()
+   {
+      throw new UnsupportedOperationException("service can't have a home interface");
+   }
+   
    public Object createProxy(Object id)
    {
       if(id != null)

Modified: trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -54,6 +54,7 @@
 import org.jboss.ejb3.BeanContext;
 import org.jboss.ejb3.EJBContainerInvocation;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.ProxyFactory;
 import org.jboss.ejb3.SessionContainer;
 import org.jboss.ejb3.ThreadLocalENCFactory;
 import org.jboss.ejb3.asynchronous.AsynchronousInterceptor;
@@ -366,7 +367,7 @@
    }
 
    @Override
-   protected Object invokeEJBObjectMethod(Object id, MethodInfo info, Object[] args) throws Exception
+   protected Object invokeEJBObjectMethod(ProxyFactory factory, Object id, MethodInfo info, Object[] args) throws Exception
    {
       throw new RuntimeException("NYI");
    }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/session/BaseSessionProxyFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/session/BaseSessionProxyFactory.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/main/org/jboss/ejb3/session/BaseSessionProxyFactory.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -48,6 +48,11 @@
    protected Container container;
    protected Advisor advisor;
   
+   public Object createHomeProxy()
+   {
+      throw new RuntimeException("NYI");
+   }
+   
    public void setContainer(Container container)
    {
       this.container = container;

Modified: trunk/ejb3/src/test/org/jboss/ejb3/test/iiop/unit/IiopRemoteUnitTestCase.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/iiop/unit/IiopRemoteUnitTestCase.java	2006-08-21 16:14:39 UTC (rev 56116)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/iiop/unit/IiopRemoteUnitTestCase.java	2006-08-21 16:15:08 UTC (rev 56117)
@@ -21,9 +21,13 @@
   */
 package org.jboss.ejb3.test.iiop.unit;
 
+import java.rmi.MarshalledObject;
 import java.util.Date;
 import java.util.Properties;
 
+import javax.ejb.Handle;
+import javax.ejb.HomeHandle;
+import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import javax.rmi.PortableRemoteObject;
@@ -38,8 +42,11 @@
 import org.jboss.ejb3.test.iiop.MyStateful;
 import org.jboss.security.SecurityAssociation;
 import org.jboss.security.SimplePrincipal;
+import org.jboss.test.JBossIIOPTestCase;
 import org.jboss.test.JBossTestCase;
 
+import com.sun.naming.internal.ResourceManager;
+
 /**
  * TODO: use JBossIIOPTestCase
  *
@@ -54,6 +61,7 @@
       super(name);
    }
 
+   @Override
    public InitialContext getInitialContext() throws NamingException
    {
       return new InitialContext(getJndiProperties());
@@ -65,13 +73,21 @@
       props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
       props.put("java.naming.provider.url", "corbaloc::localhost:3528/NameService");
       props.put("java.naming.factory.object", "org.jboss.tm.iiop.client.IIOPClientUserTransactionObjectFactory");
+      props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming.client:org.jnp.interfaces");
+      props.put("j2ee.clientName", "iiop-unit-test");
       
 //      props.put(InitialContext.SECURITY_PRINCIPAL, "somebody");
 //      props.put(InitialContext.SECURITY_CREDENTIALS, "password");
       
       return props;
+//      return null;
    }
    
+   public void test0() throws Exception
+   {
+      System.out.println("java: " + getInitialContext().lookup("java:comp/HandleDelegate"));
+   }
+   
    public void test1() throws Exception
    {
       SimplePrincipal principal = new SimplePrincipal("somebody");
@@ -107,10 +123,58 @@
       Object obj = ctx.lookup("HomedStatelessBean/remoteHome");
       HomedStatelessHome home = (HomedStatelessHome) PortableRemoteObject.narrow(obj, HomedStatelessHome.class);
       MySession session = home.create();
-      HomedStatelessHome home2 = (HomedStatelessHome) session.getEJBHome();
+      Object o = session.getEJBHome();
+      HomedStatelessHome home2 = (HomedStatelessHome) PortableRemoteObject.narrow(o, HomedStatelessHome.class);
       // TODO: check home2
    }
    
+   public void testGetHandle() throws Exception
+   {
+      InitialContext ctx = getInitialContext();
+      Object obj = ctx.lookup("HomedStatelessBean/remoteHome");
+      HomedStatelessHome home = (HomedStatelessHome) PortableRemoteObject.narrow(obj, HomedStatelessHome.class);
+      MySession session = home.create();
+      Handle h = session.getHandle();
+      MarshalledObject mo = new MarshalledObject(h);
+      Handle h2 = (Handle) mo.get();
+      Object o = h2.getEJBObject();
+      MySession session2 = (MySession) PortableRemoteObject.narrow(o, MySession.class);
+   }
+   
+   public void testGetHomeHandle() throws Exception
+   {
+      InitialContext ctx = getInitialContext();
+      Object obj = ctx.lookup("HomedStatelessBean/remoteHome");
+      HomedStatelessHome home = (HomedStatelessHome) PortableRemoteObject.narrow(obj, HomedStatelessHome.class);
+      HomeHandle h = home.getHomeHandle();
+      MarshalledObject mo = new MarshalledObject(h);
+      HomeHandle h2 = (HomeHandle) mo.get();
+      Object o = h2.getEJBHome();
+      HomedStatelessHome home2 = (HomedStatelessHome) PortableRemoteObject.narrow(o, HomedStatelessHome.class);
+      // TODO: check home2
+   }
+   
+   public void testGetPrimaryKeyAndRemove() throws Exception
+   {
+      InitialContext ctx = getInitialContext();
+      Object obj = ctx.lookup("MyStatefulBean/remoteHome");
+      MyStatefulHome home = (MyStatefulHome) PortableRemoteObject.narrow(obj, MyStatefulHome.class);
+      MyStateful session = home.create();
+      Object primaryKey = session.getPrimaryKey();
+      assertNotNull(primaryKey);
+      
+      home.remove(primaryKey);
+      try
+      {
+         session.sayHello();
+         fail("should throw an exception");
+      }
+      catch(Exception e)
+      {
+         // TODO: check exception (NoSuchEJBException)
+      }
+   }
+   
    public void testHomedStateless() throws Exception
    {
       InitialContext ctx = getInitialContext();
@@ -122,6 +186,28 @@
       assertEquals("Hi " + me, response);
    }
    
+   public void testIsIdentical() throws Exception
+   {
+      InitialContext ctx = getInitialContext();
+      Object obj = ctx.lookup("MyStatefulBean/remoteHome");
+      MyStatefulHome home = (MyStatefulHome) PortableRemoteObject.narrow(obj, MyStatefulHome.class);
+      MyStateful session = home.create();
+      MyStateful session2 = session;
+      // TODO: use handle
+      assertTrue(session.isIdentical(session2));
+   }
+   
+   public void testRemoveByHandle() throws Exception
+   {
+      InitialContext ctx = getInitialContext();
+      Object obj = ctx.lookup("MyStatefulBean/remoteHome");
+      MyStatefulHome home = (MyStatefulHome) PortableRemoteObject.narrow(obj, MyStatefulHome.class);
+      MyStateful session = home.create();
+      session.setName("Me");
+      home.remove(session.getHandle());
+      session.sayHello();
+   }
+   
    public void testSecurity() throws Exception
    {
       SimplePrincipal principal = new SimplePrincipal("somebody");
@@ -175,6 +261,15 @@
    
    public static Test suite() throws Exception
    {
+      try
+      {
+         System.err.println(ResourceManager.getInitialEnvironment(null));
+         InitialContext ctx = new InitialContext();
+      }
+      catch(Throwable t)
+      {
+         t.printStackTrace();
+      }
       return getDeploySetup(IiopRemoteUnitTestCase.class, "iiop.jar");
    }
 




More information about the jboss-cvs-commits mailing list