Author: jsdelfino
Date: Thu Aug 23 01:10:23 2007
New Revision: 568874

URL: http://svn.apache.org/viewvc?rev=568874&view=rev
Log:
Moved Service declaration util class to contribution. Will need more work later 
to find a better place for it.

Added:
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
   (with props)
    
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
   (with props)
Removed:
    
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/TempServiceDeclarationUtil.java
Modified:
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultPackageProcessorExtensionPoint.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
    
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
    
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
    
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
    
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
    
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
    
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -22,9 +22,9 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.HashMap;
-import java.util.Set;
+import java.util.List;
 
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 
 /**
@@ -91,7 +91,7 @@
                 // Dynamically load a factory class declared under 
META-INF/services 
                 ClassLoader classLoader = factoryInterface.getClassLoader();
                 try {
-                    Set<String> classNames = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
factoryInterface.getName());
+                    List<String> classNames = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
factoryInterface.getName());
                     if (!classNames.isEmpty()) {
                         Class<?> factoryClass = 
Class.forName(classNames.iterator().next(), true, classLoader);
                         

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultPackageProcessorExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultPackageProcessorExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultPackageProcessorExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultPackageProcessorExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -28,10 +28,9 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.tuscany.sca.contribution.service.ContributionException;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 /**
  * Default implementation of ContributionProcessorRegistry
@@ -65,15 +64,15 @@
 
         // Get the processor service declarations
         ClassLoader classLoader = PackageProcessor.class.getClassLoader();
-        Set<String> processorDeclarations; 
+        List<String> processorDeclarations; 
         try {
-            processorDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
PackageProcessor.class.getName());
+            processorDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
PackageProcessor.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         
         for (String processorDeclaration: processorDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(processorDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(processorDeclaration);
             String className = attributes.get("class");
             
             // Load a URL artifact processor

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -20,8 +20,8 @@
 
 import java.io.IOException;
 import java.lang.reflect.Constructor;
+import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
@@ -34,7 +34,7 @@
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
 import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 
 /**
@@ -84,15 +84,15 @@
 
         // Get the processor service declarations
         ClassLoader classLoader = StAXArtifactProcessor.class.getClassLoader();
-        Set<String> processorDeclarations; 
+        List<String> processorDeclarations; 
         try {
-            processorDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
StAXArtifactProcessor.class.getName());
+            processorDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
StAXArtifactProcessor.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         
         for (String processorDeclaration: processorDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(processorDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(processorDeclaration);
             String className = attributes.get("class");
             
             // Load a StAX artifact processor

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -22,14 +22,14 @@
 import java.lang.reflect.Constructor;
 import java.net.URI;
 import java.net.URL;
+import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 /**
  * The default implementation of a StAX artifact processor registry.
@@ -78,15 +78,15 @@
 
         // Get the processor service declarations
         ClassLoader classLoader = URLArtifactProcessor.class.getClassLoader();
-        Set<String> processorDeclarations; 
+        List<String> processorDeclarations; 
         try {
-            processorDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
URLArtifactProcessor.class.getName());
+            processorDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
URLArtifactProcessor.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         
         for (String processorDeclaration: processorDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(processorDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(processorDeclaration);
             String className = attributes.get("class");
             
             // Load a URL artifact processor

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -20,10 +20,10 @@
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 /**
  * The default implementation of a model resolver Class registry.
@@ -93,16 +93,16 @@
 
         // Get the model resolver service declarations
         ClassLoader classLoader = ModelResolver.class.getClassLoader();
-        Set<String> modelResolverDeclarations; 
+        List<String> modelResolverDeclarations; 
         try {
-            modelResolverDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
ModelResolver.class.getName());
+            modelResolverDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
ModelResolver.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         
         // Load model resolvers
         for (String dataBindingDeclaration: modelResolverDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(dataBindingDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(dataBindingDeclaration);
             String className = attributes.get("class");
             String model = attributes.get("model");
 

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -22,9 +22,8 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 /**
  * Default implementation of a contribution listener extension point.
@@ -58,9 +57,9 @@
 
         // Get the databinding service declarations
         ClassLoader classLoader = ContributionListener.class.getClassLoader();
-        Set<String> listenerDeclarations; 
+        List<String> listenerDeclarations; 
         try {
-            listenerDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
ContributionListener.class.getName());
+            listenerDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
ContributionListener.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }

Added: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java?rev=568874&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
 Thu Aug 23 01:10:23 2007
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sca.contribution.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+public class ServiceConfigurationUtil {
+
+    /**
+     * Read the service name from a configuration file
+     * 
+     * @param classLoader
+     * @param name The name of the service class
+     * @return A class name which extends/implements the service class
+     * @throws IOException
+     */
+    public static List<String> getServiceClassNames(ClassLoader classLoader, 
String name) throws IOException {
+        List<String> classNames = new ArrayList<String>();
+        for (URL url: 
Collections.list(classLoader.getResources("META-INF/services/" + name))) {
+            InputStream is = url.openStream();
+            BufferedReader reader = null;
+            try {
+                reader = new BufferedReader(new InputStreamReader(is));
+                while (true) {
+                    String line = reader.readLine();
+                    if (line == null)
+                        break;
+                    line = line.trim();
+                    if (!line.startsWith("#") && !"".equals(line)) {
+                        classNames.add(line.trim());
+                    }
+                }
+            } finally {
+                if (reader != null)
+                    reader.close();
+                if (is != null) {
+                    try {
+                        is.close();
+                    } catch (IOException ioe) {}
+                }
+            }
+        }
+        return classNames;
+    }
+
+    /**
+     * Parse a service declaration in the form class;attr=value,attr=value and
+     * return a map of attributes
+     * 
+     * @param declaration
+     * @return a map of attributes
+     */
+    public static Map<String, String> parseServiceDeclaration(String 
declaration) {
+        Map<String, String> attributes = new HashMap<String, String>();
+        StringTokenizer tokens = new StringTokenizer(declaration);
+        String className = tokens.nextToken(";");
+        if (className != null)
+            attributes.put("class", className);
+        for (; tokens.hasMoreTokens(); ) {
+            String key = tokens.nextToken("=").substring(1);
+            if (key == null)
+                break;
+            String value = tokens.nextToken(",").substring(1);
+            if (value == null)
+                break;
+            attributes.put(key, value);
+        }
+        return attributes;
+    }
+
+}

Propchange: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/util/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
 Thu Aug 23 01:10:23 2007
@@ -25,11 +25,12 @@
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 
 /**
  * Default implementation of a registry to hold all the Tuscany core extension
@@ -68,7 +69,7 @@
             // Dynamically load an extension point class declared under 
META-INF/services 
             ClassLoader classLoader = extensionPointType.getClassLoader();
             try {
-                Set<String> classNames = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
extensionPointType.getName());
+                List<String> classNames = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
extensionPointType.getName());
                 if (!classNames.isEmpty()) {
                     Class<?> extensionPointClass = 
Class.forName(classNames.iterator().next(), true, classLoader);
                     

Modified: 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -25,12 +25,11 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
@@ -113,10 +112,10 @@
     private List<ProviderFactory> loadProviderFactories(Class<?> factoryClass) 
{
 
         // Get the provider factory service declarations
-        Set<String> factoryDeclarations; 
+        List<String> factoryDeclarations; 
         try {
             ClassLoader classLoader = factoryClass.getClassLoader();
-            factoryDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
factoryClass.getName());
+            factoryDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
factoryClass.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
@@ -126,7 +125,7 @@
         List<ProviderFactory> factories = new ArrayList<ProviderFactory>();
         
         for (String factoryDeclaration: factoryDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(factoryDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(factoryDeclaration);
             String className = attributes.get("class");
             
             // Load an implementation provider factory

Modified: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -23,13 +23,13 @@
 import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
+import org.apache.tuscany.sca.databinding.impl.ServiceConfigurationUtil;
 import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
 
 /**
  * The default implementation of a data binding extension point.
@@ -90,17 +90,17 @@
 
         // Get the databinding service declarations
         ClassLoader classLoader = DataBinding.class.getClassLoader();
-        Set<String> dataBindingDeclarations;
+        List<String> dataBindingDeclarations;
         try {
             dataBindingDeclarations =
-                TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
DataBinding.class.getName());
+                ServiceConfigurationUtil.getServiceClassNames(classLoader, 
DataBinding.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
 
         // Load data bindings
         for (String dataBindingDeclaration : dataBindingDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(dataBindingDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(dataBindingDeclaration);
             String className = attributes.get("class");
             String type = attributes.get("type");
             String name = attributes.get("name");

Modified: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
 Thu Aug 23 01:10:23 2007
@@ -24,10 +24,9 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.tuscany.sca.databinding.impl.DirectedGraph;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
+import org.apache.tuscany.sca.databinding.impl.ServiceConfigurationUtil;
 
 /**
  * @version $Rev$ $Date$
@@ -84,16 +83,16 @@
 
         // Get the transformer service declarations
         ClassLoader classLoader = transformerClass.getClassLoader();
-        Set<String> transformerDeclarations; 
+        List<String> transformerDeclarations; 
         try {
-            transformerDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
transformerClass.getName());
+            transformerDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
transformerClass.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         
         // Load transformers
         for (String transformerDeclaration: transformerDeclarations) {
-            Map<String, String> attributes = 
TempServiceDeclarationUtil.parseServiceDeclaration(transformerDeclaration);
+            Map<String, String> attributes = 
ServiceConfigurationUtil.parseServiceDeclaration(transformerDeclaration);
             String className = attributes.get("class");
             String source = attributes.get("source");
             String target = attributes.get("target");

Added: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java?rev=568874&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
 Thu Aug 23 01:10:23 2007
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.sca.databinding.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+public class ServiceConfigurationUtil {
+
+    /**
+     * Read the service name from a configuration file
+     * 
+     * @param classLoader
+     * @param name The name of the service class
+     * @return A class name which extends/implements the service class
+     * @throws IOException
+     */
+    public static List<String> getServiceClassNames(ClassLoader classLoader, 
String name) throws IOException {
+        List<String> classNames = new ArrayList<String>();
+        for (URL url: 
Collections.list(classLoader.getResources("META-INF/services/" + name))) {
+            InputStream is = url.openStream();
+            BufferedReader reader = null;
+            try {
+                reader = new BufferedReader(new InputStreamReader(is));
+                while (true) {
+                    String line = reader.readLine();
+                    if (line == null)
+                        break;
+                    line = line.trim();
+                    if (!line.startsWith("#") && !"".equals(line)) {
+                        classNames.add(line.trim());
+                    }
+                }
+            } finally {
+                if (reader != null)
+                    reader.close();
+                if (is != null) {
+                    try {
+                        is.close();
+                    } catch (IOException ioe) {}
+                }
+            }
+        }
+        return classNames;
+    }
+
+    /**
+     * Parse a service declaration in the form class;attr=value,attr=value and
+     * return a map of attributes
+     * 
+     * @param declaration
+     * @return a map of attributes
+     */
+    public static Map<String, String> parseServiceDeclaration(String 
declaration) {
+        Map<String, String> attributes = new HashMap<String, String>();
+        StringTokenizer tokens = new StringTokenizer(declaration);
+        String className = tokens.nextToken(";");
+        if (className != null)
+            attributes.put("class", className);
+        for (; tokens.hasMoreTokens(); ) {
+            String key = tokens.nextToken("=").substring(1);
+            if (key == null)
+                break;
+            String value = tokens.nextToken(",").substring(1);
+            if (value == null)
+                break;
+            attributes.put(key, value);
+        }
+        return attributes;
+    }
+
+}

Propchange: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
 Thu Aug 23 01:10:23 2007
@@ -23,7 +23,6 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
@@ -35,6 +34,7 @@
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ModuleActivator;
@@ -46,7 +46,6 @@
 import org.apache.tuscany.sca.core.scope.ScopeRegistry;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
 import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
@@ -200,7 +199,7 @@
         // Load and instantiate the modules found on the classpath
         modules = new ArrayList<ModuleActivator>();
         try {
-            Set<String> classNames = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
ModuleActivator.class.getName());
+            List<String> classNames = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
ModuleActivator.class.getName());
             for (String className : classNames) {       
                 Class moduleClass = Class.forName(className, true, 
classLoader);
                 ModuleActivator module = 
(ModuleActivator)moduleClass.newInstance();

Modified: 
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java?rev=568874&r1=568873&r2=568874&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
 Thu Aug 23 01:10:23 2007
@@ -18,11 +18,15 @@
  */
 package org.apache.tuscany.sca.interfacedef.java;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
-import org.apache.tuscany.sca.interfacedef.impl.TempServiceDeclarationUtil;
 import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceFactoryImpl;
 import 
org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor;
 
@@ -52,9 +56,9 @@
 
         // Get the databinding service declarations
         ClassLoader classLoader = JavaInterfaceVisitor.class.getClassLoader();
-        Set<String> visitorDeclarations; 
+        List<String> visitorDeclarations; 
         try {
-            visitorDeclarations = 
TempServiceDeclarationUtil.getServiceClassNames(classLoader, 
JavaInterfaceVisitor.class.getName());
+            visitorDeclarations = getServiceClassNames(classLoader, 
JavaInterfaceVisitor.class.getName());
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
@@ -76,6 +80,43 @@
         }
         
         loadedVisitors = true;
+    }
+
+    /**
+     * Read the service name from a configuration file
+     * 
+     * @param classLoader
+     * @param name The name of the service class
+     * @return A class name which extends/implements the service class
+     * @throws IOException
+     */
+    private List<String> getServiceClassNames(ClassLoader classLoader, String 
name) throws IOException {
+        List<String> classNames = new ArrayList<String>();
+        for (URL url: 
Collections.list(classLoader.getResources("META-INF/services/" + name))) {
+            InputStream is = url.openStream();
+            BufferedReader reader = null;
+            try {
+                reader = new BufferedReader(new InputStreamReader(is));
+                while (true) {
+                    String line = reader.readLine();
+                    if (line == null)
+                        break;
+                    line = line.trim();
+                    if (!line.startsWith("#") && !"".equals(line)) {
+                        classNames.add(line.trim());
+                    }
+                }
+            } finally {
+                if (reader != null)
+                    reader.close();
+                if (is != null) {
+                    try {
+                        is.close();
+                    } catch (IOException ioe) {}
+                }
+            }
+        }
+        return classNames;
     }
 
 }



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

Reply via email to