From f9be2165328dc76f562938566057e89c0723fe08 Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 11 Nov 2009 23:09:40 +0000 Subject: Moving 2.x branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835137 13f79535-47bb-0310-9956-ffa450edef68 --- .../equinox/OSGiExtensionPointRegistry.java | 106 --------------------- 1 file changed, 106 deletions(-) delete mode 100644 branches/sca-java-2.0-M4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java (limited to 'branches/sca-java-2.0-M4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java') diff --git a/branches/sca-java-2.0-M4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java b/branches/sca-java-2.0-M4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java deleted file mode 100644 index 4b5fffff01..0000000000 --- a/branches/sca-java-2.0-M4/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java +++ /dev/null @@ -1,106 +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.Dictionary; -import java.util.Hashtable; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; -import org.apache.tuscany.sca.extensibility.ServiceDeclaration; -import org.apache.tuscany.sca.extensibility.ServiceDiscovery; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.BundleException; -import org.osgi.framework.ServiceReference; -import org.osgi.framework.ServiceRegistration; - -/** - * OSGi ServiceRegistry based extension point registry - */ -public class OSGiExtensionPointRegistry extends DefaultExtensionPointRegistry { - private Map, ServiceRegistration> registrations = new ConcurrentHashMap, ServiceRegistration>(); - private BundleContext bundleContext; - - public OSGiExtensionPointRegistry(BundleContext bundleContext) { - super(ServiceDiscovery.getInstance(new EquinoxServiceDiscoverer(bundleContext))); - this.bundleContext = bundleContext; - } - - @Override - protected void registerExtensionPoint(Class extensionPointType, - Object extensionPoint, - ServiceDeclaration declaration) { - BundleContext context = bundleContext; - if (declaration instanceof EquinoxServiceDiscoverer.ServiceDeclarationImpl) { - EquinoxServiceDiscoverer.ServiceDeclarationImpl declarationImpl = - (EquinoxServiceDiscoverer.ServiceDeclarationImpl)declaration; - Bundle bundle = declarationImpl.getBundle(); - /** - * If this bundle is not in the STARTING, ACTIVE, or STOPPING states or this bundle - * is a fragment bundle, then this bundle has no valid BundleContext. This method will - * return null if this bundle has no valid BundleContext - */ - if ((bundle.getState() & (Bundle.ACTIVE | Bundle.STARTING)) == 0) { - try { - bundle.start(); - } catch (BundleException e) { - throw new IllegalStateException(e); - } - } - context = bundle.getBundleContext(); - } - Dictionary props = new Hashtable(); - ServiceRegistration registration = context.registerService(extensionPointType.getName(), extensionPoint, props); - registrations.put(extensionPointType, registration); - super.registerExtensionPoint(extensionPointType, extensionPoint, declaration); - } - - @Override - protected void unregisterExtensionPoint(Class i) { - ServiceRegistration registration = registrations.remove(i); - if (registration != null) { - try { - registration.unregister(); - } catch (IllegalStateException e) { - // The service has been unregistered, ignore it - } - } - super.unregisterExtensionPoint(i); - } - - @Override - public synchronized void stop() { - for (ServiceRegistration reg : registrations.values()) { - try { - ServiceReference ref = reg.getReference(); - if (ref != null) { - reg.unregister(); - } - } catch (IllegalStateException e) { - // Ignore it, the service has been unregistered when the owning bundle stops - } - } - registrations.clear(); - super.stop(); - } - -} -- cgit v1.2.3