You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/05/03 18:33:31 UTC

svn commit: r399348 [2/2] - in /incubator/tuscany/sandbox/jboynes/sca: ./ core/src/main/java/org/apache/tuscany/core/async/builder/ core/src/main/java/org/apache/tuscany/core/builder/system/ core/src/main/java/org/apache/tuscany/core/config/impl/ core/...

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java (from r399282, incubator/tuscany/sandbox/jboynes/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java&p1=incubator/tuscany/sandbox/jboynes/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java&r1=399282&r2=399348&rev=399348&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java Wed May  3 09:33:22 2006
@@ -14,53 +14,37 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.core.loader.system;
-
-import org.apache.tuscany.core.config.ComponentTypeIntrospector;
-import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.loader.StAXUtil;
-import org.apache.tuscany.core.loader.LoaderContext;
-import org.apache.tuscany.core.loader.assembly.AbstractLoader;
-import org.apache.tuscany.core.system.annotation.Autowire;
-import org.apache.tuscany.core.system.assembly.SystemImplementation;
-import org.osoa.sca.annotations.Scope;
+package org.apache.tuscany.core.system.loader;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.core.loader.StAXUtil;
+import org.apache.tuscany.core.system.model.SystemImplementation;
+import org.apache.tuscany.spi.loader.LoaderContext;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderSupport;
+
 /**
  * @version $Rev$ $Date$
  */
-@Scope("MODULE")
-public class SystemImplementationLoader extends AbstractLoader {
-    public static final QName SYSTEM_IMPLEMENTATION = new QName("http://org.apache.tuscany/xmlns/system/0.9", "implementation.system");
-
-    private ComponentTypeIntrospector introspector;
-
-    @Autowire
-    public void setIntrospector(ComponentTypeIntrospector introspector) {
-        this.introspector = introspector;
-    }
+public class SystemImplementationLoader extends LoaderSupport {
+    public static final QName SYSTEM_IMPLEMENTATION = new QName("http://tuscany.apache.org/xmlns/system/0.9", "implementation.system");
 
     protected QName getXMLType() {
         return SYSTEM_IMPLEMENTATION;
     }
 
-    public SystemImplementation load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException {
+    public SystemImplementation load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, LoaderException {
         assert SYSTEM_IMPLEMENTATION.equals(reader.getName());
-        SystemImplementation implementation = factory.createSystemImplementation();
+        SystemImplementation implementation = new SystemImplementation();
         String implClass = reader.getAttributeValue(null, "class");
-        Class<?> implementationClass;
-        try {
-            implementationClass = loaderContext.getResourceLoader().loadClass(implClass);
-            implementation.setImplementationClass(implementationClass);
-        } catch (ClassNotFoundException e) {
-            throw new ConfigurationLoadException(e);
-        }
+        Class<?> implementationClass = StAXUtil.loadClass(implClass, loaderContext.getClassLoader());
+        implementation.setImplementationClass(implementationClass);
 
         // todo we should allow componentType sidefiles for system implementations
-        implementation.setComponentInfo(introspector.introspect(implementationClass));
+//        implementation.setComponentType(introspector.introspect(implementationClass));
 
         StAXUtil.skipToEndElement(reader);
         return implementation;

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemImplementationLoader.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java Wed May  3 09:33:22 2006
@@ -0,0 +1,34 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.core.system.model;
+
+import org.apache.tuscany.model.AtomicImplementation;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SystemImplementation extends AtomicImplementation {
+    private Class<?> implementationClass;
+
+    public Class<?> getImplementationClass() {
+        return implementationClass;
+    }
+
+    public void setImplementationClass(Class<?> implementationClass) {
+        this.implementationClass = implementationClass;
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/model/SystemImplementation.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java Wed May  3 09:33:22 2006
@@ -0,0 +1,72 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.core.loader;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.model.ServiceContract;
+import org.apache.tuscany.spi.loader.LoaderContext;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.StAXLoaderRegistry;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ServiceLoaderTestCase extends MockObjectTestCase {
+    private ServiceLoader loader;
+    private LoaderContext loaderContext;
+    private Mock mockReader;
+    private Mock mockRegistry;
+
+    public void testWithNoInterface() throws LoaderException, XMLStreamException {
+        String name = "service";
+        mockReader.expects(once()).method("getName").will(returnValue(AssemblyConstants.SERVICE));
+        mockReader.expects(once()).method("getAttributeValue").with(NULL, eq("name")).will(returnValue(name));
+        mockReader.expects(once()).method("next").will(returnValue(END_ELEMENT));
+        Service service = loader.load((XMLStreamReader) mockReader.proxy(), null);
+        assertNotNull(service);
+        assertEquals(name, service.getName());
+    }
+
+    public void testWithInterface() throws LoaderException, XMLStreamException {
+        String name = "service";
+        ServiceContract sc = new ServiceContract(){};
+        mockReader.expects(once()).method("getName").will(returnValue(AssemblyConstants.SERVICE));
+        mockReader.expects(once()).method("getAttributeValue").with(NULL, eq("name")).will(returnValue(name));
+        mockReader.expects(atLeastOnce()).method("next").will(onConsecutiveCalls(returnValue(START_ELEMENT), returnValue(END_ELEMENT)));
+        mockRegistry.expects(once()).method("load").with(eq(mockReader.proxy()), eq(loaderContext)).will(returnValue(sc));
+        Service service = loader.load((XMLStreamReader) mockReader.proxy(), loaderContext);
+        assertNotNull(service);
+        assertEquals(name, service.getName());
+        assertSame(sc, service.getServiceContract());
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        loader = new ServiceLoader();
+        mockReader = mock(XMLStreamReader.class);
+        mockRegistry = mock(StAXLoaderRegistry.class);
+        loader.setRegistry((StAXLoaderRegistry) mockRegistry.proxy());
+        loaderContext = new LoaderContext(null);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java Wed May  3 09:33:22 2006
@@ -0,0 +1,89 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.core.loader;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.spi.loader.StAXElementLoader;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderContext;
+import org.apache.tuscany.spi.loader.UnrecognizedElementException;
+import org.apache.tuscany.model.ModelObject;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@SuppressWarnings({"CastToIncompatibleInterface"})
+public class StAXLoaderRegistryImplTestCase extends MockObjectTestCase {
+    private StAXLoaderRegistryImpl registry;
+    private QName name;
+    private Mock mockMonitor;
+    private Mock mockLoader;
+    private Mock mockReader;
+    private LoaderContext loaderContext;
+    private ModelObject modelObject;
+
+    public void testLoaderRegistration() {
+        mockMonitor.expects(once()).method("registeringLoader").with(eq(name));
+        registry.registerLoader(name, (StAXElementLoader<ModelObject>) mockLoader.proxy());
+    }
+
+    public void testLoaderUnregistration() {
+        mockMonitor.expects(once()).method("unregisteringLoader").with(eq(name));
+        registry.unregisterLoader(name, (StAXElementLoader<ModelObject>) mockLoader.proxy());
+    }
+
+    public void testSuccessfulDispatch() throws LoaderException, XMLStreamException {
+        mockReader.expects(once()).method("getName").will(returnValue(name));
+        mockMonitor.expects(once()).method("registeringLoader").with(eq(name));
+        mockMonitor.expects(once()).method("elementLoad").with(eq(name));
+        mockLoader.expects(once()).method("load").with(eq(mockReader.proxy()), eq(loaderContext)).will(returnValue(modelObject));
+
+        registry.registerLoader(name, (StAXElementLoader<ModelObject>) mockLoader.proxy());
+        assertSame(modelObject, registry.load((XMLStreamReader) mockReader.proxy(), loaderContext));
+    }
+
+    public void testUnsuccessfulDispatch() throws LoaderException, XMLStreamException {
+        mockReader.expects(once()).method("getName").will(returnValue(name));
+        mockMonitor.expects(once()).method("elementLoad").with(eq(name));
+
+        try {
+            registry.load((XMLStreamReader) mockReader.proxy(), loaderContext);
+            fail();
+        } catch (UnrecognizedElementException e) {
+            assertSame(name, e.getElement());
+        }
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        name = new QName("http://mock", "test");
+        loaderContext = new LoaderContext(null);
+        registry = new StAXLoaderRegistryImpl();
+        mockMonitor = mock(StAXLoaderRegistryImpl.Monitor.class);
+        registry.setMonitor((StAXLoaderRegistryImpl.Monitor) mockMonitor.proxy());
+
+        mockLoader = mock(StAXElementLoader.class);
+        mockReader = mock(XMLStreamReader.class);
+        modelObject = new ModelObject() {
+        };
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryImplTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ComponentType.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ComponentType.java?rev=399348&r1=399347&r2=399348&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ComponentType.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ComponentType.java Wed May  3 09:33:22 2006
@@ -25,7 +25,7 @@
 public class ComponentType extends ModelObject {
     private final Map<String, Service> services = new HashMap<String, Service>();
     private final Map<String, Reference> references = new HashMap<String, Reference>();
-    private final Map<String, Property> properties = new HashMap<String, Property>();
+    private final Map<String, Property<?>> properties = new HashMap<String, Property<?>>();
 
     public Map<String, Service> getServices() {
         return services;
@@ -35,7 +35,19 @@
         return references;
     }
 
-    public Map<String, Property> getProperties() {
+    public Map<String, Property<?>> getProperties() {
         return properties;
+    }
+
+    public void add(Service service) {
+        services.put(service.getName(), service);
+    }
+
+    public void add(Reference reference) {
+        references.put(reference.getName(), reference);
+    }
+
+    public void add(Property<?> property) {
+        properties.put(property.getName(), property);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/JavaServiceContract.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/JavaServiceContract.java?rev=399348&r1=399347&r2=399348&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/JavaServiceContract.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/JavaServiceContract.java Wed May  3 09:33:22 2006
@@ -20,4 +20,40 @@
  * @version $Rev$ $Date$
  */
 public class JavaServiceContract extends ServiceContract {
+    private String interfaceName;
+    private Class<?> interfaceClass;
+    private String callbackName;
+    private Class<?> callbackClass;
+
+    public String getInterfaceName() {
+        return interfaceName;
+    }
+
+    public void setInterfaceName(String interfaceName) {
+        this.interfaceName = interfaceName;
+    }
+
+    public Class<?> getInterfaceClass() {
+        return interfaceClass;
+    }
+
+    public void setInterfaceClass(Class<?> interfaceClass) {
+        this.interfaceClass = interfaceClass;
+    }
+
+    public String getCallbackName() {
+        return callbackName;
+    }
+
+    public void setCallbackName(String callbackName) {
+        this.callbackName = callbackName;
+    }
+
+    public Class<?> getCallbackClass() {
+        return callbackClass;
+    }
+
+    public void setCallbackClass(Class<?> callbackClass) {
+        this.callbackClass = callbackClass;
+    }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/pom.xml
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/pom.xml?rev=399348&r1=399347&r2=399348&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/pom.xml (original)
+++ incubator/tuscany/sandbox/jboynes/sca/pom.xml Wed May  3 09:33:22 2006
@@ -30,8 +30,8 @@
         <module>common</module>
         <module>model</module>
         <module>spi</module>
+        <module>core2</module>
 <!--
-        <module>core</module>
         <module>bindings</module>
         <module>databinding</module>
         <module>containers</module>
@@ -46,6 +46,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.1.3</version>
                 <configuration>
                     <includes>
                         <include>**/*TestCase.java</include>

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May  3 09:33:22 2006
@@ -0,0 +1,13 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+.settings
+.deployables
+.wtpmodules
+

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java Wed May  3 09:33:22 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * 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.spi.annotation;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+
+/**
+ * A system annotation to inject an autowired instance
+ * 
+ * @version $Rev: 395110 $ $Date: 2006-04-18 19:32:30 -0700 (Tue, 18 Apr 2006) $
+ */
+@Target( { METHOD, FIELD })
+@Retention(RUNTIME)
+public @interface Autowire {
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Autowire.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java Wed May  3 09:33:22 2006
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.spi.annotation;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * A system annotation to inject a monitor
+ *
+ * @version $Rev: 392146 $ $Date: 2006-04-06 18:11:28 -0700 (Thu, 06 Apr 2006) $
+ */
+@Target( { ElementType.METHOD, ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Monitor {
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Monitor.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderException.java?rev=399348&r1=399347&r2=399348&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderException.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderException.java Wed May  3 09:33:22 2006
@@ -22,6 +22,9 @@
  * @version $Rev$ $Date$
  */
 public class LoaderException extends TuscanyException {
+    private static final long serialVersionUID = -7459051598906813461L;
+    private String resourceURI;
+
     public LoaderException() {
     }
 
@@ -36,4 +39,23 @@
     public LoaderException(Throwable cause) {
         super(cause);
     }
+
+    /**
+     * Returns the location of the resource that was being loaded.
+     *
+     * @return the location of the resource that was being loaded
+     */
+    public String getResourceURI() {
+        return resourceURI;
+    }
+
+    /**
+     * Sets the location of the resource that was being loaded.
+     *
+     * @param resourceURI the location of the resource that was being loaded
+     */
+    public void setResourceURI(String resourceURI) {
+        this.resourceURI = resourceURI;
+    }
+
 }

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java Wed May  3 09:33:22 2006
@@ -0,0 +1,55 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.spi.loader;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.model.ModelObject;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+
+/**
+ * Base class for loader implementations that handles registration.
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class LoaderSupport<T extends ModelObject> implements StAXElementLoader<T> {
+    protected StAXLoaderRegistry registry;
+
+    @Autowire
+    public void setRegistry(StAXLoaderRegistry registry) {
+        this.registry = registry;
+    }
+
+    @Init(eager = true)
+    public void start() {
+        registry.registerLoader(getXMLType(), this);
+    }
+
+    @Destroy
+    public void stop() {
+        registry.unregisterLoader(getXMLType(), this);
+    }
+
+    /**
+     * Returns the QName of the element that this implementation handles.
+     *
+     * @return the QName of the element that this implementation handles
+     */
+    protected abstract QName getXMLType();
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderSupport.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java Wed May  3 09:33:22 2006
@@ -0,0 +1,47 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.spi.loader;
+
+/**
+ * Exception that indicates an expected resource could not be found.
+ * The message should be set to the name of the resource.
+ *
+ * @version $Rev: 392764 $ $Date: 2006-04-09 09:13:55 -0700 (Sun, 09 Apr 2006) $
+ */
+public class MissingResourceException extends LoaderException {
+    private static final long serialVersionUID = 3775013318397916445L;
+
+    /**
+     * Constructor that indicates which resource could not be found.
+     * The supplied parameter is also returned as the message.
+     *
+     * @param resource the resource that could not be found
+     */
+    public MissingResourceException(String resource) {
+        super(resource);
+    }
+
+    /**
+     * Constructor that indicates which resource could not be found.
+     * The supplied parameter is also returned as the message.
+     *
+     * @param resource the resource that could not be found
+     */
+    public MissingResourceException(String resource, Throwable cause) {
+        super(resource, cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/MissingResourceException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java?rev=399348&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java Wed May  3 09:33:22 2006
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.spi.loader;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Exception that indicates an element was encountered that could not be handled.
+ *
+ * @version $Rev: 392764 $ $Date: 2006-04-09 09:13:55 -0700 (Sun, 09 Apr 2006) $
+ */
+public class UnrecognizedElementException extends LoaderException {
+    private static final long serialVersionUID = 2549543622209829032L;
+    private final QName element;
+
+    /**
+     * Constructor that indicates which resource could not be found.
+     * The supplied parameter is also returned as the message.
+     *
+     * @param element the element that could not be handled
+     */
+    public UnrecognizedElementException(QName element) {
+        super(element.toString());
+        setIdentifier(getMessage());
+        this.element = element;
+    }
+
+    public QName getElement() {
+        return element;
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/UnrecognizedElementException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date