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 2007/05/04 23:39:17 UTC
svn commit: r535388 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb:
DeploymentInfo.java assembler/classic/AssemblerTool.java
config/AnnotationDeployer.java core/CoreDeploymentInfo.java
Author: dblevins
Date: Fri May 4 14:39:17 2007
New Revision: 535388
URL: http://svn.apache.org/viewvc?view=rev&rev=535388
Log:
Fixed ServiceEndpoint TX method attribute processing (also tweaked business local and business remote)
Added new DeploymentInfo.ServiceEndpoint interface and tweaked mapping to handle it.
Support for @WebService.endpointInterface.
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AssemblerTool.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java?view=diff&rev=535388&r1=535387&r2=535388
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DeploymentInfo.java Fri May 4 14:39:17 2007
@@ -136,6 +136,9 @@
Object create();
}
+ public interface ServiceEndpoint {
+ }
+
public <T> T get(Class<T> type);
public <T> T set(Class<T> type, T value);
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AssemblerTool.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AssemblerTool.java?view=diff&rev=535388&r1=535387&r2=535388
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AssemblerTool.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AssemblerTool.java Fri May 4 14:39:17 2007
@@ -81,6 +81,9 @@
if(deploymentInfo.getMdbInterface() != null) {
resolveMethods(methods, deploymentInfo.getMdbInterface(), methodInfo);
}
+ if(deploymentInfo.getServiceEndpointInterface() != null) {
+ resolveMethods(methods, deploymentInfo.getServiceEndpointInterface(), methodInfo);
+ }
for (Class intf : deploymentInfo.getBusinessRemoteInterfaces()) {
resolveMethods(methods, intf, methodInfo);
}
@@ -91,10 +94,18 @@
resolveMethods(methods, deploymentInfo.getHomeInterface(), methodInfo);
} else if (methodInfo.methodIntf.equals("Remote")) {
resolveMethods(methods, deploymentInfo.getRemoteInterface(), methodInfo);
+ for (Class intf : deploymentInfo.getBusinessRemoteInterfaces()) {
+ resolveMethods(methods, intf, methodInfo);
+ }
} else if (methodInfo.methodIntf.equals("LocalHome")) {
resolveMethods(methods, deploymentInfo.getLocalHomeInterface(), methodInfo);
} else if (methodInfo.methodIntf.equals("Local")) {
resolveMethods(methods, deploymentInfo.getLocalInterface(), methodInfo);
+ for (Class intf : deploymentInfo.getBusinessRemoteInterfaces()) {
+ resolveMethods(methods, intf, methodInfo);
+ }
+ } else if (methodInfo.methodIntf.equals("ServiceEndpoint")) {
+ resolveMethods(methods, deploymentInfo.getServiceEndpointInterface(), methodInfo);
}
for (Method method : methods) {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?view=diff&rev=535388&r1=535387&r2=535388
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Fri May 4 14:39:17 2007
@@ -17,6 +17,7 @@
package org.apache.openejb.config;
import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.DeploymentInfo;
import org.apache.openejb.jee.ActivationConfig;
import org.apache.openejb.jee.ApplicationClient;
import org.apache.openejb.jee.AroundInvoke;
@@ -101,6 +102,7 @@
import javax.persistence.PersistenceUnits;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceRefs;
+import javax.jws.WebService;
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -605,22 +607,25 @@
}
}
- // todo This is not a real JEE annotation
- // List<Class<?>> endpoints = new ArrayList<Class<?>>();
- ServiceEndpoint endpoint = clazz.getAnnotation(ServiceEndpoint.class);
- if (endpoint != null) {
- for (Class<?> interfce : endpoint.value()) {
- // endpoints.add(interfce);
- interfaces.remove(interfce);
+ WebService webService = clazz.getAnnotation(WebService.class);
+ if (webService != null && sessionBean.getServiceEndpoint() == null){
+ String endpointInterfaceName = webService.endpointInterface();
+ if (!endpointInterfaceName.equals("")){
+ try {
+ sessionBean.setServiceEndpoint(endpointInterfaceName);
+ Class endpointInterface = Class.forName(endpointInterfaceName, false, ejbModule.getClassLoader());
+ interfaces.remove(endpointInterface);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalStateException("Class not found @WebService.endpointInterface: "+endpointInterfaceName, e);
+ }
+ } else {
+ sessionBean.setServiceEndpoint(DeploymentInfo.ServiceEndpoint.class.getName());
}
}
for (Class interfce : copy(interfaces)) {
if (interfce.isAnnotationPresent(Remote.class)) {
remotes.add(interfce);
- interfaces.remove(interfce);
- } else if (interfce.isAnnotationPresent(ServiceEndpoint.class)) {
- // endpoints.add(interfce);
interfaces.remove(interfce);
} else {
locals.add(interfce);
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=535388&r1=535387&r2=535388
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Fri May 4 14:39:17 2007
@@ -737,11 +737,16 @@
mapObjectInterface(remoteInterface);
mapHomeInterface(homeInterface);
}
+
if (localInterface != null) {
mapObjectInterface(localInterface);
mapHomeInterface(localHomeInterface);
}
+ if (serviceEndpointInterface != null) {
+ mapObjectInterface(serviceEndpointInterface);
+ }
+
for (Class businessLocal : businessLocals) {
mapObjectInterface(businessLocal);
}
@@ -859,7 +864,7 @@
}
private void mapObjectInterface(Class intrface) {
- if (intrface == BusinessLocalHome.class || intrface == BusinessRemoteHome.class){
+ if (intrface == BusinessLocalHome.class || intrface == BusinessRemoteHome.class || intrface == ServiceEndpoint.class){
return;
}