summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:08:29 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-11-11 23:08:29 +0000
commit725006d4c47e63986ac042ade23a4d193298b1fe (patch)
treeecb2465ddee739a48032ac5c7fa0311e4d90f309 /branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org
parent61c9466ff91ca40f4b1ebbe670d7848e521131d7 (diff)
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835131 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org')
-rw-r--r--branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java281
-rw-r--r--branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java46
2 files changed, 0 insertions, 327 deletions
diff --git a/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
deleted file mode 100644
index 5ab5a66077..0000000000
--- a/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * 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.extensibility.equinox;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
-import org.apache.tuscany.sca.extensibility.ServiceDiscoverer;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-/**
- * A ServiceDiscoverer that find META-INF/services/... in installed bundles
- *
- * @version $Rev$ $Date$
- */
-public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
- private static final Logger logger = Logger.getLogger(EquinoxServiceDiscoverer.class.getName());
-
- private BundleContext context;
-
- public EquinoxServiceDiscoverer(BundleContext context) {
- this.context = context;
- }
-
- public static class ServiceDeclarationImpl implements ServiceDeclaration {
- private Bundle bundle;
- private URL url;
- private String className;
- private Class<?> javaClass;
- private Map<String, String> attributes;
-
- public ServiceDeclarationImpl(Bundle bundle, URL url, String className, Map<String, String> attributes) {
- super();
- this.bundle = bundle;
- this.url = url;
- this.className = className;
- this.attributes = attributes;
- }
-
- public Map<String, String> getAttributes() {
- return attributes;
- }
-
- public String getClassName() {
- return className;
- }
-
- public Class<?> loadClass() throws ClassNotFoundException {
- if (className == null) {
- return null;
- }
- if (javaClass == null) {
- javaClass = loadClass(className);
- }
- return javaClass;
- }
-
- public Class<?> loadClass(String className) throws ClassNotFoundException {
- return bundle.loadClass(className);
- }
-
- public URL getLocation() {
- return url;
- }
-
- public URL getResource(final String name) {
- return AccessController.doPrivileged(new PrivilegedAction<URL>() {
- public URL run() {
- return bundle.getResource(name);
- }
- });
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer();
- sb.append("Bundle: ").append(EquinoxServiceDiscoverer.toString(bundle));
- sb.append(" Resource: ").append(url);
- sb.append(" Attributes: ").append(attributes);
- return sb.toString();
- }
-
- }
-
- public static void init() {
- // Empty static method to trigger the activation of this bundle
- }
-
- private static String toString(Bundle b) {
- StringBuffer sb = new StringBuffer();
- sb.append(b.getBundleId()).append(" ").append(b.getSymbolicName());
- int s = b.getState();
- if ((s & Bundle.UNINSTALLED) != 0) {
- sb.append(" UNINSTALLED");
- }
- if ((s & Bundle.INSTALLED) != 0) {
- sb.append(" INSTALLED");
- }
- if ((s & Bundle.RESOLVED) != 0) {
- sb.append(" RESOLVED");
- }
- if ((s & Bundle.STARTING) != 0) {
- sb.append(" STARTING");
- }
- if ((s & Bundle.STOPPING) != 0) {
- sb.append(" STOPPING");
- }
- if ((s & Bundle.ACTIVE) != 0) {
- sb.append(" ACTIVE");
- }
- return sb.toString();
-
- }
-
- /**
- * 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
- */
- private static Map<String, String> parseServiceDeclaration(String declaration) {
- Map<String, String> attributes = new HashMap<String, String>();
- int index = declaration.indexOf(';');
- if (index != -1) {
- attributes.put("class", declaration.substring(0, index).trim());
- declaration = declaration.substring(index);
- } else {
- int j = declaration.indexOf('=');
- if (j == -1) {
- attributes.put("class", declaration.trim());
- return attributes;
- } else {
- declaration = ";" + declaration;
- }
- }
- StringTokenizer tokens = new StringTokenizer(declaration);
- for (; tokens.hasMoreTokens();) {
- String key = tokens.nextToken("=").substring(1).trim();
- if (key == null)
- break;
- String value = tokens.nextToken(",").substring(1).trim();
- if (value == null)
- break;
- attributes.put(key, value);
- }
- return attributes;
- }
-
- public Set<ServiceDeclaration> discover(String serviceName, boolean firstOnly) {
- boolean debug = logger.isLoggable(Level.FINE);
- Set<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
-
- serviceName = "META-INF/services/" + serviceName;
-
- for (Bundle bundle : context.getBundles()) {
- if (bundle.getBundleId() == 0) {
- // Skip system bundle as it has access to the application classloader
- continue;
- }
- Enumeration<URL> urls = null;
- try {
- // Use getResources to find resources on the classpath of the bundle
- // Please note if there is an DynamicImport-Package=*, and another bundle
- // exports the resource package, there is a possiblity that it doesn't
- // find the containing entry
- urls = bundle.getResources(serviceName);
- if (urls == null) {
- URL entry = bundle.getEntry(serviceName);
- if (entry != null) {
- urls = Collections.enumeration(Arrays.asList(entry));
- }
- }
- } catch (IOException e) {
- logger.log(Level.SEVERE, e.getMessage(), e);
- }
- if (urls == null) {
- continue;
- }
- while (urls.hasMoreElements()) {
- final URL url = urls.nextElement();
-
- if (debug) {
- logger.fine("Reading service provider file: " + url.toExternalForm());
- }
- try {
- // Allow privileged access to open URL stream. Add FilePermission to added to security
- // policy file.
- InputStream is;
- try {
- is = AccessController.doPrivileged(new PrivilegedExceptionAction<InputStream>() {
- public InputStream run() throws IOException {
- return url.openStream();
- }
- });
- } catch (PrivilegedActionException e) {
- throw (IOException)e.getException();
- }
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new InputStreamReader(is));
- int count = 0;
- while (true) {
- String line = reader.readLine();
- if (line == null)
- break;
- line = line.trim();
- if (!line.startsWith("#") && !"".equals(line)) {
- String reg = line.trim();
- if (debug) {
- logger.fine("Registering service provider: " + reg);
- }
-
- Map<String, String> attributes = parseServiceDeclaration(reg);
- String className = attributes.get("class");
- if (className == null) {
- // Add a unique class name to prevent equals() from returning true
- className = "_class_" + count;
- count++;
- }
- ServiceDeclarationImpl descriptor =
- new ServiceDeclarationImpl(bundle, url, className, attributes);
- descriptors.add(descriptor);
- if (firstOnly) {
- return descriptors;
- }
- }
- }
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- // Ignore
- }
- }
- }
- } catch (IOException e) {
- logger.log(Level.SEVERE, e.getMessage(), e);
- }
- }
- }
- return descriptors;
- }
-
-}
diff --git a/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java b/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java
deleted file mode 100644
index 1cb1d09f8d..0000000000
--- a/branches/sca-java-1.4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoveryActivator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.extensibility.equinox;
-
-import java.util.logging.Logger;
-
-import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-/**
- * The Bundle Activator that creates the Equinox-based service discoverer
- *
- * @version $Rev: $ $Date: $
- */
-public class EquinoxServiceDiscoveryActivator implements BundleActivator {
- private static Logger logger = Logger.getLogger(EquinoxServiceDiscoveryActivator.class.getName());
-
- public void start(BundleContext context) throws Exception {
- logger.info("Installing service discovery");
- EquinoxServiceDiscoverer discoverer = new EquinoxServiceDiscoverer(context);
- ServiceDiscovery.getInstance().setServiceDiscoverer(discoverer);
- logger.info("Installed service discovery");
- }
-
- public void stop(BundleContext context) throws Exception {
- }
-
-}