01: /*
02: * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright
03: * notice. All rights reserved.
04: */
05: package com.tc.bundles;
06:
07: import org.osgi.framework.BundleException;
08: import org.osgi.framework.InvalidSyntaxException;
09: import org.osgi.framework.ServiceReference;
10:
11: import com.terracottatech.config.Modules;
12:
13: import java.net.URL;
14: import java.util.ArrayList;
15: import java.util.Dictionary;
16: import java.util.List;
17:
18: /**
19: * For OSGi information please refer to the documentation at the <a href="http://www.osgi.org/">OSGi web page</a>
20: */
21: public interface EmbeddedOSGiRuntime {
22:
23: URL[] getRepositories();
24:
25: void installBundle(final URL bundle) throws BundleException;
26:
27: void installBundles(final URL[] bundles) throws BundleException;
28:
29: void startBundles(final URL[] bundles,
30: final EmbeddedOSGiEventHandler handler)
31: throws BundleException;
32:
33: void registerService(final Object serviceObject,
34: final Dictionary serviceProps) throws BundleException;
35:
36: void registerService(final String serviceName,
37: final Object serviceObject, final Dictionary serviceProps)
38: throws BundleException;
39:
40: ServiceReference[] getAllServiceReferences(final String clazz,
41: final String filter) throws InvalidSyntaxException;
42:
43: Object getService(final ServiceReference service);
44:
45: void ungetService(final ServiceReference service);
46:
47: void shutdown();
48:
49: static class Factory {
50:
51: public static EmbeddedOSGiRuntime createOSGiRuntime(
52: final Modules modules) throws BundleException,
53: Exception {
54: List repoList = new ArrayList();
55: int repoCount = modules.sizeOfRepositoryArray();
56: for (int i = 0; i < repoCount; i++) {
57: final String location = modules.getRepositoryArray(i);
58: repoList.add(new URL(location.replaceFirst("^/",
59: "file:///")));
60: }
61: return new KnopflerfishOSGi((URL[]) repoList
62: .toArray(new URL[0]));
63: }
64: }
65:
66: }
|