Author: jsdelfino
Date: Thu Jan 24 17:05:58 2008
New Revision: 615091

URL: http://svn.apache.org/viewvc?rev=615091&view=rev
Log:
Allow a widget to serve resources in its containing folder.

Modified:
    
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationInvoker.java
    
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationProvider.java

Modified: 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationInvoker.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationInvoker.java?rev=615091&r1=615090&r2=615091&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationInvoker.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationInvoker.java
 Thu Jan 24 17:05:58 2008
@@ -41,11 +41,15 @@
  */
 class WidgetImplementationInvoker implements Invoker {
     private RuntimeComponent component;
-    private String locationURL;
+    private String widgetName;
+    private String widgetFolderURL;
+    private String widgetLocationURL;
     
-    WidgetImplementationInvoker(RuntimeComponent component, String 
locationURL) {
+    WidgetImplementationInvoker(RuntimeComponent component, String widgetName, 
String widgetFolderURL, String widgetLocationURL) {
         this.component = component;
-        this.locationURL = locationURL;
+        this.widgetName = widgetName + ".js";
+        this.widgetFolderURL = widgetFolderURL;
+        this.widgetLocationURL = widgetLocationURL;
     }
     
     public Message invoke(Message msg) {
@@ -54,7 +58,14 @@
         String id = (String)((Object[])msg.getBody())[0];
         try {
             
-            if (id.endsWith(".js")) {
+            if (id.length() == 0) {
+
+                // Return an input stream for the widget resource
+                URL url = new URL(widgetLocationURL);
+                InputStream is = url.openStream();
+                msg.setBody(is);
+                
+            } else if (id.equals(widgetName)) {
                 
                 // Generate Javascript header for use in the Widget
                 InputStream is = generateWidgetCode();
@@ -62,8 +73,9 @@
                 
             } else {
 
-                // Return an input stream for a resource
-                URL url = new URL(locationURL +'/' + id);
+                // Return an input stream for a resource inside the
+                // widget folder
+                URL url = new URL(widgetFolderURL +'/' + id);
                 InputStream is = url.openStream();
                 msg.setBody(is);
             }

Modified: 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationProvider.java?rev=615091&r1=615090&r2=615091&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationProvider.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/provider/WidgetImplementationProvider.java
 Thu Jan 24 17:05:58 2008
@@ -31,18 +31,24 @@
  */
 class WidgetImplementationProvider implements ImplementationProvider {
     private RuntimeComponent component;
-    private WidgetImplementation implementation;
+    private String widgetLocationURL;
+    private String widgetFolderURL;
+    private String widgetName;
 
     /**
      * Constructs a new resource implementation provider.
      */
     WidgetImplementationProvider(RuntimeComponent component, 
WidgetImplementation implementation) {
         this.component = component;
-        this.implementation = implementation;
+        widgetLocationURL = implementation.getLocationURL().toString();
+        int s = widgetLocationURL.lastIndexOf('/');
+        widgetFolderURL = widgetLocationURL.substring(0, s);
+        widgetName = widgetLocationURL.substring(s +1);
+        widgetName = widgetName.substring(0, widgetName.lastIndexOf('.'));
     }
 
     public Invoker createInvoker(RuntimeComponentService service, Operation 
operation) {
-        WidgetImplementationInvoker invoker = new 
WidgetImplementationInvoker(component, 
implementation.getLocationURL().toString());
+        WidgetImplementationInvoker invoker = new 
WidgetImplementationInvoker(component, widgetName, widgetFolderURL, 
widgetLocationURL);
         return invoker;
     }
     



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to