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/07/03 18:31:09 UTC
svn commit: r790963 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework:
ModuleImpl.java util/manifestparser/R4Library.java
Author: rickhall
Date: Fri Jul 3 16:31:09 2009
New Revision: 790963
URL: http://svn.apache.org/viewvc?rev=790963&view=rev
Log:
Add support for configurable native library extensions. (FELIX-1298)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4Library.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java?rev=790963&r1=790962&r2=790963&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java Fri Jul 3 16:31:09 2009
@@ -1876,7 +1876,7 @@
R4Library[] libs = getNativeLibraries();
for (int i = 0; (libs != null) && (i < libs.length); i++)
{
- if (libs[i].match(name))
+ if (libs[i].match(m_configMap, name))
{
return getContent().getEntryAsNativeLibrary(libs[i].getEntryName());
}
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4Library.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4Library.java?rev=790963&r1=790962&r2=790963&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4Library.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4Library.java Fri Jul 3 16:31:09 2009
@@ -18,6 +18,7 @@
*/
package org.apache.felix.framework.util.manifestparser;
+import java.util.Map;
import org.osgi.framework.Constants;
public class R4Library
@@ -80,26 +81,41 @@
* @return <tt>true</tt> if this native library name matches this native
* library definition; <tt>false</tt> otherwise.
**/
- public boolean match(String name)
+ public boolean match(Map configMap, String name)
{
String libname = System.mapLibraryName(name);
- if (m_libraryFile.equals(libname) || m_libraryFile.endsWith("/" + libname))
+ String[] exts = ManifestParser.parseDelimitedString(
+ (String) configMap.get(Constants.FRAMEWORK_LIBRARY_EXTENSIONS), ",");
+ int extIdx = 0;
+
+ // First try to match the default name, then try to match any additionally
+ // specified library extensions.
+ do
{
- return true;
- }
- else if (libname.endsWith(".jnilib") &&
- m_libraryFile.endsWith(".dylib"))
- {
- libname = libname.substring(0, libname.length() - 6) + "dylib";
if (m_libraryFile.equals(libname) || m_libraryFile.endsWith("/" + libname))
{
return true;
}
+ else if (libname.endsWith(".jnilib") && m_libraryFile.endsWith(".dylib"))
+ {
+ libname = libname.substring(0, libname.length() - 6) + "dylib";
+ if (m_libraryFile.equals(libname) || m_libraryFile.endsWith("/" + libname))
+ {
+ return true;
+ }
+ }
+ else if (m_libraryFile.equals(name) || m_libraryFile.endsWith("/" + name))
+ {
+ return true;
+ }
+
+ int idx = libname.lastIndexOf(".");
+ libname = (idx < 0)
+ ? libname + "." + exts[extIdx++]
+ : libname.substring(0, idx) + "." + exts[extIdx++];
}
- else if (m_libraryFile.equals(name) || m_libraryFile.endsWith("/" + name))
- {
- return true;
- }
+ while ((exts != null) && (extIdx < exts.length));
+
return false;
}