Hi, Jeremy.

Can we make the loaderRegistry "protected" instead of "private" in ComponentTypeLoaderExtension.java? The sub-class may need to access it, for example, delegate to the registered ComponentTypeElementLoader to parse "componentType" element.

Thanks,
Raymond

----- Original Message ----- From: <[EMAIL PROTECTED]>
To: <tuscany-commits@ws.apache.org>
Sent: Wednesday, May 24, 2006 9:51 PM
Subject: svn commit: r409302 - in /incubator/tuscany/sandbox/jboynes/sca: core2/src/main/java/org/apache/tuscany/core/loader/ core2/src/main/java/org/apache/tuscany/core/system/loader/ spi/src/main/java/org/apache/tuscany/spi/extension/ spi/src/main/java/org/ap...


Author: jboynes
Date: Wed May 24 21:51:10 2006
New Revision: 409302

URL: http://svn.apache.org/viewvc?rev=409302&view=rev
Log:
add extension base class for ComponentTypeLoader

Added:

incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java (with props)
Modified:

incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java

incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java

incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java Wed May 24 21:51:10 2006
@@ -71,6 +71,10 @@
        componentTypeLoaders.put(key, loader);
    }

+ public <I extends Implementation<?>> void unregisterLoader(Class<I> key) {
+        componentTypeLoaders.remove(key);
+    }
+
    @SuppressWarnings("unchecked")
public <I extends Implementation<?>> void loadComponentType(I implementation, DeploymentContext deploymentContext) {
        Class<I> key = (Class<I>) implementation.getClass();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java Wed May 24 21:51:10 2006
@@ -18,15 +18,19 @@

import java.net.URL;

-import org.apache.tuscany.spi.loader.ComponentTypeLoader;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.core.system.model.SystemImplementation;
import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.ComponentTypeLoaderExtension;

/**
 * @version $Rev$ $Date$
 */
-public class SystemComponentTypeLoader implements ComponentTypeLoader<SystemImplementation> { +public class SystemComponentTypeLoader extends ComponentTypeLoaderExtension<SystemImplementation> {
+    protected Class<SystemImplementation> getTypeClass() {
+        return SystemImplementation.class;
+    }
+
public void load(SystemImplementation implementation, DeploymentContext deploymentContext) {
        Class<?> implClass = implementation.getImplementationClass();
URL resource = implClass.getResource(JavaIntrospectionHelper.getBaseName(implClass) + ".componentType");

Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java?rev=409302&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java (added) +++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java Wed May 24 21:51:10 2006
@@ -0,0 +1,49 @@
+/**
+ *
+ * Copyright 2006 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.extension;
+
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Destroy;
+
+import org.apache.tuscany.spi.loader.ComponentTypeLoader;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.Implementation;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public abstract class ComponentTypeLoaderExtension<T extends Implementation> implements ComponentTypeLoader<T> {
+    private LoaderRegistry loaderRegistry;
+
+    @Property
+    public void setLoaderRegistry(LoaderRegistry loaderRegistry) {
+        this.loaderRegistry = loaderRegistry;
+    }
+
+    protected abstract Class<T> getTypeClass();
+
+    @Init
+    public void start() {
+        loaderRegistry.registerLoader(getTypeClass(), this);
+    }
+
+    @Destroy
+    public void stop() {
+        loaderRegistry.unregisterLoader(getTypeClass());
+    }
+}

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

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

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java Wed May 24 21:51:10 2006
@@ -20,9 +20,9 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

+import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.model.Implementation;
import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.deployer.DeploymentContext;

/**
* Registry for XML loaders that can parse a StAX input stream and return model objects.
@@ -64,14 +64,16 @@
* When this method returns, the stream will be positioned on the corresponding
     * END_ELEMENT event.
     *
-     * @param reader        the XML stream to parse
-     * @param deploymentContext
+     * @param reader            the XML stream to parse
+     * @param deploymentContext the current deployment context
* @return the model object obtained by parsing the current element on the stream * @throws XMLStreamException if there was a problem reading the stream
     */
ModelObject load(XMLStreamReader reader, DeploymentContext deploymentContext) throws XMLStreamException, LoaderException;

<I extends Implementation<?>> void registerLoader(Class<I> key, ComponentTypeLoader<I> loader);
+
+    <I extends Implementation<?>> void unregisterLoader(Class<I> key);

<I extends Implementation<?>> void loadComponentType(I implementation, DeploymentContext deploymentContext);
}



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



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

Reply via email to