Author: andygumbrecht
Date: Thu Aug 1 09:03:56 2013
New Revision: 1509131
URL: http://svn.apache.org/r1509131
Log:
Really fix backwards compatibility for ejbd. The order of read and write can
only ever be changed 'after' the version has been written.
NOTE: The best place to append new features is in
org.apache.openejb.client.EJBRequest.Body
Modified:
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
tomee/tomee/trunk/server/openejb-client/src/test/java/org/apache/openejb/client/EJBRequestTest.java
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
Modified:
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
(original)
+++
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
Thu Aug 1 09:03:56 2013
@@ -29,8 +29,8 @@ import java.util.Properties;
public class ConnectionManager {
- private static Registry<ConnectionFactory> factories =
Registry.create(ConnectionFactory.class);
- private static Registry<ConnectionStrategy> strategies =
Registry.create(ConnectionStrategy.class);
+ private static final Registry<ConnectionFactory> factories =
Registry.create(ConnectionFactory.class);
+ private static final Registry<ConnectionStrategy> strategies =
Registry.create(ConnectionStrategy.class);
static {
final SocketConnectionFactory ejbdFactory = new
SocketConnectionFactory();
@@ -59,8 +59,12 @@ public class ConnectionManager {
}
public static Connection getConnection(final ClusterMetaData cluster,
final ServerMetaData server, final Request req) throws IOException {
- if (cluster == null) throw new IllegalArgumentException("cluster
cannot be null");
- if (server == null) throw new IllegalArgumentException("server cannot
be null");
+ if (cluster == null) {
+ throw new IllegalArgumentException("cluster cannot be null");
+ }
+ if (server == null) {
+ throw new IllegalArgumentException("server cannot be null");
+ }
String name = cluster.getConnectionStrategy();
@@ -70,7 +74,9 @@ public class ConnectionManager {
name = p.getProperty("openejb.client.connection.strategy", name);
}
- if (name == null) name = "default";
+ if (name == null) {
+ name = "default";
+ }
final ConnectionStrategy strategy = strategies.get(name);
if (strategy == null) {
@@ -91,7 +97,9 @@ public class ConnectionManager {
}
public static Connection getConnection(final URI uri) throws IOException {
- if (uri == null) throw new IllegalArgumentException("uri cannot be
null");
+ if (uri == null) {
+ throw new IllegalArgumentException("uri cannot be null");
+ }
final String scheme = uri.getScheme();
final ConnectionFactory factory = factories.get(scheme);
@@ -154,6 +162,7 @@ public class ConnectionManager {
@Log(Log.Level.SEVERE)
public static class UnsupportedConnectionStrategyException extends
IOException {
+
public UnsupportedConnectionStrategyException(final String message) {
super(message);
}
@@ -161,6 +170,7 @@ public class ConnectionManager {
@Log(Log.Level.SEVERE)
public static class UnsupportedConnectionFactoryException extends
IOException {
+
public UnsupportedConnectionFactoryException(final String message) {
super(message);
}
Modified:
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
(original)
+++
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
Thu Aug 1 09:03:56 2013
@@ -140,7 +140,11 @@ public abstract class EJBObjectHandler e
super(ejb, server, client, null, auth);
}
- public EJBObjectHandler(final EJBMetaDataImpl ejb, final ServerMetaData
server, final ClientMetaData client, final Object primaryKey, final
JNDIContext.AuthenticationInfo auth) {
+ public EJBObjectHandler(final EJBMetaDataImpl ejb,
+ final ServerMetaData server,
+ final ClientMetaData client,
+ final Object primaryKey,
+ final JNDIContext.AuthenticationInfo auth) {
super(ejb, server, client, primaryKey, auth);
}
@@ -148,7 +152,11 @@ public abstract class EJBObjectHandler e
this.ejbHome = ejbHome;
}
- public static EJBObjectHandler createEJBObjectHandler(final
EJBMetaDataImpl ejb, final ServerMetaData server, final ClientMetaData client,
final Object primaryKey, final JNDIContext.AuthenticationInfo auth) {
+ public static EJBObjectHandler createEJBObjectHandler(final
EJBMetaDataImpl ejb,
+ final ServerMetaData
server,
+ final ClientMetaData
client,
+ final Object
primaryKey,
+ final
JNDIContext.AuthenticationInfo auth) {
switch (ejb.type) {
case EJBMetaDataImpl.BMP_ENTITY:
@@ -332,8 +340,9 @@ public abstract class EJBObjectHandler e
final EJBRequest req = new
EJBRequest(RequestMethodCode.EJB_OBJECT_BUSINESS_METHOD, ejb, method, args,
primaryKey, client.getSerializer());
//Currently, we only set the requestId while the asynchronous
invocation is called
- req.getBody().setRequestId(requestId);
- req.setAuthentication(this.authenticationInfo);
+ final EJBRequest.Body body = req.getBody();
+ body.setRequestId(requestId);
+ body.setAuthentication(this.authenticationInfo);
final EJBResponse res = request(req);
return _handleBusinessMethodResponse(res);
}
@@ -456,7 +465,12 @@ public abstract class EJBObjectHandler e
if
(lastMayInterruptIfRunningValue.getAndSet(mayInterruptIfRunning) ==
mayInterruptIfRunning) {
return false;
}
- final EJBRequest req = new
EJBRequest(RequestMethodCode.FUTURE_CANCEL, ejb, CANCEL, new
Object[]{Boolean.valueOf(mayInterruptIfRunning)}, primaryKey,
client.getSerializer());
+ final EJBRequest req = new
EJBRequest(RequestMethodCode.FUTURE_CANCEL,
+ ejb,
+ CANCEL,
+ new
Object[]{Boolean.valueOf(mayInterruptIfRunning)},
+ primaryKey,
+
client.getSerializer());
req.getBody().setRequestId(requestId);
try {
final EJBResponse res = request(req);
Modified:
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
(original)
+++
tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/EJBRequest.java
Thu Aug 1 09:03:56 2013
@@ -45,8 +45,6 @@ public class EJBRequest implements Clust
// Only visible on the client side
private transient final EJBMetaDataImpl ejbMetaData;
- private transient JNDIContext.AuthenticationInfo authentication;
-
public static final int SESSION_BEAN_STATELESS = 6;
public static final int SESSION_BEAN_STATEFUL = 7;
public static final int ENTITY_BM_PERSISTENCE = 8;
@@ -63,11 +61,12 @@ public class EJBRequest implements Clust
final Object[] args,
final Object primaryKey,
final EJBDSerializer serializer) {
- body = new Body(ejb);
+ this.body = new Body(ejb);
this.serializer = serializer;
this.ejbMetaData = ejb;
this.requestMethod = requestMethod;
+
setDeploymentCode(ejb.deploymentCode);
setDeploymentId(ejb.deploymentID);
setMethodInstance(method);
@@ -165,8 +164,136 @@ public class EJBRequest implements Clust
this.serializer = serializer;
}
- public void setAuthentication(final JNDIContext.AuthenticationInfo
authentication) {
- this.authentication = authentication;
+ @Override
+ public RequestType getRequestType() {
+ return RequestType.EJB_REQUEST;
+ }
+
+ public RequestMethodCode getRequestMethod() {
+ return requestMethod;
+ }
+
+ public Object getClientIdentity() {
+ return clientIdentity;
+ }
+
+ public String getDeploymentId() {
+ return deploymentId;
+ }
+
+ public int getDeploymentCode() {
+ return deploymentCode;
+ }
+
+ public void setRequestMethod(final RequestMethodCode requestMethod) {
+ this.requestMethod = requestMethod;
+ }
+
+ public void setClientIdentity(final Object clientIdentity) {
+ this.clientIdentity = clientIdentity;
+ }
+
+ public void setDeploymentId(final String deploymentId) {
+ this.deploymentId = deploymentId;
+ }
+
+ public void setDeploymentCode(final int deploymentCode) {
+ this.deploymentCode = deploymentCode;
+ }
+
+ @Override
+ public void setServerHash(final int serverHash) {
+ this.serverHash = serverHash;
+ }
+
+ @Override
+ public int getServerHash() {
+ return serverHash;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("EJBRequest{");
+ sb.append("deploymentId='");
+ sb.append(deploymentId);
+ sb.append("'");
+
+ if (requestMethod != null) {
+ sb.append(", type=").append(requestMethod);
+ }
+ if (body != null) {
+ sb.append(", ").append(body.toString());
+ }
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /*
+ When the Request externalizes itself, it will reset
+ the appropriate values so that this instance can be used
+ again.
+
+ There will be one request instance for each handler
+ */
+
+ @Override
+ public void readExternal(final ObjectInput in) throws IOException,
ClassNotFoundException {
+
+ ClassNotFoundException ex = null;
+
+ deploymentId = null;
+ deploymentCode = -1;
+ clientIdentity = null;
+
+ final int code = in.readByte();
+ try {
+ requestMethod = RequestMethodCode.valueOf(code);
+ } catch (IllegalArgumentException iae) {
+ throw new IOException("Invalid request code " + code);
+ }
+ try {
+ deploymentId = (String) in.readObject();
+ } catch (ClassNotFoundException cnfe) {
+ ex = cnfe;
+ }
+ deploymentCode = in.readShort();
+ try {
+ clientIdentity = in.readObject();
+ } catch (ClassNotFoundException cnfe) {
+ if (ex == null) {
+ ex = cnfe;
+ }
+ }
+ serverHash = in.readInt();
+
+ if (ex != null) {
+ throw ex;
+ }
+ }
+
+ /**
+ * Write to server.
+ * WARNING: To maintain backwards compatibility never change the order or
insert new writes, always append to
+ * {@link
org.apache.openejb.client.EJBRequest.Body#writeExternal(java.io.ObjectOutput)}
+ *
+ * @param out ObjectOutput
+ * @throws IOException
+ */
+ @Override
+ public void writeExternal(final ObjectOutput out) throws IOException {
+ out.writeByte(requestMethod.getCode());
+
+ if (deploymentCode > 0) {
+ out.writeObject(null);
+ } else {
+ out.writeObject(deploymentId);
+ }
+
+ out.writeShort(deploymentCode);
+ out.writeObject(clientIdentity);
+ out.writeInt(serverHash);
+ body.writeExternal(out);
}
public static class Body implements java.io.Externalizable {
@@ -184,6 +311,8 @@ public class EJBRequest implements Clust
private transient String requestId;
private byte version = EJBResponse.VERSION;
+ private transient JNDIContext.AuthenticationInfo authentication;
+
public Body(final EJBMetaDataImpl ejb) {
this.ejb = ejb;
}
@@ -195,6 +324,14 @@ public class EJBRequest implements Clust
return version;
}
+ public void setAuthentication(final JNDIContext.AuthenticationInfo
authentication) {
+ this.authentication = authentication;
+ }
+
+ public JNDIContext.AuthenticationInfo getAuthentication() {
+ return authentication;
+ }
+
public Method getMethodInstance() {
return methodInstance;
}
@@ -306,6 +443,11 @@ public class EJBRequest implements Clust
}
}
+ //Version 3
+ if (this.version >= 3) {
+ authentication =
JNDIContext.AuthenticationInfo.class.cast(in.readObject());
+ }
+
if (result != null) {
throw result;
}
@@ -325,6 +467,9 @@ public class EJBRequest implements Clust
out.writeUTF(methodName);
writeMethodParameters(out, methodParamTypes, methodParameters);
+
+ //Version 3
+ out.writeObject(authentication);
}
protected void writeMethodParameters(final ObjectOutput out, final
Class[] types, final Object[] args) throws IOException {
@@ -407,14 +552,14 @@ public class EJBRequest implements Clust
* @throws java.io.IOException On error
*/
protected ORB getORB() throws IOException {
- // first ORB request? Check our various sources
+ // first ORB request? Check our various sources
if (orb == null) {
try {
final Context initialContext = new InitialContext();
orb = (ORB) initialContext.lookup("java:comp/ORB");
} catch (Throwable e) {
try {
- // any orb will do if we can't get a context one.
+ // any orb will do if we can't get a context one.
orb = ORB.init();
} catch (Throwable ex) {
throw new IOException("Unable to connect
PortableRemoteObject stub to an ORB, no ORB bound to java:comp/ORB");
@@ -534,142 +679,5 @@ public class EJBRequest implements Clust
return toString;
}
}
-
- @Override
- public RequestType getRequestType() {
- return RequestType.EJB_REQUEST;
- }
-
- public RequestMethodCode getRequestMethod() {
- return requestMethod;
- }
-
- public Object getClientIdentity() {
- return clientIdentity;
- }
-
- public String getDeploymentId() {
- return deploymentId;
- }
-
- public int getDeploymentCode() {
- return deploymentCode;
- }
-
- public void setRequestMethod(final RequestMethodCode requestMethod) {
- this.requestMethod = requestMethod;
- }
-
- public void setClientIdentity(final Object clientIdentity) {
- this.clientIdentity = clientIdentity;
- }
-
- public void setDeploymentId(final String deploymentId) {
- this.deploymentId = deploymentId;
- }
-
- public void setDeploymentCode(final int deploymentCode) {
- this.deploymentCode = deploymentCode;
- }
-
- @Override
- public void setServerHash(final int serverHash) {
- this.serverHash = serverHash;
- }
-
- @Override
- public int getServerHash() {
- return serverHash;
- }
-
- public JNDIContext.AuthenticationInfo getAuthentication() {
- return authentication;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("EJBRequest{");
- sb.append("deploymentId='");
- sb.append(deploymentId);
- sb.append("'");
-
- if (requestMethod != null) {
- sb.append(", type=").append(requestMethod);
- }
- if (body != null) {
- sb.append(", ").append(body.toString());
- }
- sb.append("}");
- return sb.toString();
- }
-
- /*
- When the Request externalizes itself, it will reset
- the appropriate values so that this instance can be used
- again.
-
- There will be one request instance for each handler
- */
-
- @Override
- public void readExternal(final ObjectInput in) throws IOException,
ClassNotFoundException {
- ClassNotFoundException result = null;
-
- deploymentId = null;
- deploymentCode = -1;
- clientIdentity = null;
-
- final int code = in.readByte();
- try {
- requestMethod = RequestMethodCode.valueOf(code);
- } catch (IllegalArgumentException iae) {
- throw new IOException("Invalid request code " + code);
- }
- try {
- deploymentId = (String) in.readObject();
- } catch (ClassNotFoundException cnfe) {
- result = cnfe;
- }
- deploymentCode = in.readShort();
- try {
- clientIdentity = in.readObject();
- } catch (ClassNotFoundException cnfe) {
- if (result == null) {
- result = cnfe;
- }
- }
- serverHash = in.readInt();
-
- if (this.getVersion() >= 3) {
- authentication =
JNDIContext.AuthenticationInfo.class.cast(in.readObject());
- }
-
- if (result != null) {
- throw result;
- }
- }
-
- @Override
- public void writeExternal(final ObjectOutput out) throws IOException {
- out.writeByte(requestMethod.getCode());
-
- if (deploymentCode > 0) {
- out.writeObject(null);
- } else {
- out.writeObject(deploymentId);
- }
-
- out.writeShort(deploymentCode);
- out.writeObject(clientIdentity);
- out.writeInt(serverHash);
-
- if (this.getVersion() >= 3) {
- out.writeObject(authentication);
- }
-
- body.writeExternal(out);
- }
-
}
Modified:
tomee/tomee/trunk/server/openejb-client/src/test/java/org/apache/openejb/client/EJBRequestTest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/test/java/org/apache/openejb/client/EJBRequestTest.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-client/src/test/java/org/apache/openejb/client/EJBRequestTest.java
(original)
+++
tomee/tomee/trunk/server/openejb-client/src/test/java/org/apache/openejb/client/EJBRequestTest.java
Thu Aug 1 09:03:56 2013
@@ -16,144 +16,159 @@
*/
package org.apache.openejb.client;
-import java.io.*;
-import java.lang.reflect.Method;
+import junit.framework.TestCase;
+import org.omg.CORBA.UserException;
+
import javax.ejb.EJBHome;
import javax.ejb.EJBObject;
import javax.ejb.Handle;
-
-import junit.framework.TestCase;
-import org.omg.CORBA.UserException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Method;
public class EJBRequestTest extends TestCase {
+
private EJBMetaDataImpl ejb;
static interface FooHome extends EJBHome {
+
FooObject create();
+
FooObject findByPrimaryKey(Integer key);
}
- static interface FooObject extends EJBObject{
+
+ static interface FooObject extends EJBObject {
+
String businessMethod(String param) throws UserException;
}
-
+ @Override
protected void setUp() throws Exception {
ejb = new EJBMetaDataImpl(FooHome.class, FooObject.class,
Integer.class, "BMP_ENTITY", "FooBeanID", InterfaceType.BUSINESS_REMOTE, null,
null);
}
public void testEJBHomeCreate() throws Exception {
- RequestMethodCode requestMethod = RequestMethodCode.EJB_HOME_CREATE;
- Method method = FooHome.class.getMethod("create", new Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_CREATE;
+ final Method method = FooHome.class.getMethod("create", new Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testEJBHomeFind() throws Exception {
- RequestMethodCode requestMethod = RequestMethodCode.EJB_HOME_FIND;
- Method method = FooHome.class.getMethod("findByPrimaryKey", new
Class[]{Integer.class});
- Object[] args = new Object[]{new Integer(4)};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_FIND;
+ final Method method = FooHome.class.getMethod("findByPrimaryKey", new
Class[]{Integer.class});
+ final Object[] args = new Object[]{4};
invoke(requestMethod, method, args);
}
public void testEJBHomeRemove1() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_REMOVE_BY_HANDLE;
- Method method = FooHome.class.getMethod("remove", new
Class[]{Handle.class});
- Object[] args = new Object[]{null};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_REMOVE_BY_HANDLE;
+ final Method method = FooHome.class.getMethod("remove", new
Class[]{Handle.class});
+ final Object[] args = new Object[]{null};
invoke(requestMethod, method, args);
}
public void testEJBHomeRemove2() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_REMOVE_BY_PKEY;
- Method method = FooHome.class.getMethod("remove", new
Class[]{Object.class});
- Object[] args = new Object[]{new Integer(4)};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_REMOVE_BY_PKEY;
+ final Method method = FooHome.class.getMethod("remove", new
Class[]{Object.class});
+ final Object[] args = new Object[]{4};
invoke(requestMethod, method, args);
}
public void testGetMetaData() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_GET_EJB_META_DATA;
- Method method = FooHome.class.getMethod("getEJBMetaData", new
Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_GET_EJB_META_DATA;
+ final Method method = FooHome.class.getMethod("getEJBMetaData", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testGetHomeHandle() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_GET_HOME_HANDLE;
- Method method = FooHome.class.getMethod("getHomeHandle", new
Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_HOME_GET_HOME_HANDLE;
+ final Method method = FooHome.class.getMethod("getHomeHandle", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testBusinessMethod() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_BUSINESS_METHOD;
- Method method = FooObject.class.getMethod("businessMethod", new
Class[]{String.class});
- Object[] args = new Object[]{"hola mundo"};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_BUSINESS_METHOD;
+ final Method method = FooObject.class.getMethod("businessMethod", new
Class[]{String.class});
+ final Object[] args = new Object[]{"hola mundo"};
invoke(requestMethod, method, args);
}
public void testGetEJBHome() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_EJB_HOME;
- Method method = FooObject.class.getMethod("getEJBHome", new Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_EJB_HOME;
+ final Method method = FooObject.class.getMethod("getEJBHome", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testGetHandle() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_HANDLE;
- Method method = FooObject.class.getMethod("getHandle", new Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_HANDLE;
+ final Method method = FooObject.class.getMethod("getHandle", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testGetPrimaryKey() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_PRIMARY_KEY;
- Method method = FooObject.class.getMethod("getPrimaryKey", new
Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_GET_PRIMARY_KEY;
+ final Method method = FooObject.class.getMethod("getPrimaryKey", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
public void testIsIdentical() throws Exception {
- RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_IS_IDENTICAL;
- Method method = FooObject.class.getMethod("isIdentical", new
Class[]{EJBObject.class});
- Object[] args = new Object[]{null};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_IS_IDENTICAL;
+ final Method method = FooObject.class.getMethod("isIdentical", new
Class[]{EJBObject.class});
+ final Object[] args = new Object[]{null};
invoke(requestMethod, method, args);
}
public void testEJBObjectRemove() throws Exception {
- RequestMethodCode requestMethod = RequestMethodCode.EJB_OBJECT_REMOVE;
- Method method = FooObject.class.getMethod("remove", new Class[]{});
- Object[] args = new Object[]{};
+ final RequestMethodCode requestMethod =
RequestMethodCode.EJB_OBJECT_REMOVE;
+ final Method method = FooObject.class.getMethod("remove", new
Class[]{});
+ final Object[] args = new Object[]{};
invoke(requestMethod, method, args);
}
- private void invoke(RequestMethodCode requestMethod, Method method,
Object[] args) throws IOException, ClassNotFoundException {
- EJBRequest expected = new EJBRequest(requestMethod, ejb, method, args,
null, null);
+ private void invoke(final RequestMethodCode requestMethod, final Method
method, final Object[] args) throws IOException, ClassNotFoundException {
+
+ final EJBRequest expected = new EJBRequest(requestMethod, ejb, method,
args, null, null);
+ expected.getBody().setAuthentication(new
JNDIContext.AuthenticationInfo("realm", "user", new char[]{'p', 'w'}));
- EJBRequest actual = new EJBRequest();
+ final EJBRequest actual = new EJBRequest();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(baos);
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final ObjectOutputStream out = new ObjectOutputStream(baos);
expected.writeExternal(out);
out.close();
- ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
- ObjectInputStream in = new ObjectInputStream(bais);
+ final ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
+ final ObjectInputStream in = new ObjectInputStream(bais);
actual.readExternal(in);
actual.getBody().readExternal(in);
+ final JNDIContext.AuthenticationInfo authentication =
actual.getBody().getAuthentication();
+ assertNotNull(authentication);
+ assertEquals("AuthenticationInfo.Realm", "realm",
authentication.getRealm());
+ assertEquals("AuthenticationInfo.User", "user",
authentication.getUser());
assertEquals("RequestType", expected.getRequestType(),
actual.getRequestType());
assertEquals("RequestMethod", expected.getRequestMethod(),
actual.getRequestMethod());
@@ -169,19 +184,14 @@ public class EJBRequestTest extends Test
assertEquals("MethodInstance", expected.getMethodInstance(),
actual.getMethodInstance());
- Object[] expectedParams = expected.getMethodParameters();
- Object[] actualParams = actual.getMethodParameters();
+ final Object[] expectedParams = expected.getMethodParameters();
+ final Object[] actualParams = actual.getMethodParameters();
- assertNotNull("MethodParameters",actualParams);
+ assertNotNull("MethodParameters", actualParams);
assertEquals("MethodParameters.length", expectedParams.length,
actualParams.length);
for (int i = 0; i < expectedParams.length; i++) {
- assertEquals("MethodParameters."+i, expectedParams[i],
actualParams[i]);
+ assertEquals("MethodParameters." + i, expectedParams[i],
actualParams[i]);
}
}
-
-
-
-
-
}
\ No newline at end of file
Modified:
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
(original)
+++
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
Thu Aug 1 09:03:56 2013
@@ -339,7 +339,7 @@ public class EjbDaemon implements org.ap
}
@Override
- public Serializable serialize(Object o) {
+ public Serializable serialize(final Object o) {
return instance().serialize(o);
}
Modified:
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java?rev=1509131&r1=1509130&r2=1509131&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
(original)
+++
tomee/tomee/trunk/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
Thu Aug 1 09:03:56 2013
@@ -126,6 +126,8 @@ class EjbRequestHandler {
res.start(EJBResponse.Time.DESERIALIZATION);
req.getBody().readExternal(in);
+
+ //Client version retrieved from body
version = req.getVersion();
res.stop(EJBResponse.Time.DESERIALIZATION);
@@ -157,7 +159,7 @@ class EjbRequestHandler {
Object securityToken = null;
try {
if (version >= 3) { // login if needed with request
- final JNDIContext.AuthenticationInfo authentication =
req.getAuthentication();
+ final JNDIContext.AuthenticationInfo authentication =
req.getBody().getAuthentication();
if (authentication != null) {
try {
securityToken =
securityService.login(authentication.getRealm(), authentication.getUser(), new
String(authentication.getPassword()));