diff options
Diffstat (limited to 'sca-java-1.x/tags/java-stable-20060304/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java')
-rw-r--r-- | sca-java-1.x/tags/java-stable-20060304/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java b/sca-java-1.x/tags/java-stable-20060304/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java new file mode 100644 index 0000000000..f49efe3ebc --- /dev/null +++ b/sca-java-1.x/tags/java-stable-20060304/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java @@ -0,0 +1,49 @@ +package org.apache.tuscany.core.system.loader; + +import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory; +import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl; +import org.apache.tuscany.core.system.scdl.ScdlFactory; +import org.apache.tuscany.core.system.scdl.SystemImplementation; +import org.apache.tuscany.model.assembly.AssemblyModelContext; +import org.apache.tuscany.model.assembly.AssemblyModelObject; +import org.apache.tuscany.model.scdl.loader.SCDLModelLoader; +import org.apache.tuscany.sdo.util.SDOUtil; + +/** + * Populates the assembly model from an SCDL model + */ +public class SystemSCDLModelLoader implements SCDLModelLoader { + + private SystemAssemblyFactory systemFactory; + + static { + // Register the system SCDL model + SDOUtil.registerStaticTypes(ScdlFactory.class); + } + + /** + * Constructs a new JavaSCDLModelLoader. + */ + public SystemSCDLModelLoader() { + this.systemFactory=new SystemAssemblyFactoryImpl(); + } + + /** + * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(org.apache.tuscany.model.assembly.AssemblyModelContext, java.lang.Object) + */ + public AssemblyModelObject load(AssemblyModelContext modelContext, Object object) { + if (object instanceof SystemImplementation) { + SystemImplementation scdlImplementation=(SystemImplementation)object; + org.apache.tuscany.core.system.assembly.SystemImplementation implementation=systemFactory.createSystemImplementation(); + Class implementationClass; + try { + implementationClass=modelContext.getSystemResourceLoader().loadClass(scdlImplementation.getClass_()); + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException(e); + } + implementation.setImplementationClass(implementationClass); + return implementation; + } else + return null; + } +} |