1 package org.apache.maven.index.context;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.lucene.analysis.Analyzer;
23 import org.apache.lucene.analysis.AnalyzerWrapper;
24 import org.apache.lucene.analysis.util.CharTokenizer;
25 import org.apache.maven.index.creator.JarFileContentsIndexCreator;
26
27
28
29
30
31
32
33
34
35 public final class NexusAnalyzer
36 extends AnalyzerWrapper
37 {
38 private static final Analyzer CLASS_NAMES_ANALYZER = new Analyzer()
39 {
40 @Override
41 protected TokenStreamComponents createComponents( String fieldName )
42 {
43 return new TokenStreamComponents( new DeprecatedClassnamesTokenizer() );
44 }
45 };
46
47 private static final Analyzer LETTER_OR_DIGIT_ANALYZER = new Analyzer()
48 {
49 @Override
50 protected TokenStreamComponents createComponents( String filedName )
51 {
52 return new TokenStreamComponents( new LetterOrDigitTokenizer() );
53 }
54 };
55
56 public NexusAnalyzer()
57 {
58 super( PER_FIELD_REUSE_STRATEGY );
59 }
60
61 @Override
62 protected Analyzer getWrappedAnalyzer( String fieldName )
63 {
64 if ( JarFileContentsIndexCreator.FLD_CLASSNAMES_KW.getKey().equals( fieldName ) )
65 {
66
67 return CLASS_NAMES_ANALYZER;
68 }
69 else
70 {
71 return LETTER_OR_DIGIT_ANALYZER;
72 }
73 }
74
75
76
77 public static class NoopTokenizer
78 extends CharTokenizer
79 {
80 public NoopTokenizer()
81 {
82 super();
83 }
84
85 @Override
86 protected boolean isTokenChar( int i )
87 {
88 return true;
89 }
90 }
91
92 @Deprecated
93 public static class DeprecatedClassnamesTokenizer
94 extends CharTokenizer
95 {
96 public DeprecatedClassnamesTokenizer()
97 {
98 super();
99 }
100
101 @Override
102 protected boolean isTokenChar( int i )
103 {
104 return i != '\n';
105 }
106
107 @Override
108 protected int normalize( int c )
109 {
110 return Character.toLowerCase( c );
111 }
112 }
113
114 public static class LetterOrDigitTokenizer
115 extends CharTokenizer
116 {
117 public LetterOrDigitTokenizer()
118 {
119 super();
120 }
121
122 @Override
123 protected boolean isTokenChar( int c )
124 {
125 return Character.isLetterOrDigit( c );
126 }
127
128 @Override
129 protected int normalize( int c )
130 {
131 return Character.toLowerCase( c );
132 }
133 }
134
135 }