Author: bdelacretaz
Date: Thu Apr  7 08:38:46 2011
New Revision: 1089776

URL: http://svn.apache.org/viewvc?rev=1089776&view=rev
Log:
STANBOL-146 - ClasspathDataFileProvider should not interfere with other 
providers

Modified:
    
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/ClasspathDataFileProvider.java
    
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/NamedEntityExtractionEnhancementEngine.java
    
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/test/java/org/apache/stanbol/enhancer/engines/opennlp/impl/TestNamedEntityExtractionEnhancementEngine.java

Modified: 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/ClasspathDataFileProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/ClasspathDataFileProvider.java?rev=1089776&r1=1089775&r2=1089776&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/ClasspathDataFileProvider.java
 (original)
+++ 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/ClasspathDataFileProvider.java
 Thu Apr  7 08:38:46 2011
@@ -21,20 +21,39 @@ import java.io.InputStream;
 import java.util.Map;
 
 import 
org.apache.stanbol.commons.stanboltools.datafileprovider.DataFileProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /** DataFileProvider that looks in our class resources */
 public class ClasspathDataFileProvider implements DataFileProvider {
 
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    public static final String RESOURCE_BASE_PATH = 
"org/apache/stanbol/defaultdata/opennlp/";
+    
+    private final String symbolicName;
+    
+    ClasspathDataFileProvider(String bundleSymbolicName) {
+        symbolicName = bundleSymbolicName;
+    }
+    
     @Override
     public InputStream getInputStream(String bundleSymbolicName,
             String filename, Map<String, String> comments) 
     throws IOException {
+        
+        if(!symbolicName.equals(bundleSymbolicName)) {
+            log.debug("Requested bundleSymbolicName {} does not match mine 
({}), request ignored",
+                    bundleSymbolicName, symbolicName);
+            return null;
+        }
+        
         // load default OpenNLP models from classpath (embedded in the 
defaultdata bundle)
-        final String resourcePath = "org/apache/stanbol/defaultdata/opennlp/" 
+ filename;
+        final String resourcePath = RESOURCE_BASE_PATH + filename;
         final InputStream in = 
getClass().getClassLoader().getResourceAsStream(resourcePath);
-        if (in == null) {
-            throw new IOException("Resource not found in my classpath: " + 
resourcePath);
-        }
+        log.debug("Resource {} found: {}", (in == null ? "NOT" : ""), 
resourcePath);
+        
+        // Returning null is fine - if we don't have the data file, another
+        // provider might supply it
         return in;
     }
 }

Modified: 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/NamedEntityExtractionEnhancementEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/NamedEntityExtractionEnhancementEngine.java?rev=1089776&r1=1089775&r2=1089776&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/NamedEntityExtractionEnhancementEngine.java
 (original)
+++ 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/main/java/org/apache/stanbol/enhancer/engines/opennlp/impl/NamedEntityExtractionEnhancementEngine.java
 Thu Apr  7 08:38:46 2011
@@ -56,7 +56,7 @@ public class NamedEntityExtractionEnhanc
         // Need our DataFileProvider before building the models
         dfpServiceRegistration = ctx.getBundleContext().registerService(
                 DataFileProvider.class.getName(), 
-                new ClasspathDataFileProvider(), null);
+                new 
ClasspathDataFileProvider(ctx.getBundleContext().getBundle().getSymbolicName()),
 null);
         
         engineCore = new EngineCore(dataFileProvider, 
ctx.getBundleContext().getBundle().getSymbolicName());
     }

Modified: 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/test/java/org/apache/stanbol/enhancer/engines/opennlp/impl/TestNamedEntityExtractionEnhancementEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/test/java/org/apache/stanbol/enhancer/engines/opennlp/impl/TestNamedEntityExtractionEnhancementEngine.java?rev=1089776&r1=1089775&r2=1089776&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/test/java/org/apache/stanbol/enhancer/engines/opennlp/impl/TestNamedEntityExtractionEnhancementEngine.java
 (original)
+++ 
incubator/stanbol/trunk/enhancer/engines/opennlp-ner/src/test/java/org/apache/stanbol/enhancer/engines/opennlp/impl/TestNamedEntityExtractionEnhancementEngine.java
 Thu Apr  7 08:38:46 2011
@@ -58,10 +58,12 @@ public class TestNamedEntityExtractionEn
             + "A new paragraph is being written. This paragraph has two 
sentences.";
 
     static EngineCore nerEngine;
+    
+    public static final String FAKE_BUNDLE_SYMBOLIC_NAME = 
"FAKE_BUNDLE_SYMBOLIC_NAME";
 
     @BeforeClass
     public static void setUpServices() throws IOException {
-        nerEngine = new EngineCore(new ClasspathDataFileProvider(), 
"TEST_BUNDLE_SYMBOLIC_NAME");
+        nerEngine = new EngineCore(new 
ClasspathDataFileProvider(FAKE_BUNDLE_SYMBOLIC_NAME), 
FAKE_BUNDLE_SYMBOLIC_NAME);
     }
 
     public static ContentItem wrapAsContentItem(final String id,


Reply via email to