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