You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2006/02/23 10:39:01 UTC

svn commit: r380074 - in /incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model: assembly/impl/ assembly/loader/ scdl/loader/impl/

Author: jsdelfino
Date: Thu Feb 23 01:38:52 2006
New Revision: 380074

URL: http://svn.apache.org/viewcvs?rev=380074&view=rev
Log:
SCDL loader bug fixes

Added:
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java   (with props)
Modified:
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java?rev=380074&r1=380073&r2=380074&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java Thu Feb 23 01:38:52 2006
@@ -161,39 +161,6 @@
                     configuredProperty.initialize(modelContext);
                 }
     
-    //            if (super.getPropertyValues() != null) {
-    //                Sequence sequence = super.getPropertyValues().getAny();
-    //                for (int p = 0, n = sequence.size(); p < n; p++) {
-    //
-    //                    // Get each property value element
-    //                    commonj.sdo.Property propertyElementDef = sequence.getProperty(p);
-    //                    DataObject propertyElement = (DataObject) sequence.getValue(p);
-    //
-    //                    // Get the corresponding property definition
-    //                    String propertyName = propertyElementDef.getName();
-    //                    Property property = implementation.getProperty(propertyName);
-    //                    if (property == null) {
-    //                        throw new IllegalArgumentException("Undefined property " + propertyName);
-    //                    }
-    //
-    //                    // Create a property value object
-    //                    ConfiguredProperty propertyValue = factory.createConfiguredProperty();
-    //                    propertyValue.setComponent(this);
-    //                    propertyValue.setProperty(property);
-    //
-    //                    // Get the property value text and convert to the expected java type
-    //                    Sequence text = propertyElement.getSequence(0);
-    //                    if (text != null && text.size() != 0) {
-    //                        Object rawValue = text.getValue(0);
-    //                        propertyValue.setValue(rawValue);
-    //                    }
-    //
-    //                    // Add the property value object to the map
-    //                    configuredProperties.add(propertyValue);
-    //                    configuredPropertiesMap.put(propertyName, propertyValue);
-    //                }
-    //            }
-                
             }
         } else {
             

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java?rev=380074&r1=380073&r2=380074&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java Thu Feb 23 01:38:52 2006
@@ -19,6 +19,7 @@
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.ComponentType;
 import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.ModuleFragment;
 import org.apache.tuscany.model.assembly.Subsystem;
 
@@ -61,4 +62,12 @@
      */
     Subsystem getSubsystem(String uri);
 
+    /**
+     * Load a module component.
+     * @param name
+     * @param uri
+     * @return
+     */
+    ModuleComponent loadModuleComponent(String name, String uri);
+    
 }

Added: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java?rev=380074&view=auto
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java (added)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java Thu Feb 23 01:38:52 2006
@@ -0,0 +1,41 @@
+/**
+ * 
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader.impl;
+
+import org.apache.tuscany.common.TuscanyRuntimeException;
+
+/**
+ * The root runtime exception for the model loader.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class AssemblyModelLoadException extends TuscanyRuntimeException {
+
+    public AssemblyModelLoadException() {
+        super();
+    }
+
+    public AssemblyModelLoadException(String message) {
+        super(message);
+    }
+
+    public AssemblyModelLoadException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public AssemblyModelLoadException(Throwable cause) {
+        super(cause);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java?rev=380074&r1=380073&r2=380074&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java Thu Feb 23 01:38:52 2006
@@ -16,37 +16,42 @@
  */
 package org.apache.tuscany.model.scdl.loader.impl;
 
+import java.io.IOException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
-import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.assembly.ComponentType;
 import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.ModuleFragment;
 import org.apache.tuscany.model.assembly.Subsystem;
 import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 import org.apache.tuscany.model.util.ModelTransformer;
 import org.apache.tuscany.model.util.ModelTransformerImpl;
-import org.apache.tuscany.sdo.util.DataObjectUtil;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
  */
 public class SCDLAssemblyModelLoaderImpl implements SCDLAssemblyModelLoader {
     
+    private static final String SCA_MODULE_FILE_NAME = "sca.module";
+    //FIXME can fragments have a variable prefix name?
+    private static final String SCA_FRAGMENT_FILE_NAME = "sca.fragment";
+    
     private SCDLXMLReader xmlReader=new SCDLXMLReader();
     private AssemblyModelContext modelContext;
+    private ResourceLoader resourceLoader;
+    private AssemblyFactory assemblyFactory;
     
     private List<SCDLModelLoader> scdlModelLoaders=new ArrayList<SCDLModelLoader>();
     
-    static {
-        DataObjectUtil.initRuntime();
-    }
-
     /**
      * Constructor
      */
@@ -105,6 +110,45 @@
         org.apache.tuscany.model.scdl.Subsystem scdlSubsystem=xmlReader.getSubsystem(uri);
         
         return transform(scdlSubsystem).getSubsystem();
+    }
+
+    /**
+     * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModuleComponent(java.lang.String, java.lang.String)
+     */
+    public ModuleComponent loadModuleComponent(String name, String uri) throws AssemblyModelLoadException {
+
+        // Load the sca.module file
+        URL url;
+        try {
+            url = resourceLoader.getResource(SCA_MODULE_FILE_NAME);
+        } catch (IOException e) {
+            throw new AssemblyModelLoadException(e);
+        }
+        if (url == null) {
+            throw new AssemblyModelLoadException(SCA_MODULE_FILE_NAME);
+        }
+        Module module=getModule(url.toString());
+
+        // Load the sca.fragment files
+        Iterator<URL> i;
+        try {
+            i = resourceLoader.getAllResources(SCA_FRAGMENT_FILE_NAME);
+        } catch (IOException e) {
+            throw new AssemblyModelLoadException(SCA_FRAGMENT_FILE_NAME, e);
+        }
+        while (i.hasNext()) {
+            ModuleFragment moduleFragment=getModuleFragment(i.next().toString());
+            module.getModuleFragments().add(moduleFragment);
+        }
+
+        // Create the module component
+        ModuleComponent moduleComponent=assemblyFactory.createModuleComponent();
+        moduleComponent.setName(name);
+        moduleComponent.setURI(uri);
+        moduleComponent.setComponentImplementation(module);
+        moduleComponent.initialize(modelContext);
+
+        return moduleComponent;
     }
     
     /**

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java?rev=380074&r1=380073&r2=380074&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java Thu Feb 23 01:38:52 2006
@@ -19,6 +19,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tuscany.model.assembly.Aggregate;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.ComponentImplementation;
@@ -37,6 +38,7 @@
 import org.apache.tuscany.model.scdl.JavaInterface;
 import org.apache.tuscany.model.scdl.Module;
 import org.apache.tuscany.model.scdl.ModuleComponent;
+import org.apache.tuscany.model.scdl.ModuleFragment;
 import org.apache.tuscany.model.scdl.ModuleWire;
 import org.apache.tuscany.model.scdl.Multiplicity;
 import org.apache.tuscany.model.scdl.OverrideOptions;
@@ -75,6 +77,7 @@
     private org.apache.tuscany.model.assembly.Service currentService;
     private org.apache.tuscany.model.assembly.Reference currentReference;
     private org.apache.tuscany.model.assembly.Module currentModule;
+    private Aggregate currentAggregate;
     private SimpleComponent currentComponent;
     private org.apache.tuscany.model.assembly.ExternalService currentExternalService;
     private org.apache.tuscany.model.assembly.EntryPoint currentEntryPoint;
@@ -325,8 +328,21 @@
         module.setName(object.getName());
         contents.add(module);
         currentModule=module;
+        currentAggregate=module;
         return module;
     }
+
+    /**
+     * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModuleFragment(org.apache.tuscany.model.scdl.ModuleFragment)
+     */
+    public Object caseModuleFragment(ModuleFragment object) {
+        org.apache.tuscany.model.assembly.ModuleFragment moduleFragment=factory.createModuleFragment();
+        moduleFragment.setName(object.getName());
+        contents.add(moduleFragment);
+        currentModuleFragment=moduleFragment;
+        currentAggregate=moduleFragment;
+        return moduleFragment;
+    }
     
     /**
      * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseComponent(org.apache.tuscany.model.scdl.Component)
@@ -336,7 +352,7 @@
         component.setName(object.getName());
         linkers.add(new Runnable() {
             public void run() {
-                currentModule.getComponents().add(component);
+                currentAggregate.getComponents().add(component);
                 component.initialize(modelContext);
             };
         });
@@ -447,10 +463,9 @@
         configuredReference.setReference(reference);
         entryPoint.setConfiguredReference(configuredReference);
         
-        
         linkers.add(new Runnable() {
             public void run() {
-                currentModule.getEntryPoints().add(entryPoint);
+                currentAggregate.getEntryPoints().add(entryPoint);
             };
         });
         
@@ -484,7 +499,7 @@
         
         linkers.add(new Runnable() {
             public void run() {
-                currentModule.getExternalServices().add(externalService);
+                currentAggregate.getExternalServices().add(externalService);
             };
         });
         currentExternalService=externalService;
@@ -499,6 +514,7 @@
         subsystem.setName(object.getName());
         subsystem.setURI(object.getUri());
         currentSubsystem=subsystem;
+        currentAggregate=subsystem;
         return subsystem;
     }
     
@@ -512,7 +528,7 @@
 
         linkers.add(new Runnable() {
             public void run() {
-                currentSubsystem.getComponents().add(moduleComponent);
+                currentAggregate.getComponents().add(moduleComponent);
             };
         });
         

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java?rev=380074&r1=380073&r2=380074&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java Thu Feb 23 01:38:52 2006
@@ -24,8 +24,11 @@
 import org.apache.tuscany.model.scdl.ComponentType;
 import org.apache.tuscany.model.scdl.Module;
 import org.apache.tuscany.model.scdl.ModuleFragment;
+import org.apache.tuscany.model.scdl.ScdlFactory;
 import org.apache.tuscany.model.scdl.Subsystem;
 import org.apache.tuscany.model.scdl.impl.ScdlPackageImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.apache.tuscany.sdo.util.SDOUtil;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 
 import commonj.sdo.helper.XMLDocument;
@@ -37,6 +40,12 @@
     
     private Map<String, Object> cache=new HashMap<String, Object>();
 
+    // Initialize the SDO runtime and register the SCDL model
+    static {
+        DataObjectUtil.initRuntime();
+        SDOUtil.registerStaticTypes(ScdlFactory.class);
+    }
+
     /**
      * Constructor
      */
@@ -92,7 +101,7 @@
         if (object==null) {
             try {
                 XMLDocument document=XMLHelper.INSTANCE.load(new URL(uri).openStream());
-                return (Module)document.getRootObject();
+                return document.getRootObject();
             } catch (IOException e) {
                 throw new RuntimeException(e);
             }