You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by us...@apache.org on 2009/11/22 14:18:10 UTC
svn commit: r883074 - in /lucene/java/trunk: CHANGES.txt
src/java/org/apache/lucene/analysis/package.html
src/java/org/apache/lucene/util/AttributeSource.java
src/test/org/apache/lucene/util/TestAttributeSource.java
Author: uschindler
Date: Sun Nov 22 13:18:10 2009
New Revision: 883074
URL: http://svn.apache.org/viewvc?rev=883074&view=rev
Log:
LUCENE-2088: AttributeSource.addAttribute should only accept interfaces, the missing test leads to problems with Token.TOKEN_ATTRIBUTE_FACTORY
This also fixes the package.html error Shai mentioned.
Modified:
lucene/java/trunk/CHANGES.txt
lucene/java/trunk/src/java/org/apache/lucene/analysis/package.html
lucene/java/trunk/src/java/org/apache/lucene/util/AttributeSource.java
lucene/java/trunk/src/test/org/apache/lucene/util/TestAttributeSource.java
Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=883074&r1=883073&r2=883074&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Sun Nov 22 13:18:10 2009
@@ -184,6 +184,9 @@
* LUCENE-2013: SpanRegexQuery does not work with QueryScorer.
(Benjamin Keil via Mark Miller)
+* LUCENE-2088: addAttribute() should only accept interfaces that
+ extend Attribute. (Shai Erera, Uwe Schindler)
+
New features
* LUCENE-1933: Provide a convenience AttributeFactory that creates a
Modified: lucene/java/trunk/src/java/org/apache/lucene/analysis/package.html
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/analysis/package.html?rev=883074&r1=883073&r2=883074&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/analysis/package.html (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/analysis/package.html Sun Nov 22 13:18:10 2009
@@ -140,7 +140,6 @@
TokenStream ts = analyzer.tokenStream("myfield",new StringReader("some text goes here"));
while (ts.incrementToken()) {
System.out.println("token: "+ts));
- t = ts.next();
}
</PRE>
</p>
Modified: lucene/java/trunk/src/java/org/apache/lucene/util/AttributeSource.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/util/AttributeSource.java?rev=883074&r1=883073&r2=883074&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/util/AttributeSource.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/util/AttributeSource.java Sun Nov 22 13:18:10 2009
@@ -224,6 +224,12 @@
public <A extends Attribute> A addAttribute(Class<A> attClass) {
AttributeImpl attImpl = attributes.get(attClass);
if (attImpl == null) {
+ if (!(attClass.isInterface() && Attribute.class.isAssignableFrom(attClass))) {
+ throw new IllegalArgumentException(
+ "addAttribute() only accepts an interface that extends Attribute, but " +
+ attClass.getName() + " does not fulfil this contract."
+ );
+ }
addAttributeImpl(attImpl = this.factory.createAttributeInstance(attClass));
}
return attClass.cast(attImpl);
Modified: lucene/java/trunk/src/test/org/apache/lucene/util/TestAttributeSource.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/util/TestAttributeSource.java?rev=883074&r1=883073&r2=883074&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/util/TestAttributeSource.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/util/TestAttributeSource.java Sun Nov 22 13:18:10 2009
@@ -141,4 +141,18 @@
assertTrue("TypeAttribute is not implemented by TypeAttributeImpl",
src.addAttribute(TypeAttribute.class) instanceof TypeAttributeImpl);
}
+
+ public void testInvalidArguments() throws Exception {
+ try {
+ AttributeSource src = new AttributeSource();
+ src.addAttribute(Token.class);
+ fail("Should throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {}
+
+ try {
+ AttributeSource src = new AttributeSource(Token.TOKEN_ATTRIBUTE_FACTORY);
+ src.addAttribute(Token.class);
+ fail("Should throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {}
+ }
}