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 2010/04/01 16:10:40 UTC
svn commit: r929983 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework:
FelixResolverState.java resolver/Resolver.java resolver/ResolverImpl.java
Author: rickhall
Date: Thu Apr 1 14:10:39 2010
New Revision: 929983
URL: http://svn.apache.org/viewvc?rev=929983&view=rev
Log:
Move native library checking to resolver state. (FELIX-2035)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Resolver.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java?rev=929983&r1=929982&r2=929983&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java Thu Apr 1 14:10:39 2010
@@ -37,6 +37,7 @@ import org.apache.felix.framework.resolv
import org.apache.felix.framework.resolver.ResolveException;
import org.apache.felix.framework.resolver.Resolver;
import org.apache.felix.framework.util.Util;
+import org.apache.felix.framework.util.manifestparser.R4Library;
import org.osgi.framework.BundlePermission;
import org.osgi.framework.Constants;
import org.osgi.framework.Version;
@@ -808,6 +809,41 @@ public class FelixResolverState implemen
}
}
+ public void checkNativeLibraries(Module module) throws ResolveException
+ {
+ // Next, try to resolve any native code, since the module is
+ // not resolvable if its native code cannot be loaded.
+ List<R4Library> libs = module.getNativeLibraries();
+ if (libs != null)
+ {
+ String msg = null;
+ // Verify that all native libraries exist in advance; this will
+ // throw an exception if the native library does not exist.
+ for (int libIdx = 0; (msg == null) && (libIdx < libs.size()); libIdx++)
+ {
+ String entryName = libs.get(libIdx).getEntryName();
+ if (entryName != null)
+ {
+ if (!module.getContent().hasEntry(entryName))
+ {
+ msg = "Native library does not exist: " + entryName;
+ }
+ }
+ }
+ // 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.size() == 0)
+ {
+ msg = "No matching native libraries found.";
+ }
+ if (msg != null)
+ {
+ throw new ResolveException(msg, module, null);
+ }
+ }
+ }
+
//
// Utility methods.
//
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Resolver.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Resolver.java?rev=929983&r1=929982&r2=929983&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Resolver.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Resolver.java Thu Apr 1 14:10:39 2010
@@ -33,5 +33,6 @@ public interface Resolver
{
Set<Capability> getCandidates(Module module, Requirement req, boolean obeyMandatory);
void checkExecutionEnvironment(Module module) throws ResolveException;
+ void checkNativeLibraries(Module module) throws ResolveException;
}
}
\ No newline at end of file
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java?rev=929983&r1=929982&r2=929983&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java Thu Apr 1 14:10:39 2010
@@ -27,7 +27,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.StringTokenizer;
import java.util.TreeSet;
import org.apache.felix.framework.FelixResolverState;
import org.apache.felix.framework.Logger;
@@ -36,7 +35,6 @@ import org.apache.felix.framework.capabi
import org.apache.felix.framework.capabilityset.CapabilitySet;
import org.apache.felix.framework.capabilityset.Directive;
import org.apache.felix.framework.capabilityset.Requirement;
-import org.apache.felix.framework.util.manifestparser.R4Library;
import org.apache.felix.framework.util.manifestparser.RequirementImpl;
import org.osgi.framework.Constants;
@@ -430,7 +428,7 @@ public class ResolverImpl implements Res
state.checkExecutionEnvironment(module);
// Verify that any native libraries match the current platform.
- verifyNativeLibraries(module);
+ state.checkNativeLibraries(module);
// Record cycle count.
cycleCount = new Integer(0);
@@ -1451,42 +1449,6 @@ ex.printStackTrace();
return wireMap;
}
-// TODO: FELIX3 - This check should be moved to ResolverState.
- private static void verifyNativeLibraries(Module module)
- {
- // Next, try to resolve any native code, since the module is
- // not resolvable if its native code cannot be loaded.
- List<R4Library> libs = module.getNativeLibraries();
- if (libs != null)
- {
- String msg = null;
- // Verify that all native libraries exist in advance; this will
- // throw an exception if the native library does not exist.
- for (int libIdx = 0; (msg == null) && (libIdx < libs.size()); libIdx++)
- {
- String entryName = libs.get(libIdx).getEntryName();
- if (entryName != null)
- {
- if (!module.getContent().hasEntry(entryName))
- {
- msg = "Native library does not exist: " + entryName;
- }
- }
- }
- // 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.size() == 0)
- {
- msg = "No matching native libraries found.";
- }
- if (msg != null)
- {
- throw new ResolveException(msg, module, null);
- }
- }
- }
-
private static class Packages
{
public final Map<String, Blame> m_exportedPkgs