[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