You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/02/13 23:15:39 UTC
svn commit: r744260 - in
/felix/trunk/framework/src/main/java/org/apache/felix: framework/
framework/searchpolicy/ moduleloader/
Author: rickhall
Date: Fri Feb 13 22:15:39 2009
New Revision: 744260
URL: http://svn.apache.org/viewvc?rev=744260&view=rev
Log:
Eliminated the URL policy abstraction. (FELIX-851)
Removed:
felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/URLPolicyImpl.java
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
felix/trunk/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java Fri Feb 13 22:15:39 2009
@@ -27,7 +27,6 @@
import org.apache.felix.framework.cache.BundleArchive;
import org.apache.felix.framework.ext.SecurityProvider;
import org.apache.felix.framework.searchpolicy.ModuleImpl;
-import org.apache.felix.framework.searchpolicy.URLPolicyImpl;
import org.apache.felix.moduleloader.IModule;
import org.osgi.framework.*;
@@ -586,7 +585,8 @@
return m_state;
}
- void setState(int i)
+ // This method should not be called directly.
+ void __setState(int i)
{
m_state = i;
}
@@ -940,6 +940,7 @@
Map headerMap = m_archive.getRevision(
m_archive.getRevisionCount() - 1).getManifestHeader();
+ // Create the module instance.
final int revision = m_archive.getRevisionCount() - 1;
ModuleImpl module = new ModuleImpl(
getFramework().getLogger(),
@@ -948,7 +949,8 @@
this,
Long.toString(getBundleId()) + "." + Integer.toString(revision),
headerMap,
- m_archive.getRevision(revision).getContent());
+ m_archive.getRevision(revision).getContent(),
+ getFramework().getBundleStreamHandler());
// Verify that the bundle symbolic name + version is unique.
if (module.getManifestVersion().equals("2"))
@@ -974,15 +976,6 @@
}
}
- // Set the module's URL policy.
-// TODO: REFACTOR - Pass into constructor?
- module.setURLPolicy(
-// TODO: REFACTOR - SUCKS NEEDING URL POLICY PER MODULE.
- new URLPolicyImpl(
- getFramework().getLogger(),
- getFramework().getBundleStreamHandler(),
- module));
-
return module;
}
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java Fri Feb 13 22:15:39 2009
@@ -615,7 +615,7 @@
{
ExtensionManagerModule(Felix felix) throws BundleException
{
- super(m_logger, null, null, felix, "0", null, null);
+ super(m_logger, null, null, felix, "0", null, null, null);
}
public Map getHeaders()
@@ -702,16 +702,6 @@
return ExtensionManager.this;
}
- public synchronized void setURLPolicy(IURLPolicy urlPolicy)
- {
- m_urlPolicy = urlPolicy;
- }
-
- public synchronized IURLPolicy getURLPolicy()
- {
- return m_urlPolicy;
- }
-
public URL getEntry(String name)
{
// There is no content for the system bundle, so return null.
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java Fri Feb 13 22:15:39 2009
@@ -4104,7 +4104,7 @@
{
synchronized (m_bundleLock)
{
- bundle.setState(state);
+ bundle.__setState(state);
m_bundleLock.notifyAll();
}
}
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/ModuleImpl.java Fri Feb 13 22:15:39 2009
@@ -24,7 +24,9 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
+import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLStreamHandler;
import java.security.ProtectionDomain;
import java.security.SecureClassLoader;
import java.util.ArrayList;
@@ -62,6 +64,7 @@
private final String m_id;
private final IContent m_content;
private final Map m_headerMap;
+ private final URLStreamHandler m_streamHandler;
private final String m_manifestVersion;
private final Version m_version;
@@ -82,7 +85,6 @@
private IContent[] m_contentPath;
private IContent[] m_fragmentContents = null;
- private IURLPolicy m_urlPolicy = null;
private ModuleClassLoader m_classLoader;
private ProtectionDomain m_protectionDomain = null;
private static SecureAction m_secureAction = new SecureAction();
@@ -99,7 +101,8 @@
public ModuleImpl(
Logger logger, Map configMap, FelixResolver resolver,
- Bundle bundle, String id, Map headerMap, IContent content)
+ Bundle bundle, String id, Map headerMap, IContent content,
+ URLStreamHandler streamHandler)
throws BundleException
{
m_logger = logger;
@@ -109,6 +112,7 @@
m_id = id;
m_headerMap = headerMap;
m_content = content;
+ m_streamHandler = streamHandler;
// We need to special case the system bundle module, which does not
// have a content.
@@ -600,7 +604,7 @@
if (name.equals("/"))
{
// Just pick a class path index since it doesn't really matter.
- url = getURLPolicy().createURL(1, name);
+ url = createURL(1, name);
}
else if (name.startsWith("/"))
{
@@ -615,7 +619,7 @@
{
if (contentPath[i].hasEntry(name))
{
- url = getURLPolicy().createURL(i + 1, name);
+ url = createURL(i + 1, name);
}
}
@@ -803,7 +807,7 @@
{
for (int i = 0; i < contentPath.length; i++)
{
- v.addElement(getURLPolicy().createURL(i + 1, name));
+ v.addElement(createURL(i + 1, name));
}
}
else
@@ -823,7 +827,7 @@
// that we can differentiate between module content URLs
// (where the path will start with 0) and module class
// path URLs.
- v.addElement(getURLPolicy().createURL(i + 1, name));
+ v.addElement(createURL(i + 1, name));
}
}
}
@@ -841,7 +845,7 @@
// the root of the bundle according to the spec.
if (name.equals("/"))
{
- url = getURLPolicy().createURL(0, "/");
+ url = createURL(0, "/");
}
if (url == null)
@@ -858,7 +862,7 @@
// Module content URLs start with 0, whereas module
// class path URLs start with the index into the class
// path + 1.
- url = getURLPolicy().createURL(0, name);
+ url = createURL(0, name);
}
}
@@ -892,6 +896,32 @@
return getContentPath()[index - 1].getEntryAsStream(urlPath);
}
+ private URL createURL(int port, String path)
+ {
+ // Add a slash if there is one already, otherwise
+ // the is no slash separating the host from the file
+ // in the resulting URL.
+ if (!path.startsWith("/"))
+ {
+ path = "/" + path;
+ }
+
+ try
+ {
+ return m_secureAction.createURL(
+ FelixConstants.BUNDLE_URL_PROTOCOL,
+ m_id, port, path, m_streamHandler);
+ }
+ catch (MalformedURLException ex)
+ {
+ m_logger.log(
+ Logger.LOG_ERROR,
+ "Unable to create resource URL.",
+ ex);
+ }
+ return null;
+ }
+
//
// Fragment and dependency management methods.
//
@@ -1086,16 +1116,6 @@
m_classLoader = null;
}
- public synchronized void setURLPolicy(IURLPolicy urlPolicy)
- {
- m_urlPolicy = urlPolicy;
- }
-
- public synchronized IURLPolicy getURLPolicy()
- {
- return m_urlPolicy;
- }
-
public synchronized void setSecurityContext(Object securityContext)
{
m_protectionDomain = (ProtectionDomain) securityContext;
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java Fri Feb 13 22:15:39 2009
@@ -51,8 +51,6 @@
// Returns a map of resolved bundles where the key is the module
// and the value is an array of wires.
- // TODO: RESOLVER - The caller must ensure this is not called currently;
- // this may not be important if no state is shared.
public Map resolve(ResolverState state, IModule rootModule) throws ResolveException
{
// If the module is already resolved, then we can just return.
Modified: felix/trunk/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/moduleloader/IModule.java?rev=744260&r1=744259&r2=744260&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/moduleloader/IModule.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/moduleloader/IModule.java Fri Feb 13 22:15:39 2009
@@ -28,8 +28,6 @@
public interface IModule
{
- void setURLPolicy(IURLPolicy urlPolicy);
- IURLPolicy getURLPolicy();
void setSecurityContext(Object securityContext);
Object getSecurityContext();