You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2012/04/10 10:29:10 UTC

svn commit: r1311628 - in /ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl: Activator.java VerifierBundleRevision.java VerifierResolverState.java VerifierServiceImpl.java

Author: jawi
Date: Tue Apr 10 08:29:09 2012
New Revision: 1311628

URL: http://svn.apache.org/viewvc?rev=1311628&view=rev
Log:
ACE-219: cleaned up the verifier service itself to understand how the service works.

Modified:
    ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/Activator.java
    ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierBundleRevision.java
    ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierResolverState.java
    ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierServiceImpl.java

Modified: ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/Activator.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/Activator.java?rev=1311628&r1=1311627&r2=1311628&view=diff
==============================================================================
--- ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/Activator.java (original)
+++ ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/Activator.java Tue Apr 10 08:29:09 2012
@@ -22,13 +22,22 @@ import org.apache.ace.deployment.verifie
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
+/**
+ * Provides a {@link BundleActivator} implementation for the {@link VerifierService}.
+ */
 public class Activator implements BundleActivator {
 
-	public void start(BundleContext context) throws Exception {
-		context.registerService(VerifierService.class.getName(), new VerifierServiceImpl(), null);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-	}
+    /**
+     * {@inheritDoc}
+     */
+    public void start(BundleContext context) {
+        context.registerService(VerifierService.class.getName(), new VerifierServiceImpl(), null);
+    }
 
+    /**
+     * {@inheritDoc}
+     */
+    public void stop(BundleContext context) {
+        // Nop
+    }
 }

Modified: ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierBundleRevision.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierBundleRevision.java?rev=1311628&r1=1311627&r2=1311628&view=diff
==============================================================================
--- ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierBundleRevision.java (original)
+++ ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierBundleRevision.java Tue Apr 10 08:29:09 2012
@@ -38,7 +38,11 @@ import org.osgi.framework.wiring.BundleR
 import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.framework.wiring.BundleWiring;
 
+/**
+ *
+ */
 public class VerifierBundleRevision implements BundleRevision {
+    
 	private final String m_symbolicName;
 	private final Version m_version;
 	private final List<BundleCapability> m_declaredCaps;
@@ -48,6 +52,13 @@ public class VerifierBundleRevision impl
 	private final List<R4Library> m_declaredLibs;
 	private final Map<String, String> m_headers;
 
+	/**
+	 * @param log
+	 * @param bundle
+	 * @param config
+	 * @param headers
+	 * @throws BundleException
+	 */
 	public VerifierBundleRevision(Logger log, Bundle bundle, Map<String, String> config, Map<String, String> headers) throws BundleException {
 		m_bundle = bundle;
 		m_headers = Collections.unmodifiableMap(headers);
@@ -60,39 +71,40 @@ public class VerifierBundleRevision impl
 		m_declaredLibs = parser.getLibraries();
 	}
 
-	private static List<BundleCapability> aliasSymbolicName(List<BundleCapability> caps)
+    /**
+     * Takes a given list of bundle capabilities and patches all symbolic names to be marked as system bundles.
+     * 
+     * @param capabilities the capabilities to patch, may be <code>null</code>.
+     * @return the patched capabilities, or an emtpy list in case the given capabilities was <code>null</code>.
+     */
+    private static List<BundleCapability> aliasSymbolicName(List<BundleCapability> capabilities)
     {
-        if (caps == null)
+        if (capabilities == null)
         {
-            return new ArrayList<BundleCapability>(0);
+            return Collections.emptyList();
         }
 
-        List<BundleCapability> aliasCaps = new ArrayList<BundleCapability>(caps);
+        List<BundleCapability> aliasCaps = new ArrayList<BundleCapability>(capabilities);
 
         for (int capIdx = 0; capIdx < aliasCaps.size(); capIdx++)
         {
+            BundleCapability capability = aliasCaps.get(capIdx);
+            
             // Get the attributes and search for bundle symbolic name.
-            for (Entry<String, Object> entry : aliasCaps.get(capIdx).getAttributes().entrySet())
+            Map<String, Object> attributes = capability.getAttributes();
+            
+            for (Entry<String, Object> entry : attributes.entrySet())
             {
                 // If there is a bundle symbolic name attribute, add the
                 // standard alias as a value.
-                if (entry.getKey().equalsIgnoreCase(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE))
+                if (Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE.equalsIgnoreCase(entry.getKey()))
                 {
                     // Make a copy of the attribute array.
-                    Map<String, Object> aliasAttrs =
-                        new HashMap<String, Object>(aliasCaps.get(capIdx).getAttributes());
+                    Map<String, Object> aliasAttrs = new HashMap<String, Object>(attributes);
                     // Add the aliased value.
-                    aliasAttrs.put(
-                        Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE,
-                        new String[] {
-                            (String) entry.getValue(),
-                            Constants.SYSTEM_BUNDLE_SYMBOLICNAME});
+                    aliasAttrs.put(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE, new String[] { (String) entry.getValue(), Constants.SYSTEM_BUNDLE_SYMBOLICNAME });
                     // Create the aliased capability to replace the old capability.
-                    aliasCaps.set(capIdx, new BundleCapabilityImpl(
-                        caps.get(capIdx).getRevision(),
-                        caps.get(capIdx).getNamespace(),
-                        caps.get(capIdx).getDirectives(),
-                        aliasAttrs));
+                    aliasCaps.set(capIdx, new BundleCapabilityImpl(capability.getRevision(), capability.getNamespace(), capability.getDirectives(), aliasAttrs));
                     // Continue with the next capability.
                     break;
                 }
@@ -101,47 +113,91 @@ public class VerifierBundleRevision impl
 
         return aliasCaps;
     }
-	
+
+	/**
+	 * {@inheritDoc}
+	 */
 	public Bundle getBundle() {
 		return m_bundle;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public String getSymbolicName() {
 		return m_symbolicName;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public Version getVersion() {
 		return m_version;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public List<BundleCapability> getDeclaredCapabilities(String namespace) {
 		return m_declaredCaps;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public List<BundleRequirement> getDeclaredRequirements(String namespace) {
 		return m_declaredReqs;
 	}
 	
+    /**
+     * {@inheritDoc}
+     */
 	public List<R4Library> getDeclaredNativeLibraries() {
 		return m_declaredLibs;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public int getTypes() {
 		return m_type;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public BundleWiring getWiring() {
 		return null;
 	}
 
+    /**
+     * {@inheritDoc}
+     */
 	public Map<String, String> getHeaders() {
 		return m_headers;
 	}
 	
+	/**
+	 * Returns the required execution environment, if defined.
+	 * 
+	 * @return the required execution environment, can be <code>null</code> if not defined.
+	 */
+	@SuppressWarnings("deprecation")
+    public String getRequiredExecutionEnvironment() {
+	    String result = getHeaders().get(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT);
+        return result == null ? null : result.trim();
+	}
+	
+    /**
+     * {@inheritDoc}
+     */
 	public int hashCode() {
 		return (int) getBundle().getBundleId();
 	}
 	
+    /**
+     * {@inheritDoc}
+     */
 	public boolean equals(Object o) {
 		if (o instanceof VerifierBundleRevision) {
 			return o.hashCode() == hashCode();
@@ -149,6 +205,9 @@ public class VerifierBundleRevision impl
 		return false;
 	}
 	
+    /**
+     * {@inheritDoc}
+     */
 	public String toString() {
 		return m_symbolicName + ";"+ Constants.VERSION_ATTRIBUTE + "=" + m_version + "(id=" + getBundle().getBundleId() + ")";
 	}

Modified: ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierResolverState.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierResolverState.java?rev=1311628&r1=1311627&r2=1311628&view=diff
==============================================================================
--- ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierResolverState.java (original)
+++ ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierResolverState.java Tue Apr 10 08:29:09 2012
@@ -33,6 +33,7 @@ import org.apache.felix.framework.capabi
 import org.apache.felix.framework.resolver.CandidateComparator;
 import org.apache.felix.framework.resolver.ResolveException;
 import org.apache.felix.framework.resolver.Resolver;
+import org.apache.felix.framework.resolver.Resolver.ResolverState;
 import org.apache.felix.framework.util.Util;
 import org.apache.felix.framework.util.manifestparser.R4Library;
 import org.apache.felix.framework.wiring.BundleRequirementImpl;
@@ -41,6 +42,9 @@ import org.osgi.framework.wiring.BundleC
 import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleRevision;
 
+/**
+ * Provides a custom {@link ResolverState} implementation to hold all state during resolving.
+ */
 public class VerifierResolverState implements Resolver.ResolverState {
 
 	// Set of all revisions.
@@ -54,16 +58,11 @@ public class VerifierResolverState imple
 	// Parsed framework environments
 	private final Set<String> m_fwkExecEnvSet;
 
-	// void dump()
-	// {
-	// for (Entry<String, CapabilitySet> entry : m_capSets.entrySet())
-	// {
-	// System.out.println("+++ START CAPSET " + entry.getKey());
-	// entry.getValue().dump();
-	// System.out.println("+++ END CAPSET " + entry.getKey());
-	// }
-	// }
-
+	/**
+	 * Creates a new {@link VerifierResolverState} instance.
+	 * 
+	 * @param fwkExecEnvStr the framework execution environment, can be <code>null</code>.
+	 */
 	public VerifierResolverState(String fwkExecEnvStr) {
 		m_revisions = new HashSet<BundleRevision>();
 		m_fragments = new HashSet<BundleRevision>();
@@ -74,18 +73,15 @@ public class VerifierResolverState imple
 
 		List<String> indices = new ArrayList<String>();
 		indices.add(BundleRevision.BUNDLE_NAMESPACE);
-		m_capSets.put(BundleRevision.BUNDLE_NAMESPACE, new CapabilitySet(
-				indices, true));
+		m_capSets.put(BundleRevision.BUNDLE_NAMESPACE, new CapabilitySet(indices, true));
 
 		indices = new ArrayList<String>();
 		indices.add(BundleRevision.PACKAGE_NAMESPACE);
-		m_capSets.put(BundleRevision.PACKAGE_NAMESPACE, new CapabilitySet(
-				indices, true));
+		m_capSets.put(BundleRevision.PACKAGE_NAMESPACE, new CapabilitySet(indices, true));
 
 		indices = new ArrayList<String>();
 		indices.add(BundleRevision.HOST_NAMESPACE);
-		m_capSets.put(BundleRevision.HOST_NAMESPACE, new CapabilitySet(indices,
-				true));
+		m_capSets.put(BundleRevision.HOST_NAMESPACE, new CapabilitySet(indices, true));
 	}
 
 	synchronized Set<BundleRevision> getUnresolvedRevisions() {
@@ -156,22 +152,20 @@ public class VerifierResolverState imple
 		return new HashSet(m_fragments);
 	}
 
-	//
-	// ResolverState methods.
-	//
-
+	/**
+	 * {@inheritDoc}
+	 */
 	public boolean isEffective(BundleRequirement req) {
-		String effective = req.getDirectives().get(
-				Constants.EFFECTIVE_DIRECTIVE);
-		return ((effective == null) || effective
-				.equals(Constants.EFFECTIVE_RESOLVE));
+		String effective = req.getDirectives().get(Constants.EFFECTIVE_DIRECTIVE);
+		return ((effective == null) || effective.equals(Constants.EFFECTIVE_RESOLVE));
 	}
 
-	public synchronized SortedSet<BundleCapability> getCandidates(
-			BundleRequirement req, boolean obeyMandatory) {
-		BundleRevision reqRevision = req.getRevision();
-		SortedSet<BundleCapability> result = new TreeSet<BundleCapability>(
-				new CandidateComparator());
+    /**
+     * {@inheritDoc}
+     */
+	public synchronized SortedSet<BundleCapability> getCandidates(BundleRequirement req, boolean obeyMandatory) {
+//		BundleRevision reqRevision = req.getRevision();
+		SortedSet<BundleCapability> result = new TreeSet<BundleCapability>(new CandidateComparator());
 
 		CapabilitySet capSet = m_capSets.get(req.getNamespace());
 		if (capSet != null) {
@@ -284,56 +278,47 @@ public class VerifierResolverState imple
 		return result;
 	}
 
-	public void checkExecutionEnvironment(BundleRevision revision)
-			throws ResolveException {
-		String bundleExecEnvStr = (String) ((VerifierBundleRevision) revision)
-				.getHeaders()
-				.get(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT);
+    /**
+     * {@inheritDoc}
+     */
+	public void checkExecutionEnvironment(BundleRevision revision) throws ResolveException {
+		String bundleExecEnvStr = ((VerifierBundleRevision) revision).getRequiredExecutionEnvironment();
 		if (bundleExecEnvStr != null) {
-			bundleExecEnvStr = bundleExecEnvStr.trim();
-
 			// If the bundle has specified an execution environment and the
 			// framework has an execution environment specified, then we must
 			// check for a match.
-			if (!bundleExecEnvStr.equals("") && (m_fwkExecEnvStr != null)
-					&& (m_fwkExecEnvStr.length() > 0)) {
-				StringTokenizer tokens = new StringTokenizer(bundleExecEnvStr,
-						",");
+			if (!bundleExecEnvStr.equals("") && (m_fwkExecEnvStr != null) && (m_fwkExecEnvStr.length() > 0)) {
+				StringTokenizer tokens = new StringTokenizer(bundleExecEnvStr, ",");
+
 				boolean found = false;
 				while (tokens.hasMoreTokens() && !found) {
 					if (m_fwkExecEnvSet.contains(tokens.nextToken().trim())) {
 						found = true;
 					}
 				}
+				
 				if (!found) {
-					throw new ResolveException(
-							"Execution environment not supported: "
-									+ bundleExecEnvStr, revision, null);
+					throw new ResolveException("Execution environment not supported: " + bundleExecEnvStr, revision, null);
 				}
 			}
 		}
 	}
 
-	public void checkNativeLibraries(BundleRevision revision)
-			throws ResolveException {
+    /**
+     * {@inheritDoc}
+     */
+	public void checkNativeLibraries(BundleRevision revision) throws ResolveException {
 		// Next, try to resolve any native code, since the revision is
 		// not resolvable if its native code cannot be loaded.
-		List<R4Library> libs = ((VerifierBundleRevision) revision)
-				.getDeclaredNativeLibraries();
-		if (libs != null) {
-			// If we have a zero-length native library array, then
-			// this means no native library class could be selected
-			// so we should fail to resolve.
-			if (libs.isEmpty()) {
-				throw new ResolveException("No matching native libraries found.", revision, null);
-			}
+		List<R4Library> libs = ((VerifierBundleRevision) revision).getDeclaredNativeLibraries();
+		// If we have a zero-length native library array, then
+		// this means no native library class could be selected
+		// so we should fail to resolve.
+		if ((libs != null) && libs.isEmpty()) {
+			throw new ResolveException("No matching native libraries found.", revision, null);
 		}
 	}
 
-	//
-	// Utility methods.
-	//
-
 	/**
 	 * Updates the framework wide execution environment string and a cached Set
 	 * of execution environment tokens from the comma delimited list specified

Modified: ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierServiceImpl.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierServiceImpl.java?rev=1311628&r1=1311627&r2=1311628&view=diff
==============================================================================
--- ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierServiceImpl.java (original)
+++ ace/trunk/ace-deployment-verifier/src/main/java/org/apache/ace/deployment/verifier/impl/VerifierServiceImpl.java Tue Apr 10 08:29:09 2012
@@ -18,304 +18,19 @@
  */
 package org.apache.ace.deployment.verifier.impl;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.cert.X509Certificate;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
 
 import org.apache.ace.deployment.verifier.VerifierService;
-import org.apache.felix.framework.Logger;
-import org.apache.felix.framework.resolver.Resolver;
-import org.apache.felix.framework.resolver.ResolverImpl;
-import org.apache.felix.framework.resolver.ResolverWire;
-import org.apache.felix.framework.util.MapToDictionary;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.Version;
-import org.osgi.framework.wiring.BundleCapability;
-import org.osgi.framework.wiring.BundleRequirement;
-import org.osgi.framework.wiring.BundleRevision;
-import org.osgi.service.log.LogEntry;
 
+/**
+ * Provides a verifier service implementation.
+ */
 public class VerifierServiceImpl implements VerifierService {
+    
+    /**
+     * {@inheritDoc}
+     */
 	public VerifyEnvironment createEnvironment(Map<String, String> config, VerifyReporter reporter) {
 		return new VerifyEnvironmentImpl(config, reporter);
 	}
-
-	private static final class VerifyEnvironmentImpl implements
-			VerifierService.VerifyEnvironment {
-		final Logger m_log = new Logger();
-		final VerifyReporter m_reporter;
-		final Map<String, String> m_config;
-		private final Map<Long, VerifierBundleRevision> m_bundles = new HashMap<Long, VerifierBundleRevision>();
-
-		public VerifyEnvironmentImpl(Map<String, String> config,
-				VerifyReporter reporter) {
-			m_config = config;
-			if (reporter == null) {
-				m_reporter = new VerifyReporter() {
-
-					public void reportWire(BundleRevision importer,
-							BundleRequirement reqirement,
-							BundleRevision exporter, BundleCapability capability) {
-						// TODO Auto-generated method stub
-
-					}
-
-					public void reportLog(LogEntry entry) {
-						// TODO Auto-generated method stub
-
-					}
-
-					public void reportException(Exception ex) {
-						// TODO Auto-generated method stub
-
-					}
-				};
-			} else {
-				m_reporter = reporter;
-			}
-			m_log.setLogger(new Object() {
-				@SuppressWarnings("unused")
-				public void log(final ServiceReference ref, final int level,
-						final String message, final Throwable t) {
-					final long time = System.currentTimeMillis();
-					m_reporter.reportLog(new LogEntry() {
-
-						public long getTime() {
-							return time;
-						}
-
-						public ServiceReference getServiceReference() {
-							return ref;
-						}
-
-						public String getMessage() {
-							return message;
-						}
-
-						public int getLevel() {
-							return level;
-						}
-
-						public Throwable getException() {
-							return t;
-						}
-
-						public Bundle getBundle() {
-							return null;
-						}
-					});
-				}
-			});
-			m_log.setLogLevel(Logger.LOG_DEBUG);
-		}
-
-		public boolean verifyResolve(Set<BundleRevision> mandatory,
-				Set<BundleRevision> optional,
-				Set<BundleRevision> ondemandFragments) {
-
-			VerifierResolverState state = new VerifierResolverState(
-					this.m_config.get(Constants.FRAMEWORK_EXECUTIONENVIRONMENT));
-			for (VerifierBundleRevision rev : m_bundles.values()) {
-				state.addRevision(rev);
-			}
-			Resolver resolver = new ResolverImpl(m_log);
-			try {
-				Map<BundleRevision, List<ResolverWire>> result = resolver
-						.resolve(
-								state,
-								(mandatory == null) ? new HashSet<BundleRevision>()
-										: mandatory,
-								(optional == null) ? new HashSet<BundleRevision>()
-										: optional,
-								(ondemandFragments == null) ? new HashSet<BundleRevision>()
-										: ondemandFragments);
-				for (Entry<BundleRevision, List<ResolverWire>> entry : result
-						.entrySet()) {
-					for (ResolverWire wire : entry.getValue()) {
-						m_reporter.reportWire(wire.getRequirer(),
-								wire.getRequirement(), wire.getProvider(),
-								wire.getCapability());
-					}
-				}
-			} catch (Exception ex) {
-				m_reporter.reportException(ex);
-				return false;
-			}
-			return true;
-		}
-
-		public BundleRevision addBundle(final long id,
-				final Map<String, String> manifest) throws BundleException {
-			if (m_bundles.containsKey(id)) {
-				throw new BundleException("Bundle already exists for id: " + id);
-			}
-			VerifierBundleRevision rev = null;
-			m_bundles.put(id, (rev = new VerifierBundleRevision(m_log,
-					new Bundle() {
-
-						public int compareTo(Bundle o) {
-							return (int) (o.getBundleId() - getBundleId());
-						}
-
-						public int getState() {
-							return Bundle.INSTALLED;
-						}
-
-						public void start(int options) throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void start() throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void stop(int options) throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void stop() throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void update(InputStream input)
-								throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void update() throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public void uninstall() throws BundleException {
-							// TODO Auto-generated method stub
-
-						}
-
-						public Dictionary<String, String> getHeaders() {
-							return new MapToDictionary(manifest);
-						}
-
-						public long getBundleId() {
-							return id;
-						}
-
-						public String getLocation() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public ServiceReference<?>[] getRegisteredServices() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public ServiceReference<?>[] getServicesInUse() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public boolean hasPermission(Object permission) {
-							// TODO Auto-generated method stub
-							return false;
-						}
-
-						public URL getResource(String name) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Dictionary<String, String> getHeaders(
-								String locale) {
-							return getHeaders();
-						}
-
-						public String getSymbolicName() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Class<?> loadClass(String name)
-								throws ClassNotFoundException {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Enumeration<URL> getResources(String name)
-								throws IOException {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Enumeration<String> getEntryPaths(String path) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public URL getEntry(String path) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public long getLastModified() {
-							// TODO Auto-generated method stub
-							return 0;
-						}
-
-						public Enumeration<URL> findEntries(String path,
-								String filePattern, boolean recurse) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public BundleContext getBundleContext() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(
-								int signersType) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public Version getVersion() {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public <A> A adapt(Class<A> type) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-						public File getDataFile(String filename) {
-							// TODO Auto-generated method stub
-							return null;
-						}
-
-					}, m_config, manifest)));
-			return rev;
-		}
-
-	}
 }