You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/07/28 21:23:45 UTC
svn commit: r1366748 - in /lucene/dev/trunk/lucene/analysis:
common/src/java/org/apache/lucene/analysis/util/
common/src/test/org/apache/lucene/analysis/commongrams/
common/src/test/org/apache/lucene/analysis/compound/
common/src/test/org/apache/lucene...
Author: uschindler
Date: Sat Jul 28 19:23:44 2012
New Revision: 1366748
URL: http://svn.apache.org/viewvc?rev=1366748&view=rev
Log:
LUCENE-4268: Rename ResourceAsStreamReasourceLoader to ClasspathResourceLoader, provide FilesystemResourceLoader, bug fixing
Added:
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java
- copied, changed from r1366633, lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceAsStreamResourceLoader.java
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java (with props)
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestFilesystemResourceLoader.java (with props)
Removed:
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceAsStreamResourceLoader.java
Modified:
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestDictionaryCompoundWordTokenFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestHyphenationCompoundWordTokenFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestTypeTokenFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestElisionFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeepFilterFactory.java
lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java
lucene/dev/trunk/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
Copied: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java (from r1366633, lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceAsStreamResourceLoader.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java?p2=lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java&p1=lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceAsStreamResourceLoader.java&r1=1366633&r2=1366748&rev=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ResourceAsStreamResourceLoader.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ClasspathResourceLoader.java Sat Jul 28 19:23:44 2012
@@ -21,28 +21,60 @@ import java.io.IOException;
import java.io.InputStream;
/**
- * Simple ResourceLoader that uses Class.getResourceAsStream
- * and Class.forName to open resources and classes, respectively.
+ * Simple {@link ResourceLoader} that uses {@link ClassLoader#getResourceAsStream(String)}
+ * and {@link Class#forName(String,boolean,ClassLoader)} to open resources and
+ * classes, respectively.
*/
-public class ResourceAsStreamResourceLoader implements ResourceLoader {
+public final class ClasspathResourceLoader implements ResourceLoader {
private final Class<?> clazz;
+ private final ClassLoader loader;
- public ResourceAsStreamResourceLoader(Class<?> clazz) {
+ /**
+ * Creates an instance using the context classloader to load Resources and classes.
+ * Resource paths must be absolute.
+ */
+ public ClasspathResourceLoader() {
+ this(Thread.currentThread().getContextClassLoader());
+ }
+
+ /**
+ * Creates an instance using the given classloader to load Resources and classes.
+ * Resource paths must be absolute.
+ */
+ public ClasspathResourceLoader(ClassLoader loader) {
+ this(null, loader);
+ }
+
+ /**
+ * Creates an instance using the context classloader to load Resources and classes
+ * Resources are resolved relative to the given class, if path is not absolute.
+ */
+ public ClasspathResourceLoader(Class<?> clazz) {
+ this(clazz, clazz.getClassLoader());
+ }
+
+ private ClasspathResourceLoader(Class<?> clazz, ClassLoader loader) {
this.clazz = clazz;
+ this.loader = loader;
}
@Override
public InputStream openResource(String resource) throws IOException {
- return clazz.getResourceAsStream(resource);
+ final InputStream stream = (clazz != null) ?
+ clazz.getResourceAsStream(resource) :
+ loader.getResourceAsStream(resource);
+ if (stream == null)
+ throw new IOException("Resource not found: " + resource);
+ return stream;
}
@Override
public <T> T newInstance(String cname, Class<T> expectedType) {
try {
- Class<? extends T> clazz = Class.forName(cname).asSubclass(expectedType);
+ final Class<? extends T> clazz = Class.forName(cname, true, loader).asSubclass(expectedType);
return clazz.newInstance();
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Cannot instantiate class: " + cname, e);
}
}
}
Added: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java?rev=1366748&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java (added)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/FilesystemResourceLoader.java Sat Jul 28 19:23:44 2012
@@ -0,0 +1,94 @@
+package org.apache.lucene.analysis.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Simple {@link ResourceLoader} that opens resource files
+ * from the local file system, optionally resolving against
+ * a base directory.
+ *
+ * <p>This loader wraps a delegate {@link ResourceLoader}
+ * that is used to resolve all files, the current base directory
+ * does not contain. {@link #newInstance} is always resolved
+ * against the delegate, as a {@link ClassLoader} is needed.
+ *
+ * <p>You can chain several {@code FilesystemResourceLoader}s
+ * to allow lookup of files in more than one base directory.
+ */
+public final class FilesystemResourceLoader implements ResourceLoader {
+ private final File baseDirectory;
+ private final ResourceLoader delegate;
+
+ /**
+ * Creates a resource loader that requires absolute filenames or relative to CWD
+ * to resolve resources. Files not found in file system and class lookups
+ * are delegated to context classloader.
+ */
+ public FilesystemResourceLoader() {
+ this((File) null);
+ }
+
+ /**
+ * Creates a resource loader that resolves resources against the given
+ * base directory (may be {@code null} to refer to CWD).
+ * Files not found in file system and class lookups are delegated to context
+ * classloader.
+ */
+ public FilesystemResourceLoader(File baseDirectory) {
+ this(baseDirectory, new ClasspathResourceLoader());
+ }
+
+ /**
+ * Creates a resource loader that resolves resources against the given
+ * base directory (may be {@code null} to refer to CWD).
+ * Files not found in file system and class lookups are delegated
+ * to the given delegate {@link ResourceLoader}.
+ */
+ public FilesystemResourceLoader(File baseDirectory, ResourceLoader delegate) {
+ if (baseDirectory != null && !baseDirectory.isDirectory())
+ throw new IllegalArgumentException("baseDirectory is not a directory or null");
+ if (delegate == null)
+ throw new IllegalArgumentException("delegate ResourceLoader may not be null");
+ this.baseDirectory = baseDirectory;
+ this.delegate = delegate;
+ }
+
+ @Override
+ public InputStream openResource(String resource) throws IOException {
+ try {
+ File file = new File (resource);
+ if (baseDirectory != null && !file.isAbsolute()) {
+ file = new File(baseDirectory, resource);
+ }
+ return new FileInputStream(file);
+ } catch (FileNotFoundException fnfe) {
+ return delegate.openResource(resource);
+ }
+ }
+
+ @Override
+ public <T> T newInstance(String cname, Class<T> expectedType) {
+ return delegate.newInstance(cname, expectedType);
+ }
+}
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -23,7 +23,7 @@ import org.apache.lucene.analysis.TokenS
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.TestStopFilter;
import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
import java.io.StringReader;
@@ -39,7 +39,7 @@ import java.util.HashMap;
public class TestCommonGramsFilterFactory extends BaseTokenStreamTestCase {
public void testInform() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(TestStopFilter.class);
+ ResourceLoader loader = new ClasspathResourceLoader(TestStopFilter.class);
assertTrue("loader is null and it shouldn't be", loader != null);
CommonGramsFilterFactory factory = new CommonGramsFilterFactory();
Map<String, String> args = new HashMap<String, String>();
@@ -89,7 +89,7 @@ public class TestCommonGramsFilterFactor
* If no words are provided, then a set of english default stopwords is used.
*/
public void testDefaults() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(TestStopFilter.class);
+ ResourceLoader loader = new ClasspathResourceLoader(TestStopFilter.class);
assertTrue("loader is null and it shouldn't be", loader != null);
CommonGramsFilterFactory factory = new CommonGramsFilterFactory();
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/commongrams/TestCommonGramsQueryFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -23,7 +23,7 @@ import org.apache.lucene.analysis.TokenS
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.TestStopFilter;
import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
import java.io.StringReader;
@@ -39,7 +39,7 @@ import java.util.HashMap;
public class TestCommonGramsQueryFilterFactory extends BaseTokenStreamTestCase {
public void testInform() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(TestStopFilter.class);
+ ResourceLoader loader = new ClasspathResourceLoader(TestStopFilter.class);
assertTrue("loader is null and it shouldn't be", loader != null);
CommonGramsQueryFilterFactory factory = new CommonGramsQueryFilterFactory();
Map<String, String> args = new HashMap<String, String>();
@@ -89,7 +89,7 @@ public class TestCommonGramsQueryFilterF
* If no words are provided, then a set of english default stopwords is used.
*/
public void testDefaults() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(TestStopFilter.class);
+ ResourceLoader loader = new ClasspathResourceLoader(TestStopFilter.class);
assertTrue("loader is null and it shouldn't be", loader != null);
CommonGramsQueryFilterFactory factory = new CommonGramsQueryFilterFactory();
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestDictionaryCompoundWordTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestDictionaryCompoundWordTokenFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestDictionaryCompoundWordTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestDictionaryCompoundWordTokenFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -26,7 +26,7 @@ import org.apache.lucene.analysis.BaseTo
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
/**
@@ -40,7 +40,7 @@ public class TestDictionaryCompoundWordT
Reader reader = new StringReader("I like to play softball");
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
DictionaryCompoundWordTokenFilterFactory factory = new DictionaryCompoundWordTokenFilterFactory();
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
Map<String,String> args = new HashMap<String,String>();
args.put("dictionary", "compoundDictionary.txt");
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestHyphenationCompoundWordTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestHyphenationCompoundWordTokenFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestHyphenationCompoundWordTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/compound/TestHyphenationCompoundWordTokenFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -26,7 +26,7 @@ import org.apache.lucene.analysis.BaseTo
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
/**
@@ -40,7 +40,7 @@ public class TestHyphenationCompoundWord
Reader reader = new StringReader("min veninde som er lidt af en læsehest");
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
HyphenationCompoundWordTokenFilterFactory factory = new HyphenationCompoundWordTokenFilterFactory();
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
Map<String,String> args = new HashMap<String,String>();
args.put("hyphenator", "da_UTF8.xml");
args.put("dictionary", "da_compoundDictionary.txt");
@@ -64,7 +64,7 @@ public class TestHyphenationCompoundWord
Reader reader = new StringReader("basketballkurv");
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
HyphenationCompoundWordTokenFilterFactory factory = new HyphenationCompoundWordTokenFilterFactory();
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
Map<String,String> args = new HashMap<String,String>();
args.put("hyphenator", "da_UTF8.xml");
args.put("minSubwordSize", "2");
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -19,7 +19,7 @@ package org.apache.lucene.analysis.core;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
import java.util.Map;
@@ -32,7 +32,7 @@ import java.util.HashMap;
public class TestStopFilterFactory extends BaseTokenStreamTestCase {
public void testInform() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
assertTrue("loader is null and it shouldn't be", loader != null);
StopFilterFactory factory = new StopFilterFactory();
Map<String, String> args = new HashMap<String, String>();
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestTypeTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestTypeTokenFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestTypeTokenFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestTypeTokenFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -19,7 +19,7 @@ package org.apache.lucene.analysis.core;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.NumericTokenStream;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
import org.junit.Test;
@@ -34,7 +34,7 @@ public class TestTypeTokenFilterFactory
@Test
public void testInform() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
TypeTokenFilterFactory factory = new TypeTokenFilterFactory();
Map<String, String> args = new HashMap<String, String>();
args.put("types", "stoptypes-1.txt");
@@ -94,7 +94,7 @@ public class TestTypeTokenFilterFactory
args.put("enablePositionIncrements", "false");
typeTokenFilterFactory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
typeTokenFilterFactory.init(args);
- typeTokenFilterFactory.inform(new ResourceAsStreamResourceLoader(getClass()));
+ typeTokenFilterFactory.inform(new ClasspathResourceLoader(getClass()));
fail("not supplying 'types' parameter should cause an IllegalArgumentException");
} catch (IllegalArgumentException e) {
// everything ok
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestElisionFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestElisionFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestElisionFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/fr/TestElisionFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -27,7 +27,7 @@ import org.apache.lucene.analysis.BaseTo
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
/**
@@ -42,7 +42,7 @@ public class TestElisionFilterFactory ex
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
ElisionFilterFactory factory = new ElisionFilterFactory();
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
Map<String,String> args = new HashMap<String,String>();
args.put("articles", "frenchArticles.txt");
factory.init(args);
@@ -61,7 +61,7 @@ public class TestElisionFilterFactory ex
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
Map<String, String> args = Collections.emptyMap();
factory.init(args);
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
factory.inform(loader);
TokenStream stream = factory.create(tokenizer);
assertTokenStreamContents(stream, new String[] { "avion" });
@@ -75,7 +75,7 @@ public class TestElisionFilterFactory ex
Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
ElisionFilterFactory factory = new ElisionFilterFactory();
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
Map<String,String> args = new HashMap<String,String>();
args.put("articles", "frenchArticles.txt");
args.put("ignoreCase", "true");
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestHunspellStemFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -25,7 +25,7 @@ import java.util.Map;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
/**
* Simple tests to ensure the Hunspell stemmer loads from factory
@@ -38,7 +38,7 @@ public class TestHunspellStemFilterFacto
args.put("affix", "test.aff");
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
factory.init(args);
- factory.inform(new ResourceAsStreamResourceLoader(getClass()));
+ factory.inform(new ClasspathResourceLoader(getClass()));
Reader reader = new StringReader("abc");
TokenStream stream = factory.create(new MockTokenizer(reader, MockTokenizer.WHITESPACE, false));
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeepFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeepFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeepFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestKeepFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -19,7 +19,7 @@ package org.apache.lucene.analysis.misce
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.ResourceLoader;
import java.util.Map;
@@ -32,7 +32,7 @@ import java.util.HashMap;
public class TestKeepFilterFactory extends BaseTokenStreamTestCase {
public void testInform() throws Exception {
- ResourceLoader loader = new ResourceAsStreamResourceLoader(getClass());
+ ResourceLoader loader = new ClasspathResourceLoader(getClass());
assertTrue("loader is null and it shouldn't be", loader != null);
KeepWordFilterFactory factory = new KeepWordFilterFactory();
Map<String, String> args = new HashMap<String, String>();
Modified: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/synonym/TestSynonymFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -25,7 +25,7 @@ import org.apache.lucene.analysis.BaseTo
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.synonym.SynonymFilter;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.StringMockResourceLoader;
public class TestSynonymFilterFactory extends BaseTokenStreamTestCase {
@@ -36,7 +36,7 @@ public class TestSynonymFilterFactory ex
args.put("synonyms", "synonyms.txt");
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
factory.init(args);
- factory.inform(new ResourceAsStreamResourceLoader(getClass()));
+ factory.inform(new ClasspathResourceLoader(getClass()));
TokenStream ts = factory.create(new MockTokenizer(new StringReader("GB"), MockTokenizer.WHITESPACE, false));
assertTrue(ts instanceof SynonymFilter);
assertTokenStreamContents(ts,
Added: lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestFilesystemResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestFilesystemResourceLoader.java?rev=1366748&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestFilesystemResourceLoader.java (added)
+++ lucene/dev/trunk/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestFilesystemResourceLoader.java Sat Jul 28 19:23:44 2012
@@ -0,0 +1,98 @@
+package org.apache.lucene.analysis.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import org.apache.lucene.util.IOUtils;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util._TestUtil;
+
+public class TestFilesystemResourceLoader extends LuceneTestCase {
+
+ private void assertNotFound(ResourceLoader rl) throws Exception {
+ try {
+ IOUtils.closeWhileHandlingException(rl.openResource("/this-directory-really-really-really-should-not-exist/foo/bar.txt"));
+ fail("The resource does not exist, should fail!");
+ } catch (IOException ioe) {
+ // pass
+ }
+ try {
+ rl.newInstance("org.apache.lucene.analysis.FooBarFilterFactory", TokenFilterFactory.class);
+ fail("The class does not exist, should fail!");
+ } catch (RuntimeException iae) {
+ // pass
+ }
+ }
+
+ private void assertClasspathDelegation(ResourceLoader rl) throws Exception {
+ // try a stopwords file from classpath
+ CharArraySet set = WordlistLoader.getSnowballWordSet(
+ new InputStreamReader(rl.openResource("org/apache/lucene/analysis/snowball/english_stop.txt"), IOUtils.CHARSET_UTF_8),
+ TEST_VERSION_CURRENT
+ );
+ assertTrue(set.contains("you"));
+ // try to load a class; we use string comparison because classloader may be different...
+ assertEquals("org.apache.lucene.analysis.en.KStemFilterFactory",
+ rl.newInstance("org.apache.lucene.analysis.en.KStemFilterFactory", TokenFilterFactory.class).getClass().getName());
+ // theoretically classes should also be loadable:
+ IOUtils.closeWhileHandlingException(rl.openResource("java/lang/String.class"));
+ }
+
+ public void testBaseDir() throws Exception {
+ final File base = _TestUtil.getTempDir("fsResourceLoaderBase");
+ try {
+ base.mkdirs();
+ Writer os = new OutputStreamWriter(new FileOutputStream(new File(base, "template.txt")), IOUtils.CHARSET_UTF_8);
+ try {
+ os.write("foobar\n");
+ } finally {
+ IOUtils.closeWhileHandlingException(os);
+ }
+
+ ResourceLoader rl = new FilesystemResourceLoader(base);
+ assertEquals("foobar", WordlistLoader.getLines(rl.openResource("template.txt"), IOUtils.CHARSET_UTF_8).get(0));
+ // Same with full path name:
+ String fullPath = new File(base, "template.txt").toString();
+ assertEquals("foobar",
+ WordlistLoader.getLines(rl.openResource(fullPath), IOUtils.CHARSET_UTF_8).get(0));
+ assertClasspathDelegation(rl);
+ assertNotFound(rl);
+
+ // now use RL without base dir:
+ rl = new FilesystemResourceLoader();
+ assertEquals("foobar",
+ WordlistLoader.getLines(rl.openResource(new File(base, "template.txt").toString()), IOUtils.CHARSET_UTF_8).get(0));
+ assertClasspathDelegation(rl);
+ assertNotFound(rl);
+ } finally {
+ _TestUtil.rmDir(base);
+ }
+ }
+
+ public void testDelegation() throws Exception {
+ ResourceLoader rl = new FilesystemResourceLoader(null, new StringMockResourceLoader("foobar\n"));
+ assertEquals("foobar", WordlistLoader.getLines(rl.openResource("template.txt"), IOUtils.CHARSET_UTF_8).get(0));
+ }
+
+}
Modified: lucene/dev/trunk/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java?rev=1366748&r1=1366747&r2=1366748&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/stempel/src/test/org/apache/lucene/analysis/stempel/TestStempelPolishStemFilterFactory.java Sat Jul 28 19:23:44 2012
@@ -22,7 +22,7 @@ import java.io.StringReader;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.core.WhitespaceTokenizer;
-import org.apache.lucene.analysis.util.ResourceAsStreamResourceLoader;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
/**
* Tests for {@link StempelPolishStemFilterFactory}
@@ -31,7 +31,7 @@ public class TestStempelPolishStemFilter
public void testBasics() throws Exception {
StringReader document = new StringReader("studenta studenci");
StempelPolishStemFilterFactory factory = new StempelPolishStemFilterFactory();
- factory.inform(new ResourceAsStreamResourceLoader(getClass()));
+ factory.inform(new ClasspathResourceLoader(getClass()));
TokenStream ts = factory.create(new WhitespaceTokenizer(TEST_VERSION_CURRENT, document));
assertTokenStreamContents(ts,
new String[] { "student", "student" });