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;
         }