Author: antelder
Date: Sat May 17 04:18:24 2008
New Revision: 657331

URL: http://svn.apache.org/viewvc?rev=657331&view=rev
Log:
Start of getting cross webapp endpoints going

Modified:
    incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/EndpointProviderImpl.java
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java

Modified: incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml?rev=657331&r1=657330&r2=657331&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml Sat May 17 
04:18:24 2008
@@ -61,6 +61,12 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-runtime</artifactId>
                <version>2.0-incubating-SNAPSHOT</version>
+            <exclusions>
+               <exclusion>
+                  <groupId>org.apache.tuscany.sca</groupId>
+                  <artifactId>tuscany-endpoint</artifactId>
+               </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>

Modified: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/EndpointProviderImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/EndpointProviderImpl.java?rev=657331&r1=657330&r2=657331&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/EndpointProviderImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/EndpointProviderImpl.java
 Sat May 17 04:18:24 2008
@@ -21,8 +21,16 @@
 
 import java.util.logging.Logger;
 
+import org.apache.catalina.core.StandardContext;
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.builder.DefaultEndpointBuilder;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain;
+import org.apache.tuscany.sca.host.webapp.WebAppServletHost;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.Problem;
 import org.apache.tuscany.sca.provider.EndpointProvider;
 
 /** 
@@ -43,10 +51,43 @@
 
     public void start() {
         if (endpoint.isUnresolved()){
-            // Resolve the endpoint binding here
-            
             logger.info("resolving endpoint: " + endpoint.getTargetName());
+
+            Component target = findTarget();
+            if (target != null) {
+                logger.info("endpoint target found: " + 
endpoint.getTargetName() + " component " + target);
+                resolveEndpoint(target);
+            } else {
+                logger.info("endpoint target not found: " + 
endpoint.getTargetName());
+            }
+            
+        }
+    }
+
+    protected void resolveEndpoint(Component targetComponent) {
+        
+        endpoint.setTargetComponent(targetComponent);
+        
endpoint.setTargetComponentService(targetComponent.getServices().get(0)); // 
TODO real service
+
+        DefaultEndpointBuilder ebi = new DefaultEndpointBuilder(new Monitor() {
+            public void problem(Problem problem) {
+                logger.warning(problem.toString());
+            }});
+
+        ebi.build(endpoint);
+    }
+
+    protected Component findTarget() {
+        for (StandardContext sc : TuscanyHost.scaApps) {
+            SCADomain scaDomain = 
(SCADomain)sc.getServletContext().getAttribute(WebAppServletHost.SCA_DOMAIN_ATTRIBUTE);
+            if (scaDomain != null) {
+                Component component = 
((DefaultSCADomain)scaDomain).getComponent(endpoint.getTargetName());
+                if ( component != null) {
+                    return component;
+                }
+            }
         }
+        return null;
     }
 
     public void stop() {

Modified: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java?rev=657331&r1=657330&r2=657331&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
 Sat May 17 04:18:24 2008
@@ -21,6 +21,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.jar.JarFile;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -50,6 +52,9 @@
 public class TuscanyHost extends StandardHost {
     private static final long serialVersionUID = 1L;
     private final static Logger logger = 
Logger.getLogger(TuscanyHost.class.getName());
+    
+    // TODO static for expedience, find a better way to share when/if this is 
working properly
+    protected static List<StandardContext> scaApps = new 
ArrayList<StandardContext>();
 
     public synchronized void start() throws LifecycleException {
         try {
@@ -142,6 +147,8 @@
         filterMap.setFilterName(filterDef.getFilterName());
         filterMap.addURLPattern("/*");
         scaApp.addFilterMap(filterMap);
+
+        scaApps.add(scaApp);
     }
 
 }


Reply via email to