You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/02/02 12:42:33 UTC

[02/14] lucenenet git commit: Lucene.Net.Analysis.Common.Collation: For now, adding [CLSCompliant(false)] to CollationAttributeFactory, CollationKeyAnalyzer, CollationKeyFilter, and TokenAttributes.CollatedTermAttributeImpl because they expose types from

Lucene.Net.Analysis.Common.Collation: For now, adding [CLSCompliant(false)] to CollationAttributeFactory, CollationKeyAnalyzer, CollationKeyFilter, and TokenAttributes.CollatedTermAttributeImpl because they expose types from icu.net (which is not marked CLS compliant).


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/21b3d8b7
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/21b3d8b7
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/21b3d8b7

Branch: refs/heads/api-work
Commit: 21b3d8b7703c321155d8388621d6b0ed120750fc
Parents: 7cd69ab
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Thu Feb 2 10:38:17 2017 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Thu Feb 2 18:30:28 2017 +0700

----------------------------------------------------------------------
 .../Collation/CollationAttributeFactory.cs      |  93 ++++++++-------
 .../Collation/CollationKeyAnalyzer.cs           | 119 ++++++++++---------
 .../Collation/CollationKeyFilter.cs             |   5 +-
 .../CollatedTermAttributeImpl.cs                |  14 ++-
 4 files changed, 122 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/21b3d8b7/src/Lucene.Net.Analysis.Common/Collation/CollationAttributeFactory.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Analysis.Common/Collation/CollationAttributeFactory.cs b/src/Lucene.Net.Analysis.Common/Collation/CollationAttributeFactory.cs
index 64687dd..d3a7b1f 100644
--- a/src/Lucene.Net.Analysis.Common/Collation/CollationAttributeFactory.cs
+++ b/src/Lucene.Net.Analysis.Common/Collation/CollationAttributeFactory.cs
@@ -22,51 +22,54 @@ namespace Lucene.Net.Collation
      * limitations under the License.
      */
 
-	/// <summary>
-	/// <para>
-	///   Converts each token into its <seealso cref="CollationKey"/>, and then
-	///   encodes the bytes as an index term.
-	/// </para>
-	/// <para>
-	///   <strong>WARNING:</strong> Make sure you use exactly the same Collator at
-	///   index and query time -- CollationKeys are only comparable when produced by
-	///   the same Collator.  Since <seealso cref="RuleBasedCollator"/>s are not
-	///   independently versioned, it is unsafe to search against stored
-	///   CollationKeys unless the following are exactly the same (best practice is
-	///   to store this information with the index and check that they remain the
-	///   same at query time):
-	/// </para>
-	/// <ol>
-	///   <li>JVM vendor</li>
-	///   <li>JVM version, including patch version</li>
-	///   <li>
-	///     The language (and country and variant, if specified) of the Locale
-	///     used when constructing the collator via
-	///     <seealso cref="Collator#getInstance(Locale)"/>.
-	///   </li>
-	///   <li>
-	///     The collation strength used - see <seealso cref="Collator#setStrength(int)"/>
-	///   </li>
-	/// </ol> 
-	/// <para>
-	///   The <code>ICUCollationAttributeFactory</code> in the analysis-icu package 
-	///   uses ICU4J's Collator, which makes its
-	///   version available, thus allowing collation to be versioned independently
-	///   from the JVM.  ICUCollationAttributeFactory is also significantly faster and
-	///   generates significantly shorter keys than CollationAttributeFactory.  See
-	///   <a href="http://site.icu-project.org/charts/collation-icu4j-sun"
-	///   >http://site.icu-project.org/charts/collation-icu4j-sun</a> for key
-	///   generation timing and key length comparisons between ICU4J and
-	///   java.text.Collator over several languages.
-	/// </para>
-	/// <para>
-	///   CollationKeys generated by java.text.Collators are not compatible
-	///   with those those generated by ICU Collators.  Specifically, if you use 
-	///   CollationAttributeFactory to generate index terms, do not use
-	///   ICUCollationAttributeFactory on the query side, or vice versa.
-	/// </para>
-	/// </summary>
-	public class CollationAttributeFactory : AttributeSource.AttributeFactory
+    /// <summary>
+    /// <para>
+    ///   Converts each token into its <seealso cref="CollationKey"/>, and then
+    ///   encodes the bytes as an index term.
+    /// </para>
+    /// <para>
+    ///   <strong>WARNING:</strong> Make sure you use exactly the same Collator at
+    ///   index and query time -- CollationKeys are only comparable when produced by
+    ///   the same Collator.  Since <seealso cref="RuleBasedCollator"/>s are not
+    ///   independently versioned, it is unsafe to search against stored
+    ///   CollationKeys unless the following are exactly the same (best practice is
+    ///   to store this information with the index and check that they remain the
+    ///   same at query time):
+    /// </para>
+    /// <ol>
+    ///   <li>JVM vendor</li>
+    ///   <li>JVM version, including patch version</li>
+    ///   <li>
+    ///     The language (and country and variant, if specified) of the Locale
+    ///     used when constructing the collator via
+    ///     <seealso cref="Collator#getInstance(Locale)"/>.
+    ///   </li>
+    ///   <li>
+    ///     The collation strength used - see <seealso cref="Collator#setStrength(int)"/>
+    ///   </li>
+    /// </ol> 
+    /// <para>
+    ///   The <code>ICUCollationAttributeFactory</code> in the analysis-icu package 
+    ///   uses ICU4J's Collator, which makes its
+    ///   version available, thus allowing collation to be versioned independently
+    ///   from the JVM.  ICUCollationAttributeFactory is also significantly faster and
+    ///   generates significantly shorter keys than CollationAttributeFactory.  See
+    ///   <a href="http://site.icu-project.org/charts/collation-icu4j-sun"
+    ///   >http://site.icu-project.org/charts/collation-icu4j-sun</a> for key
+    ///   generation timing and key length comparisons between ICU4J and
+    ///   java.text.Collator over several languages.
+    /// </para>
+    /// <para>
+    ///   CollationKeys generated by java.text.Collators are not compatible
+    ///   with those those generated by ICU Collators.  Specifically, if you use 
+    ///   CollationAttributeFactory to generate index terms, do not use
+    ///   ICUCollationAttributeFactory on the query side, or vice versa.
+    /// </para>
+    /// </summary>
+    // LUCENENET TODO: A better option would be to contribute to the icu.net library and
+    // make it CLS compliant (at least the parts of it we use)
+    [System.CLSCompliant(false)]
+    public class CollationAttributeFactory : AttributeSource.AttributeFactory
 	{
 		private readonly Collator collator;
 		private readonly AttributeSource.AttributeFactory @delegate;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/21b3d8b7/src/Lucene.Net.Analysis.Common/Collation/CollationKeyAnalyzer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Analysis.Common/Collation/CollationKeyAnalyzer.cs b/src/Lucene.Net.Analysis.Common/Collation/CollationKeyAnalyzer.cs
index f6db44c..b76e520 100644
--- a/src/Lucene.Net.Analysis.Common/Collation/CollationKeyAnalyzer.cs
+++ b/src/Lucene.Net.Analysis.Common/Collation/CollationKeyAnalyzer.cs
@@ -24,64 +24,67 @@ namespace Lucene.Net.Collation
      * limitations under the License.
      */
 
-	/// <summary>
-	/// <para>
-	///   Configures <seealso cref="KeywordTokenizer"/> with <seealso cref="CollationAttributeFactory"/>.
-	/// </para>
-	/// <para>
-	///   Converts the token into its <seealso cref="java.text.CollationKey"/>, and then
-	///   encodes the CollationKey either directly or with 
-	///   <seealso cref="IndexableBinaryStringTools"/> (see <a href="#version">below</a>), to allow 
-	///   it to be stored as an index term.
-	/// </para>
-	/// <para>
-	///   <strong>WARNING:</strong> Make sure you use exactly the same Collator at
-	///   index and query time -- CollationKeys are only comparable when produced by
-	///   the same Collator.  Since <seealso cref="java.text.RuleBasedCollator"/>s are not
-	///   independently versioned, it is unsafe to search against stored
-	///   CollationKeys unless the following are exactly the same (best practice is
-	///   to store this information with the index and check that they remain the
-	///   same at query time):
-	/// </para>
-	/// <ol>
-	///   <li>JVM vendor</li>
-	///   <li>JVM version, including patch version</li>
-	///   <li>
-	///     The language (and country and variant, if specified) of the Locale
-	///     used when constructing the collator via
-	///     <seealso cref="Collator#getInstance(java.util.Locale)"/>.
-	///   </li>
-	///   <li>
-	///     The collation strength used - see <seealso cref="Collator#setStrength(int)"/>
-	///   </li>
-	/// </ol> 
-	/// <para>
-	///   The <code>ICUCollationKeyAnalyzer</code> in the analysis-icu package 
-	///   uses ICU4J's Collator, which makes its
-	///   its version available, thus allowing collation to be versioned
-	///   independently from the JVM.  ICUCollationKeyAnalyzer is also significantly
-	///   faster and generates significantly shorter keys than CollationKeyAnalyzer.
-	///   See <a href="http://site.icu-project.org/charts/collation-icu4j-sun"
-	///   >http://site.icu-project.org/charts/collation-icu4j-sun</a> for key
-	///   generation timing and key length comparisons between ICU4J and
-	///   java.text.Collator over several languages.
-	/// </para>
-	/// <para>
-	///   CollationKeys generated by java.text.Collators are not compatible
-	///   with those those generated by ICU Collators.  Specifically, if you use 
-	///   CollationKeyAnalyzer to generate index terms, do not use
-	///   ICUCollationKeyAnalyzer on the query side, or vice versa.
-	/// </para>
-	/// <a name="version"/>
-	/// <para>You must specify the required <seealso cref="Version"/>
-	/// compatibility when creating CollationKeyAnalyzer:
-	/// <ul>
-	///   <li> As of 4.0, Collation Keys are directly encoded as bytes. Previous
-	///   versions will encode the bytes with <seealso cref="IndexableBinaryStringTools"/>.
-	/// </ul>
-	/// </para>
-	/// </summary>
-	public sealed class CollationKeyAnalyzer : Analyzer
+    /// <summary>
+    /// <para>
+    ///   Configures <seealso cref="KeywordTokenizer"/> with <seealso cref="CollationAttributeFactory"/>.
+    /// </para>
+    /// <para>
+    ///   Converts the token into its <seealso cref="java.text.CollationKey"/>, and then
+    ///   encodes the CollationKey either directly or with 
+    ///   <seealso cref="IndexableBinaryStringTools"/> (see <a href="#version">below</a>), to allow 
+    ///   it to be stored as an index term.
+    /// </para>
+    /// <para>
+    ///   <strong>WARNING:</strong> Make sure you use exactly the same Collator at
+    ///   index and query time -- CollationKeys are only comparable when produced by
+    ///   the same Collator.  Since <seealso cref="java.text.RuleBasedCollator"/>s are not
+    ///   independently versioned, it is unsafe to search against stored
+    ///   CollationKeys unless the following are exactly the same (best practice is
+    ///   to store this information with the index and check that they remain the
+    ///   same at query time):
+    /// </para>
+    /// <ol>
+    ///   <li>JVM vendor</li>
+    ///   <li>JVM version, including patch version</li>
+    ///   <li>
+    ///     The language (and country and variant, if specified) of the Locale
+    ///     used when constructing the collator via
+    ///     <seealso cref="Collator#getInstance(java.util.Locale)"/>.
+    ///   </li>
+    ///   <li>
+    ///     The collation strength used - see <seealso cref="Collator#setStrength(int)"/>
+    ///   </li>
+    /// </ol> 
+    /// <para>
+    ///   The <code>ICUCollationKeyAnalyzer</code> in the analysis-icu package 
+    ///   uses ICU4J's Collator, which makes its
+    ///   its version available, thus allowing collation to be versioned
+    ///   independently from the JVM.  ICUCollationKeyAnalyzer is also significantly
+    ///   faster and generates significantly shorter keys than CollationKeyAnalyzer.
+    ///   See <a href="http://site.icu-project.org/charts/collation-icu4j-sun"
+    ///   >http://site.icu-project.org/charts/collation-icu4j-sun</a> for key
+    ///   generation timing and key length comparisons between ICU4J and
+    ///   java.text.Collator over several languages.
+    /// </para>
+    /// <para>
+    ///   CollationKeys generated by java.text.Collators are not compatible
+    ///   with those those generated by ICU Collators.  Specifically, if you use 
+    ///   CollationKeyAnalyzer to generate index terms, do not use
+    ///   ICUCollationKeyAnalyzer on the query side, or vice versa.
+    /// </para>
+    /// <a name="version"/>
+    /// <para>You must specify the required <seealso cref="Version"/>
+    /// compatibility when creating CollationKeyAnalyzer:
+    /// <ul>
+    ///   <li> As of 4.0, Collation Keys are directly encoded as bytes. Previous
+    ///   versions will encode the bytes with <seealso cref="IndexableBinaryStringTools"/>.
+    /// </ul>
+    /// </para>
+    /// </summary>
+    // LUCENENET TODO: A better option would be to contribute to the icu.net library and
+    // make it CLS compliant (at least the parts of it we use)
+    [CLSCompliant(false)]
+    public sealed class CollationKeyAnalyzer : Analyzer
 	{
 		private readonly Collator collator;
 		private readonly CollationAttributeFactory factory;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/21b3d8b7/src/Lucene.Net.Analysis.Common/Collation/CollationKeyFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Analysis.Common/Collation/CollationKeyFilter.cs b/src/Lucene.Net.Analysis.Common/Collation/CollationKeyFilter.cs
index 5012e9c..6e684c1 100644
--- a/src/Lucene.Net.Analysis.Common/Collation/CollationKeyFilter.cs
+++ b/src/Lucene.Net.Analysis.Common/Collation/CollationKeyFilter.cs
@@ -70,7 +70,10 @@ namespace Lucene.Net.Collation
 	/// @deprecated Use <seealso cref="CollationAttributeFactory"/> instead, which encodes
 	///  terms directly as bytes. This filter will be removed in Lucene 5.0 
 	[Obsolete("Use <seealso cref=\"CollationAttributeFactory\"/> instead, which encodes")]
-	public sealed class CollationKeyFilter : TokenFilter
+    // LUCENENET TODO: A better option would be to contribute to the icu.net library and
+    // make it CLS compliant (at least the parts of it we use)
+    [CLSCompliant(false)]
+    public sealed class CollationKeyFilter : TokenFilter
 	{
 		private readonly Collator collator;
 		private readonly ICharTermAttribute termAtt;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/21b3d8b7/src/Lucene.Net.Analysis.Common/Collation/TokenAttributes/CollatedTermAttributeImpl.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Analysis.Common/Collation/TokenAttributes/CollatedTermAttributeImpl.cs b/src/Lucene.Net.Analysis.Common/Collation/TokenAttributes/CollatedTermAttributeImpl.cs
index dc3b85e..a29a5e8 100644
--- a/src/Lucene.Net.Analysis.Common/Collation/TokenAttributes/CollatedTermAttributeImpl.cs
+++ b/src/Lucene.Net.Analysis.Common/Collation/TokenAttributes/CollatedTermAttributeImpl.cs
@@ -1,5 +1,6 @@
 \ufeffusing Icu.Collation;
 using Lucene.Net.Analysis.TokenAttributes;
+using System;
 
 namespace Lucene.Net.Collation.TokenAttributes
 {
@@ -20,11 +21,14 @@ namespace Lucene.Net.Collation.TokenAttributes
      * limitations under the License.
      */
 
-	/// <summary>
-	/// Extension of <seealso cref="CharTermAttribute"/> that encodes the term
-	/// text as a binary Unicode collation key instead of as UTF-8 bytes.
-	/// </summary>
-	public class CollatedTermAttributeImpl : CharTermAttribute
+    /// <summary>
+    /// Extension of <seealso cref="CharTermAttribute"/> that encodes the term
+    /// text as a binary Unicode collation key instead of as UTF-8 bytes.
+    /// </summary>
+    // LUCENENET TODO: A better option would be to contribute to the icu.net library and
+    // make it CLS compliant (at least the parts of it we use)
+    [CLSCompliant(false)]
+    public class CollatedTermAttributeImpl : CharTermAttribute
 	{
 		private readonly Collator collator;