You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2007/09/18 01:44:35 UTC
Re: svn commit: r576625 - in /incubator/tuscany/branches/sca-java-1.0/modules: ./ binding-osgi/ contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/ im
Sorry, I pressed the button too quickly :-(. A few test cases are failing
and I'll fix them.
Thanks,
Raymond
----- Original Message -----
From: <rf...@apache.org>
To: <tu...@ws.apache.org>
Sent: Monday, September 17, 2007 4:26 PM
Subject: svn commit: r576625 - in
/incubator/tuscany/branches/sca-java-1.0/modules: ./ binding-osgi/
contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/
contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/
im...
> Author: rfeng
> Date: Mon Sep 17 16:26:47 2007
> New Revision: 576625
>
> URL: http://svn.apache.org/viewvc?rev=576625&view=rev
> Log:
> Properly start and stop the OSGi runtime to avoid hang
>
> Added:
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> (with props)
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> Removed:
> incubator/tuscany/branches/sca-java-1.0/modules/binding-osgi/
> Modified:
>
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
>
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
>
> incubator/tuscany/branches/sca-java-1.0/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
>
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
> incubator/tuscany/branches/sca-java-1.0/modules/pom.xml
>
> Modified:
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
> (original)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
> Mon Sep 17 16:26:47 2007
> @@ -40,18 +40,20 @@
> private Contribution contribution;
> protected WeakReference<ClassLoader> classLoader;
> private Map<String, ClassReference> map = new HashMap<String,
> ClassReference>();
> -
> +
> private ModelResolver osgiResolver;
> -
> +
> public ClassReferenceModelResolver(Contribution contribution,
> ModelFactoryExtensionPoint modelFactories) {
> this.contribution = contribution;
> //FIXME The classloader should be passed in
> this.classLoader = new
> WeakReference<ClassLoader>(Thread.currentThread().getContextClassLoader());
> -
> +
> try {
> - Class osgiResolverClass =
> Class.forName("org.apache.tuscany.sca.contribution.osgi.impl.OSGiClassReferenceModelResolver");
> + Class osgiResolverClass =
> +
> Class.forName("org.apache.tuscany.sca.contribution.osgi.impl.OSGiClassReferenceModelResolver");
> if (osgiResolverClass != null) {
> - Constructor constructor =
> osgiResolverClass.getConstructor(Contribution.class,
> ModelFactoryExtensionPoint.class);
> + Constructor constructor =
> + osgiResolverClass.getConstructor(Contribution.class,
> ModelFactoryExtensionPoint.class);
> this.osgiResolver =
> (ModelResolver)constructor.newInstance(contribution, modelFactories);
> }
> } catch (Exception e) {
> @@ -62,11 +64,11 @@
> ClassReference clazz = (ClassReference)resolved;
> map.put(clazz.getClassName(), clazz);
> }
> -
> +
> public Object removeModel(Object resolved) {
> return map.remove(((ClassReference)resolved).getClassName());
> }
> -
> +
> /**
> * Handle artifact resolution when the specific class reference is
> imported from another contribution
> * @param unresolved
> @@ -75,10 +77,10 @@
> private ClassReference resolveImportedModel(ClassReference unresolved)
> {
> ClassReference resolved = unresolved;
>
> - if( this.contribution != null) {
> + if (this.contribution != null) {
> for (Import import_ : this.contribution.getImports()) {
> if (import_ instanceof JavaImport) {
> - JavaImport javaImport = (JavaImport) import_;
> + JavaImport javaImport = (JavaImport)import_;
> String packageName = javaImport.getPackage();
> if (javaImport.getPackage().equals(packageName)) {
> // Delegate the resolution to the import resolver
> @@ -86,59 +88,58 @@
> }
> }
> }
> -
> +
> }
> return resolved;
> }
> -
> -
> +
> public <T> T resolveModel(Class<T> modelClass, T unresolved) {
> Object resolved = map.get(unresolved);
> -
> - if (resolved != null ){
> +
> + if (resolved != null) {
> return modelClass.cast(resolved);
> - }
> -
> + }
> +
> //Load a class on demand
> Class clazz = null;
> -
> - if (osgiResolver != null)
> - resolved = osgiResolver.resolveModel(modelClass, unresolved);
> -
> +
> if (unresolved == resolved || resolved == null) {
> try {
> clazz =
> Class.forName(((ClassReference)unresolved).getClassName(), true,
> classLoader.get());
> } catch (ClassNotFoundException e) {
> //we will later try to delegate to imported model
> resolvers
> }
> - }
> - else
> + } else
> clazz = ((ClassReference)resolved).getJavaClass();
>
> -
> if (clazz != null) {
> //if we load the class
> // Store a new ClassReference wrappering the loaded class
> ClassReference classReference = new ClassReference(clazz);
> map.put(getPackageName(classReference), classReference);
> -
> +
> // Return the resolved ClassReference
> - return modelClass.cast(classReference);
> + return modelClass.cast(classReference);
> } else {
> //delegate resolution of the class
> resolved =
> this.resolveImportedModel((ClassReference)unresolved);
> + if (unresolved == resolved || resolved == null) {
> + if (osgiResolver != null) {
> + resolved = osgiResolver.resolveModel(modelClass,
> unresolved);
> + }
> + }
> +
> return modelClass.cast(resolved);
> }
> -
>
> }
> -
> +
> /***************
> * Helper methods
> ***************/
> -
> +
> private String getPackageName(ClassReference clazz) {
> int pos = clazz.getClassName().lastIndexOf(".");
> - return clazz.getClassName().substring(0, pos - 1 );
> + return clazz.getClassName().substring(0, pos - 1);
> }
> }
>
> Modified:
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
> (original)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
> Mon Sep 17 16:26:47 2007
> @@ -45,9 +45,9 @@
> * @version $Rev$ $Date$
> */
> public class OSGiImportExportListener implements ContributionListener {
> -
> +
> private OSGiBundleProcessor bundleProcessor;
> -
> +
> public OSGiImportExportListener() {
> bundleProcessor = new OSGiBundleProcessor();
> }
> @@ -57,58 +57,56 @@
> * Export model resolvers are same as Contribution model resolver
> * Import model resolvers are matched to a specific contribution if a
> location uri is specified,
> * otherwise it try to resolve agains all the other contributions
> - */
> + */
> public void contributionAdded(ContributionRepository repository,
> Contribution contribution) {
> -
> - OSGiRuntime osgiRuntime;
> -
> +
> + OSGiRuntime osgiRuntime = null;
> try {
> - osgiRuntime = OSGiRuntime.getRuntime();
> -
> - if (bundleProcessor.installContributionBundle(contribution)
> == null)
> + if (bundleProcessor.installContributionBundle(contribution)
> == null) {
> return;
> + } else {
> + osgiRuntime = OSGiRuntime.getRuntime();
> + }
> } catch (Exception e) {
> return;
> }
> -
>
> HashSet<Contribution> bundlesToInstall = new
> HashSet<Contribution>();
> // Initialize the contribution imports
> - for (Import import_: contribution.getImports()) {
> + for (Import import_ : contribution.getImports()) {
> boolean initialized = false;
> -
> -
> - if(import_ instanceof JavaImport) {
> - JavaImport javaImport = (JavaImport) import_;
> +
> + if (import_ instanceof JavaImport) {
> + JavaImport javaImport = (JavaImport)import_;
> String packageName = javaImport.getPackage();
> -
> +
> //Find a matching contribution
> - if(javaImport.getLocation() != null) {
> + if (javaImport.getLocation() != null) {
> Contribution targetContribution =
> repository.getContribution(javaImport.getLocation());
> if (targetContribution != null) {
> -
> +
> // Find a matching contribution export
> - for (Export export:
> targetContribution.getExports()) {
> + for (Export export :
> targetContribution.getExports()) {
> if (export instanceof JavaExport) {
> JavaExport javaExport =
> (JavaExport)export;
> if
> (packageName.equals(javaExport.getPackage())) {
> -
> +
> if
> (osgiRuntime.findBundle(targetContribution.getLocation()) == null)
>
> bundlesToInstall.add(targetContribution);
> -
> +
> initialized = true;
> -
> +
> }
> }
> if (initialized)
> break;
> }
> - }
> + }
> }
> }
> if (!initialized) {
> for (Contribution c : repository.getContributions()) {
> -
> +
> // Go over all exports in the contribution
> for (Export export : c.getExports()) {
> // If the export matches our namespace, try to the
> resolve the model object
> @@ -121,7 +119,7 @@
> }
> for (Contribution c : bundlesToInstall) {
> try {
> - installDummyBundle(osgiRuntime, c);
> + installDummyBundle(osgiRuntime, c);
> } catch (Exception e) {
> }
> }
> @@ -132,10 +130,12 @@
>
> }
>
> - public void contributionUpdated(ContributionRepository repository,
> Contribution oldContribution, Contribution contribution) {
> + public void contributionUpdated(ContributionRepository repository,
> + Contribution oldContribution,
> + Contribution contribution) {
>
> }
> -
> +
> private void installDummyBundle(OSGiRuntime osgiRuntime, Contribution
> contribution) throws Exception {
> ByteArrayOutputStream out = new ByteArrayOutputStream();
>
> @@ -143,38 +143,47 @@
>
> String bundleName = contribution.getURI();
> String uri = contribution.getURI();
> -
> +
> StringBuffer exportPackageNames = new StringBuffer();
> for (Export export : contribution.getExports()) {
> if (export instanceof JavaExport) {
> - if (exportPackageNames.length() > 0)
> exportPackageNames.append(",");
> + if (exportPackageNames.length() > 0)
> + exportPackageNames.append(",");
>
> exportPackageNames.append(((JavaExport)export).getPackage());
> }
> }
> StringBuffer importPackageNames = new StringBuffer();
> for (Import import_ : contribution.getImports()) {
> if (import_ instanceof JavaImport) {
> - if (importPackageNames.length() > 0)
> importPackageNames.append(",");
> + if (importPackageNames.length() > 0)
> + importPackageNames.append(",");
>
> importPackageNames.append(((JavaImport)import_).getPackage());
> }
> }
>
> - String manifestStr = "Manifest-Version: 1.0" + EOL
> - + "Bundle-ManifestVersion: 2" + EOL + "Bundle-Name: "
> - + bundleName + EOL + "Bundle-SymbolicName: " + bundleName
> + EOL
> - + "Bundle-Version: " + "1.0.0" + EOL
> - + "Bundle-Localization: plugin" + EOL;
> -
> + String manifestStr =
> + "Manifest-Version: 1.0" + EOL
> + + "Bundle-ManifestVersion: 2"
> + + EOL
> + + "Bundle-Name: "
> + + bundleName
> + + EOL
> + + "Bundle-SymbolicName: "
> + + bundleName
> + + EOL
> + + "Bundle-Version: "
> + + "1.0.0"
> + + EOL
> + + "Bundle-Localization: plugin"
> + + EOL;
>
> StringBuilder manifestBuf = new StringBuilder();
> manifestBuf.append(manifestStr);
> - manifestBuf.append("Export-Package: " + exportPackageNames +
> EOL);
> - manifestBuf.append("Import-Package: " + importPackageNames +
> EOL);
> + manifestBuf.append("Export-Package: " + exportPackageNames +
> EOL);
> + manifestBuf.append("Import-Package: " + importPackageNames +
> EOL);
> manifestBuf.append("Bundle-ClassPath: .," + uri + EOL);
> -
>
> - ByteArrayInputStream manifestStream = new ByteArrayInputStream(
> - manifestBuf.toString().getBytes());
> + ByteArrayInputStream manifestStream = new
> ByteArrayInputStream(manifestBuf.toString().getBytes());
> Manifest manifest = new Manifest();
> manifest.read(manifestStream);
>
> @@ -184,15 +193,14 @@
> jarOut.putNextEntry(ze);
> URL url = new URL(contribution.getLocation());
> InputStream stream = url.openStream();
> -
> +
> byte[] bytes = new byte[stream.available()];
> stream.read(bytes);
> jarOut.write(bytes);
> stream.close();
> -
> +
> jarOut.close();
> out.close();
> -
>
> ByteArrayInputStream in = new
> ByteArrayInputStream(out.toByteArray());
>
>
> Modified:
> incubator/tuscany/branches/sca-java-1.0/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
> (original)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
> Mon Sep 17 16:26:47 2007
> @@ -51,7 +51,7 @@
>
> @Override
> protected void tearDown() throws Exception {
> - OSGiRuntime.getRuntime().shutdown();
> + OSGiRuntime.stop();
> }
>
> public void testOSGiComponent() throws Exception {
>
> Modified:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
> (original)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
> Mon Sep 17 16:26:47 2007
> @@ -18,28 +18,30 @@
> */
> package org.apache.tuscany.sca.osgi.runtime;
>
> -
> import java.io.InputStream;
> import java.lang.reflect.Method;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
>
> import org.osgi.framework.Bundle;
> import org.osgi.framework.BundleContext;
> import org.osgi.framework.BundleException;
> import org.osgi.service.packageadmin.PackageAdmin;
>
> -public abstract class OSGiRuntime {
> -
> +public abstract class OSGiRuntime {
> + private static final Logger logger =
> Logger.getLogger(OSGiRuntime.class.getName());
> private BundleContext bundleContext;
> -
> +
> public abstract BundleContext getBundleContext();
> -
> +
> public abstract void shutdown() throws Exception;
> -
> +
> public abstract boolean supportsBundleFragments();
> -
> +
> private PackageAdmin packageAdmin;
> -
> -
> +
> + private static OSGiRuntime instance;
> +
> /**
> * System property
> org.apache.tuscany.implementation.osgi.runtime.OSGiRuntime can be set to
> the
> * name of the OSGiRuntime class (eg. EquinoxRuntime). If set, start
> this runtime and return the
> @@ -48,105 +50,106 @@
> *
> * @throws BundleException
> */
> - public static OSGiRuntime getRuntime() throws Exception {
> -
> + public synchronized static OSGiRuntime getRuntime() throws Exception
> {
> + if (instance != null) {
> + return instance;
> + }
> String runtimeClassName =
> System.getProperty(OSGiRuntime.class.getName());
>
> if (runtimeClassName != null) {
> try {
> Class<?> runtimeClass =
> OSGiRuntime.class.getClassLoader().loadClass(runtimeClassName);
> Method method = runtimeClass.getMethod("getInstance");
> - return (OSGiRuntime) method.invoke(null);
> -
> + instance = (OSGiRuntime)method.invoke(null);
> + return instance;
> +
> } catch (Exception e) {
> throw new BundleException("Could not start OSGi runtime "
> + runtimeClassName, e);
> }
> }
> -
> +
> try {
> -
> - return EquinoxRuntime.getInstance();
> -
> + instance = EquinoxRuntime.getInstance();
> + return instance;
> +
> } catch (ClassNotFoundException e) {
> - } catch (Throwable e) {
> - e.printStackTrace();
> - }
> -
> + // Ignore
> + } catch (Throwable e) {
> + logger.log(Level.SEVERE, e.getMessage(), e);
> + }
> +
> try {
> -
> - return FelixRuntime.getInstance();
> -
> + instance = FelixRuntime.getInstance();
> + return instance;
> } catch (ClassNotFoundException e) {
> - } catch (Throwable e) {
> - e.printStackTrace();
> - }
> -
> + // Ignore
> + } catch (Throwable e) {
> + logger.log(Level.SEVERE, e.getMessage(), e);
> + }
> +
> try {
> -
> - return KnopflerfishRuntime.getInstance();
> -
> + instance = KnopflerfishRuntime.getInstance();
> + return instance;
> } catch (ClassNotFoundException e) {
> - } catch (Throwable e) {
> - e.printStackTrace();
> - }
> -
> + // Ignore
> + } catch (Throwable e) {
> + logger.log(Level.SEVERE, e.getMessage(), e);
> + }
> +
> throw new BundleException("Could not start OSGi runtime from the
> classpath");
> }
> -
> +
> private void initialize() {
> - if (bundleContext == null)
> + if (bundleContext == null)
> bundleContext = getBundleContext();
> -
> - if (bundleContext != null) {
> -
> - org.osgi.framework.ServiceReference packageAdminReference =
> +
> + if (bundleContext != null) {
> +
> + org.osgi.framework.ServiceReference packageAdminReference =
>
> bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin");
> if (packageAdminReference != null) {
> -
> - packageAdmin = (PackageAdmin)
> bundleContext.getService(packageAdminReference);
> +
> + packageAdmin =
> (PackageAdmin)bundleContext.getService(packageAdminReference);
> }
> - }
> -
> + }
> +
> }
> -
>
> public Bundle findBundle(String bundleSymbolicName, String
> bundleVersion) {
> -
> - initialize();
> -
> +
> + initialize();
> +
> if (bundleContext != null) {
> Bundle[] installedBundles = bundleContext.getBundles();
> for (Bundle bundle : installedBundles) {
> - if (bundleSymbolicName.equals(bundle.getSymbolicName())
> &&
> - (bundleVersion == null ||
> -
> bundleVersion.equals(bundle.getHeaders().get("Bundle-Version"))))
> - return bundle;
> + if (bundleSymbolicName.equals(bundle.getSymbolicName())
> && (bundleVersion == null || bundleVersion
> + .equals(bundle.getHeaders().get("Bundle-Version"))))
> + return bundle;
> }
> -
> +
> }
> return null;
> }
> -
>
> public Bundle findBundle(String bundleLocation) {
> -
> +
> initialize();
> -
> +
> if (bundleContext != null) {
> Bundle[] installedBundles = bundleContext.getBundles();
> for (Bundle bundle : installedBundles) {
> if (bundle.getLocation().equals(bundleLocation))
> - return bundle;
> + return bundle;
> }
> -
> +
> }
> return null;
> }
> -
> +
> public Bundle installBundle(String bundleLocation, InputStream
> inputStream) {
> -
> - initialize();
> -
> +
> + initialize();
> +
> try {
> if (bundleContext != null) {
> Bundle bundle = findBundle(bundleLocation);
> @@ -156,15 +159,25 @@
> bundle = bundleContext.installBundle(bundleLocation);
> else
> bundle = bundleContext.installBundle(bundleLocation,
> inputStream);
> -
> +
> if (bundle != null && packageAdmin != null)
> - packageAdmin.refreshPackages(null);
> -
> + packageAdmin.refreshPackages(null);
> +
> return bundle;
> }
> } catch (BundleException e) {
> }
> return null;
> + }
> +
> + /**
> + * @return the instance
> + */
> + public synchronized static void stop() throws Exception {
> + if (instance != null) {
> + instance.shutdown();
> + instance = null;
> + }
> }
>
> }
>
> Added:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java?rev=576625&view=auto
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> (added)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> Mon Sep 17 16:26:47 2007
> @@ -0,0 +1,47 @@
> +/*
> + * 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.osgi.runtime;
> +
> +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.core.ModuleActivator;
> +
> +/**
> + * @version $Rev$ $Date$
> + */
> +public class OSGiRuntimeModuleActivator implements ModuleActivator {
> +
> + /**
> + * @see
> org.apache.tuscany.sca.core.ModuleActivator#start(org.apache.tuscany.sca.core.ExtensionPointRegistry)
> + */
> + public void start(ExtensionPointRegistry registry) {
> + }
> +
> + /**
> + * @see
> org.apache.tuscany.sca.core.ModuleActivator#stop(org.apache.tuscany.sca.core.ExtensionPointRegistry)
> + */
> + public void stop(ExtensionPointRegistry registry) {
> + try {
> + OSGiRuntime.stop();
> + } catch (Exception e) {
> + // Ignore the exception
> + }
> + }
> +
> +}
>
> Propchange:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeModuleActivator.java
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Added:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator?rev=576625&view=auto
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> (added)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> Mon Sep 17 16:26:47 2007
> @@ -0,0 +1,36 @@
> +# 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.
> +# Implementation class for the ModuleActivator
> +org.apache.tuscany.sca.osgi.runtime.OSGiRuntimeModuleActivator
> +# 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.
> +# Implementation class for the ModuleActivator
> +org.apache.tuscany.sca.osgi.runtime.OSGiRuntimeModuleActivator
>
> Modified:
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> ---
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
> (original)
> +++
> incubator/tuscany/branches/sca-java-1.0/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
> Mon Sep 17 16:26:47 2007
> @@ -19,40 +19,54 @@
>
> package org.apache.tuscany.sca.osgi.runtime;
>
> -import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
> -import org.osgi.framework.BundleContext;
> -
> import junit.framework.TestCase;
>
> +import org.osgi.framework.BundleContext;
> +
> /**
> * Test OSGi runtime.
> *
> */
> public class OSGiRuntimeTestCase extends TestCase {
> -
> + private OSGiRuntime runtime;
> +
> + /**
> + * @see junit.framework.TestCase#setUp()
> + */
> + @Override
> + protected void setUp() throws Exception {
> + this.runtime = OSGiRuntime.getRuntime();
> + }
> +
> + /**
> + * @see junit.framework.TestCase#tearDown()
> + */
> + @Override
> + protected void tearDown() throws Exception {
> + OSGiRuntime.stop();
> + }
> +
> public void testRuntime() throws Exception {
> -
> - BundleContext bc1 = OSGiRuntime.getRuntime().getBundleContext();
> -
> +
> + BundleContext bc1 = runtime.getBundleContext();
> +
> assertNotNull(bc1);
> -
> - BundleContext bc2 = OSGiRuntime.getRuntime().getBundleContext();
> -
> +
> + BundleContext bc2 = runtime.getBundleContext();
> +
> assertNotNull(bc2);
> -
> +
> assertTrue(bc1 == bc2);
> -
> - OSGiRuntime.getRuntime().shutdown();
> -
> - BundleContext bc3 = OSGiRuntime.getRuntime().getBundleContext();
> -
> +
> + OSGiRuntime.stop();
> + runtime = OSGiRuntime.getRuntime();
> +
> + BundleContext bc3 = runtime.getBundleContext();
> +
> assertNotNull(bc3);
> -
> +
> assertTrue(bc1 != bc3);
> -
> -
> -
> +
> }
>
> -
> }
>
> Modified: incubator/tuscany/branches/sca-java-1.0/modules/pom.xml
> URL:
> http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/pom.xml?rev=576625&r1=576624&r2=576625&view=diff
> ==============================================================================
> --- incubator/tuscany/branches/sca-java-1.0/modules/pom.xml (original)
> +++ incubator/tuscany/branches/sca-java-1.0/modules/pom.xml Mon Sep 17
> 16:26:47 2007
> @@ -49,7 +49,6 @@
> <module>binding-rmi</module>
> <module>binding-sca</module>
> <module>binding-sca-axis2</module>
> - <module>binding-osgi</module>
> <!--
> <module>binding-sca-jms</module>
> -->
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org