You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2009/08/10 03:40:04 UTC
svn commit: r802637 [2/2] - in /tuscany/branches/sca-java-1.x/modules:
domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/
domain-manager/src/main/resources/ domain-manager/src/main/resources/icons/
domain-search/src/main/java/org/...
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionDocumentProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionDocumentProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -7,7 +7,6 @@
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-import org.apache.tuscany.sca.domain.search.Result;
public class ContributionDocumentProcessor implements DocumentProcessor {
@@ -24,18 +23,21 @@
uri = null;
} else {
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR
+
+ parent += Character.toString(DomainPathAnalyzer.PATH_START)
+ SearchFields.CONTRIBUTION_FIELD
+ DomainPathAnalyzer.TYPE_SEPARATOR + uri;
-
+
}
}
- if (uri != null && doc == null) {
- doc = documents.get(uri);
+ if (uri != null) {
+ if (doc == null) {
+ doc = documents.get(uri);
+ }
+
doc.add(new Field(SearchFields.CONTRIBUTION_FIELD, uri,
Field.Store.YES, Field.Index.ANALYZED));
@@ -85,8 +87,9 @@
if (!object.getClass().getSimpleName().contains("Workspace")) {
for (Composite composite : contribution.getDeployables()) {
- Document compositeDoc = parentProcessor.process(parentProcessor,
- documents, composite, null, parent);
+ Document compositeDoc = parentProcessor
+ .process(parentProcessor, documents, composite,
+ null, parent);
if (uri != null) {
@@ -125,25 +128,4 @@
}
- public Result processDocument(org.apache.lucene.document.Document document,
- Result result) {
- String contributionName = document.get(SearchFields.CONTRIBUTION_FIELD);
-
- if (contributionName != null) {
-
- if (result == null) {
- result = new ContributionResult(contributionName);
-
- } else if (!(result instanceof ContributionResult)) {
- throw new IllegalArgumentException();
- }
-
- result.setName(contributionName);
-
- }
-
- return result;
-
- }
-
}
Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileContent.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileContent.java?rev=802637&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileContent.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileContent.java Mon Aug 10 01:40:02 2009
@@ -0,0 +1,35 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+public class DefaultFileContent implements FileContent {
+
+ final private URL url;
+
+ public DefaultFileContent(URL url) {
+ this.url = url;
+ }
+
+ public FileContent[] getChildren() {
+ return new FileContent[0];
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return this.url.openStream();
+ }
+
+ public String getName() {
+ return this.url.getFile();
+ }
+
+ public String getPath() {
+ return this.url.getPath();
+ }
+
+ public boolean isLeaf() {
+ return false;
+ }
+
+}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -25,11 +25,12 @@
doc = documents.get(file.getPath());
}
- doc.add(new Field(SearchFields.FILE_FIELD, file.getName(), Field.Store.YES,
- Field.Index.ANALYZED));
-
doc.add(new Field(SearchFields.FILE_CONTENT_FIELD, reader));
+ doc.add(new Field(SearchFields.FILE_CONTENT_FIELD,
+ "", Field.Store.YES,
+ Field.Index.ANALYZED));
+
return doc;
} catch (IOException e) {
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/Document.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/Document.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/Document.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/Document.java Mon Aug 10 01:40:02 2009
@@ -88,5 +88,5 @@
public boolean containsField(String field) {
return this.fieldablesTable.containsKey(field);
}
-
+
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzer.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzer.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzer.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzer.java Mon Aug 10 01:40:02 2009
@@ -10,16 +10,20 @@
public class DomainPathAnalyzer extends Analyzer {
- final public static char PATH_SEPARATOR = '\u0001';
-
- final public static char TYPE_SEPARATOR = '\u0002';
-
- final public static char URI_SEPARATOR = '\u0003';
+ final public static char PATH_START = '\u0001';
+
+ final public static char PATH_SEPARATOR = '\u0002';
+
+ final public static char TYPE_SEPARATOR = '\u0003';
+
+ final public static char URI_SEPARATOR = '\u0004';
+
+ final public static char ARCHIVE_SEPARATOR = '!';
static class DomainPathTokenizer extends Tokenizer {
private int offset = 0, bufferIndex = 0, dataLen = 0;
- private static final int MAX_WORD_LEN = 255;
+ private static final int MAX_WORD_LEN = 1024;
private static final int IO_BUFFER_SIZE = 4096;
private final char[] ioBuffer = new char[IO_BUFFER_SIZE];
private boolean typeCharFound = false;
@@ -90,8 +94,8 @@
final char c = ioBuffer[bufferIndex++];
boolean breakChar = true;
boolean includeChar = false;
-
- if (c == PATH_SEPARATOR) {
+
+ if (c == PATH_START || c == PATH_SEPARATOR) {
if (length == 0) {
includeChar = true;
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchDocumentProcessorsMap.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchDocumentProcessorsMap.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchDocumentProcessorsMap.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchDocumentProcessorsMap.java Mon Aug 10 01:40:02 2009
@@ -1,7 +1,5 @@
package org.apache.tuscany.sca.domain.search.impl;
-import java.io.File;
-
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ComponentType;
@@ -23,7 +21,8 @@
addDocumentProcessor(Binding.class, new BindingDocumentProcessor());
addDocumentProcessor(Component.class, new ComponentDocumentProcessor());
addDocumentProcessor(Composite.class, new CompositeDocumentProcessor());
- addDocumentProcessor(File.class, new DomainSearchFileDocumentProcessor());
+ addDocumentProcessor(FileContent.class, new DomainSearchFileDocumentProcessor());
+ addDocumentProcessor(Property.class, new PropertyDocumentProcessor());
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFormatter.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFormatter.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFormatter.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFormatter.java Mon Aug 10 01:40:02 2009
@@ -26,5 +26,22 @@
}
}
+
+ public static boolean isHighlighted(String text) {
+ int start = text.indexOf(HIGHLIGHT_START);
+ int end = text.indexOf(HIGHLIGHT_END);
+
+ if (start < end && start != -1) {
+ start = text.indexOf(HIGHLIGHT_START, start + 1);
+
+ if (start > end || start == -1) {
+ return true;
+ }
+
+ }
+
+ return false;
+
+ }
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchImpl.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchImpl.java Mon Aug 10 01:40:02 2009
@@ -1,189 +1,357 @@
package org.apache.tuscany.sca.domain.search.impl;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
-import java.util.List;
+import java.util.HashSet;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.HitCollector;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.store.SimpleFSLockFactory;
import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.service.ContributionRepository;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DomainSearch;
import org.apache.tuscany.sca.domain.search.Result;
import org.osoa.sca.annotations.AllowsPassByReference;
+import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Scope;
@Scope("COMPOSITE")
public class DomainSearchImpl implements DomainSearch {
- private Directory dir = new RAMDirectory();
+ @Property
+ public String indexDirectoryPath;
+
+ private Directory dir;
private Analyzer analyzer = new DomainSearchAnalyzer();
+ private MultiFieldQueryParser qp = new MultiFieldQueryParser(new String[] {
+ SearchFields.ARTIFACT_FIELD, SearchFields.BINDING_FIELD,
+ SearchFields.COMPONENT_FIELD, SearchFields.COMPOSITE_FIELD,
+ SearchFields.CONTRIBUTION_FIELD, SearchFields.EXPORTEDBY_FIELD,
+ SearchFields.FILE_CONTENT_FIELD, SearchFields.IMPLEMENTS_FIELD,
+ SearchFields.IMPORTEDBY_FIELD, SearchFields.INCLUDEDBY_FIELD,
+ SearchFields.PROPERTY_KEY_FIELD, SearchFields.REFERENCE_FIELD,
+ SearchFields.REFERENCE_INTERFACE_CALLBACK_FIELD,
+ SearchFields.REFERENCE_INTERFACE_FIELD,
+ SearchFields.REFERENCE_NAME_FIELD, SearchFields.SERVICE_FIELD,
+ SearchFields.SERVICE_INTERFACE_CALLBACK_FIELD,
+ SearchFields.SERVICE_INTERFACE_FIELD,
+ SearchFields.SERVICE_NAME_FIELD, SearchFields.TYPE_FIELD,
+ SearchFields.VALUE_FIELD }, this.analyzer);
+
public DomainSearchImpl() {
- // empty constructor
+ this.qp.setAllowLeadingWildcard(true);
+
+ }
+
+ private Directory getIndexDirectory() throws IOException {
+
+ if (this.dir == null) {
+
+ if (this.indexDirectoryPath == null
+ || this.indexDirectoryPath.length() == 0) {
+ this.dir = new RAMDirectory();
+
+ } else {
+
+ try {
+ this.dir = new FSDirectory(
+ new File(this.indexDirectoryPath),
+ new SimpleFSLockFactory(this.indexDirectoryPath));
+
+ } catch (IOException e) {
+ System.err.println("Could not open index at "
+ + this.indexDirectoryPath);
+
+ throw e;
+
+ }
+
+ }
+
+ }
+
+ return this.dir;
+
}
@AllowsPassByReference
- public void contributionAdded(ContributionRepository repository,
- Contribution contribution) {
- System.out.println("contributionAdded:");
- System.out.println(repository);
- System.out.println(contribution);
+ public void contributionAdded(Contribution contribution) {
+
+ IndexWriter indexWriter = null;
try {
- IndexWriter indexWriter = new IndexWriter(dir, analyzer,
+ indexWriter = new IndexWriter(getIndexDirectory(), this.analyzer,
IndexWriter.MaxFieldLength.UNLIMITED);
- try {
- DomainSearchDocumentProcessorsMap docProcessors = new DomainSearchDocumentProcessorsMap();
- DocumentMap docs = new DocumentMap();
+ contributionAdded(contribution, indexWriter);
+
+ indexWriter.commit();
+
+ } catch (Exception e) {
+
+ if (indexWriter != null) {
+
+ try {
+ indexWriter.rollback();
+
+ } catch (Exception e1) {
+ // ignore exception
+ }
+
+ }
+
+ throw new RuntimeException("Problem while indexing!", e);
+
+ } finally {
+
+ if (indexWriter != null) {
try {
- docProcessors.process(docProcessors, docs, contribution, null, "");
+ indexWriter.close();
+
} catch (Exception e) {
- e.printStackTrace();
+ // ignore exception
}
- for (Document doc : docs.values()) {
- indexWriter.addDocument(doc.createLuceneDocument());
+ }
+
+ }
+
+ }
+
+ @AllowsPassByReference
+ public void contributionRemoved(Contribution contribution) {
+
+ IndexWriter indexWriter = null;
+
+ try {
+ indexWriter = new IndexWriter(getIndexDirectory(), this.analyzer,
+ IndexWriter.MaxFieldLength.UNLIMITED);
+
+ contributionRemoved(contribution, indexWriter);
+
+ indexWriter.commit();
+
+ } catch (Exception e) {
+
+ if (indexWriter != null) {
+
+ try {
+ indexWriter.rollback();
+
+ } catch (Exception e1) {
+ // ignore exception
}
- } finally {
- indexWriter.close();
- }
-
- // BufferedReader consoleReader = new BufferedReader(
- // new InputStreamReader(System.in));
- //
- // while (true) {
- // System.out.print("query: ");
- // String queryString = consoleReader.readLine();
- //
- // if (queryString.equals("exit")) {
- // break;
- // }
- //
- // parseAndSearch(queryString, false);
- //
- // }
+ }
+
+ throw new RuntimeException("Problem while indexing!", e);
+
+ } finally {
+
+ if (indexWriter != null) {
+
+ try {
+ indexWriter.close();
+
+ } catch (Exception e) {
+ // ignore exception
+ }
+
+ }
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
}
}
- public void contributionRemoved(ContributionRepository repository,
- Contribution contribution) {
- System.out.println("contributionRemoved:");
- System.out.println(repository);
- System.out.println(contribution);
+ private void contributionRemoved(Contribution contribution,
+ IndexWriter indexWriter) throws CorruptIndexException, IOException {
+
+ String contributionURI = contribution.getURI();
+ StringBuilder sb = new StringBuilder(SearchFields.PARENT_FIELD);
+ sb.append(":\"");
+ sb.append(DomainPathAnalyzer.PATH_START);
+ sb.append(contributionURI);
+ sb.append("\" OR ");
+ sb.append(SearchFields.CONTRIBUTION_FIELD);
+ sb.append(":\"");
+ sb.append(contributionURI);
+ sb.append('"');
+
+ try {
+ Query query = this.qp.parse(sb.toString());
+ indexWriter.deleteDocuments(query);
+
+ } catch (ParseException e) {
+ throw new RuntimeException("Could not parse query: "
+ + sb.toString(), e);
+ }
}
- public void contributionUpdated(ContributionRepository repository,
- Contribution oldContribution, Contribution contribution) {
+ private void contributionAdded(Contribution contribution,
+ IndexWriter indexWriter) throws CorruptIndexException, IOException {
+
+ DomainSearchDocumentProcessorsMap docProcessors = new DomainSearchDocumentProcessorsMap();
+ DocumentMap docs = new DocumentMap();
+
+ try {
+ docProcessors.process(docProcessors, docs, contribution, null, "");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ FileWriter writer = new FileWriter("indexed.txt");
+ for (Document doc : docs.values()) {
+ org.apache.lucene.document.Document luceneDoc = doc
+ .createLuceneDocument();
+ writer.write(luceneDoc.toString());
+ writer.write('\n');
+ writer.write('\n');
+ indexWriter.addDocument(luceneDoc);
- System.out.println("contributionUpdated:");
- System.out.println(repository);
- System.out.println(oldContribution);
- System.out.println(contribution);
+ }
+
+ writer.close();
+
+ // BufferedReader consoleReader = new BufferedReader(
+ // new InputStreamReader(System.in));
+ //
+ // while (true) {
+ // System.out.print("query: ");
+ // String queryString = consoleReader.readLine();
+ //
+ // if (queryString.equals("exit")) {
+ // break;
+ // }
+ //
+ // parseAndSearch(queryString, false);
+ //
+ // }
}
- @SuppressWarnings("deprecation")
- public Result[] parseAndSearch(String searchQuery, boolean highlight) {
+ @AllowsPassByReference
+ public void contributionUpdated(Contribution oldContribution,
+ Contribution contribution) {
+
+ IndexWriter indexWriter = null;
try {
- final IndexSearcher searcher = new IndexSearcher(dir);
- final DomainSearchResultProcessor resultProcessor = new DomainSearchResultProcessor(
- new DomainSearchResultFactory());
+ indexWriter = new IndexWriter(getIndexDirectory(), this.analyzer,
+ IndexWriter.MaxFieldLength.UNLIMITED);
- QueryParser qp = new QueryParser("", analyzer);
+ contributionRemoved(oldContribution, indexWriter);
+ contributionAdded(contribution, indexWriter);
- qp.setAllowLeadingWildcard(true);
+ indexWriter.commit();
- try {
- final Query query = qp.parse(searchQuery);
+ } catch (Exception e) {
- searcher.search(query, new HitCollector() {
+ if (indexWriter != null) {
- @Override
- public void collect(int doc, float score) {
- try {
- org.apache.lucene.document.Document document = searcher
- .doc(doc);
+ try {
+ indexWriter.rollback();
- resultProcessor.process(document, query, null);
+ } catch (Exception e1) {
+ // ignore exception
+ }
- List<?> fields = document.getFields();
- System.out.println("---------");
- System.out.println("doc = " + doc);
+ }
- for (Object obj : fields) {
- Field field = (Field) obj;
- String[] values = document.getValues(field
- .name());
- System.out.println(field);
+ throw new RuntimeException("Problem while indexing!", e);
- for (String value : values) {
- System.out.println("\t" + value);
- }
+ } finally {
- }
+ if (indexWriter != null) {
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ try {
+ indexWriter.close();
- });
+ } catch (Exception e) {
+ // ignore exception
+ }
- } catch (ParseException e) {
- System.out.println(e.getMessage());
}
- Result[] results = resultProcessor.getResultRoots();
+ }
+
+ }
+
+ public Result[] parseAndSearch(String searchQuery, final boolean highlight)
+ throws Exception {
+
+ final IndexSearcher searcher = new IndexSearcher(getIndexDirectory());
+
+ DomainSearchResultProcessor resultProcessor = new DomainSearchResultProcessor(
+ new DomainSearchResultFactory());
- // for (Result result : results) {
- // System.out.println(result);
- // }
+ final Query query = qp.parse(searchQuery);
+ System.out.println("query: " + searchQuery);
- System.out.println();
+ TopDocs topDocs = searcher.search(query, 1000);
- return results;
+ int indexed = 0;
+ HashSet<String> set = new HashSet<String>();
+ for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
+ org.apache.lucene.document.Document luceneDocument = searcher
+ .doc(scoreDoc.doc);
+
+ resultProcessor.process(luceneDocument, null);
+
+ indexed++;
+ set.add(luceneDocument.toString());
+
+ System.out.println(luceneDocument);
- } catch (CorruptIndexException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
}
- return null;
+ /*
+ * searcher.search(query, new HitCollector() {
+ *
+ * @Override public void collect(int doc, float score) { try {
+ * org.apache.lucene.document.Document document = searcher .doc(doc);
+ *
+ * luceneDocuments.put(doc, document);
+ *
+ * System.out.println(doc);
+ *
+ * } catch (CorruptIndexException e) { // TODO Auto-generated catch
+ * block e.printStackTrace(); } catch (IOException e) { // TODO
+ * Auto-generated catch block e.printStackTrace(); } }
+ *
+ * });
+ */
+
+ System.out.println("indexed = " + indexed);
+ System.out.println("set.size() = " + set.size());
+
+ Result[] results = resultProcessor.createResultRoots();
+
+ if (highlight) {
+
+ for (Result result : results) {
+ HighlightingUtil.highlightResult(result, query);
+ }
+
+ }
+
+ return results;
}
@@ -192,4 +360,26 @@
return null;
}
+ public String highlight(String field, String text, String searchQuery)
+ throws Exception {
+ final Query query = qp.parse(searchQuery);
+
+ return HighlightingUtil.highlight(field, query, text);
+
+ }
+
+ public boolean indexExists() {
+
+ if ((this.indexDirectoryPath == null || this.indexDirectoryPath
+ .length() == 0)
+ && this.dir == null) {
+
+ return false;
+
+ } else {
+ return this.dir != null || IndexReader.indexExists(new File(this.indexDirectoryPath));
+ }
+
+ }
+
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultFactory.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultFactory.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultFactory.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultFactory.java Mon Aug 10 01:40:02 2009
@@ -1,17 +1,17 @@
package org.apache.tuscany.sca.domain.search.impl;
-public class DomainSearchResultFactory extends ResultFactoryList {
+public class DomainSearchResultFactory extends PriorityFieldListResultFactory {
private static final long serialVersionUID = -7421799172738469027L;
public DomainSearchResultFactory() {
- add(new ContributionResultFactory());
- add(new CompositeResultFactory());
- add(new ComponentResultFactory());
- add(new ComponentTypeResultFactory());
- add(new ArtifactResultProcessor.ArtifactResultFactory());
- add(new BindingResultFactory());
- add(new FileContentResultProcessor.FileContentResultFactory());
+ add(SearchFields.COMPOSITE_FIELD);
+ add(SearchFields.COMPONENT_FIELD);
+ add(SearchFields.COMPONENT_TYPE_FIELD);
+ add(SearchFields.CONTRIBUTION_FIELD);
+ add(SearchFields.BINDING_FIELD);
+ add(SearchFields.FILE_CONTENT_FIELD);
+ add(SearchFields.ARTIFACT_FIELD);
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultProcessor.java Mon Aug 10 01:40:02 2009
@@ -12,7 +12,6 @@
super(new DomainSearchResultFactory());
- add(new ArtifactResultProcessor());
add(new FileContentResultProcessor());
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResultProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResultProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResultProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResultProcessor.java Mon Aug 10 01:40:02 2009
@@ -1,110 +1,80 @@
package org.apache.tuscany.sca.domain.search.impl;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
-import java.util.Enumeration;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
+import java.net.URL;
import org.apache.lucene.document.Document;
-import org.apache.lucene.search.Query;
import org.apache.tuscany.sca.domain.search.Result;
-import org.apache.tuscany.sca.domain.search.ResultFactory;
import org.apache.tuscany.sca.domain.search.ResultProcessor;
public class FileContentResultProcessor implements ResultProcessor {
- public static class FileContentResultFactory implements
- ResultFactory<FileContentResult> {
+ public Result process(Document document, Result result) {
- public FileContentResultFactory() {
- // empty constructor
- }
-
- public FileContentResult createResult(String name) {
- return new FileContentResult(name);
- }
-
- public String getName(Document document) {
- return document.get(SearchFields.FILE_FIELD);
- }
-
- public String getType() {
- return SearchFields.FILE_FIELD;
- }
-
- public FileContentResult createResult(Document document) {
- String name = getName(document);
-
- if (name != null) {
- return createResult(name);
- }
-
- return null;
-
- }
-
- }
-
- public Result process(Document document, Query query, Result result) {
-
- if (result instanceof FileContentResult) {
- FileContentResult fileContentResult = (FileContentResult) result;
+ if (document.getFieldable(SearchFields.FILE_CONTENT_FIELD) != null) {
Reader reader;
ParentField parentField = new ParentField(document
.get(SearchFields.PARENT_FIELD));
- String parentURI = parentField.getElementURI(parentField
- .getElementsCount() - 1);
- String name = document.get(SearchFields.FILE_FIELD);
- if (name == null) {
- return result;
- }
+ int lastParentElementIndex = parentField.getElementsCount() - 1;
+ String parentURI;
- if (parentURI.indexOf(ZipDocumentProcessor.ARCHIVE_SEPARATOR) != -1) {
- String[] locations = parentURI.split(Character
- .toString(ZipDocumentProcessor.ARCHIVE_SEPARATOR));
+ if (SearchFields.ARTIFACT_FIELD.equals(parentField
+ .getElementType(lastParentElementIndex))) {
+ parentURI = parentField.getElementURI(lastParentElementIndex);
- try {
- ZipFile zip = new ZipFile(new File(locations[0]));
+ // if (parentURI.startsWith("jar:")) {
- // TODO: normalize the entry path and check if the entry still exists
- ZipEntry entry = zip.getEntry(locations[1].substring(1) + name);
-
- Enumeration<? extends ZipEntry> entries = zip.entries();
-
- while (entries.hasMoreElements()) System.out.println(entries.nextElement().getName());
-
- reader = new InputStreamReader(zip.getInputStream(entry));
+ try {
+ reader = new InputStreamReader(new URL(parentURI)
+ .openStream());
} catch (IOException e) {
return result;
}
- } else {
+ // } else {
+ //
+ // try {
+ // reader = new InputStreamReader(new FileInputStream(
+ // new File(parentURI + (parentURI.length() > 0 ? "/" : "") +
+ // name)));
+ //
+ // } catch (FileNotFoundException e) {
+ // return result;
+ // }
+ //
+ // }
try {
- reader = new InputStreamReader(new FileInputStream(
- new File(parentURI + '/' + name)));
- } catch (FileNotFoundException e) {
- return result;
- }
+ StringBuilder sb = new StringBuilder();
+ int c;
- }
+ // TODO: load the chars into an array buffer instead of one
+ // at a
+ // time
+ while ((c = reader.read()) != -1) {
+ char character = (char) c;
+
+ if (!Character.isIdentifierIgnorable(character)) {
+ sb.append(character);
+ }
+
+ }
+
+ result.setValue(sb.toString());
+
+ } catch (Exception e) {
+ // ignore content loading, TODO: maybe it should return an
+ // error
+ // message as the content
+
+ }
- try {
- fileContentResult.setContent(HighlightingUtil
- .bestFragmentHighlighted(query, reader));
-
- } catch (IOException e) {
- // ignore content loading, TODO: maybe it return an error
- // message as the content
}
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -2,7 +2,6 @@
import java.util.LinkedList;
-import org.apache.lucene.document.Field;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
@@ -20,36 +19,36 @@
if (!file.isLeaf()) {
if (doc == null) {
- doc = documents.get(file.getPath());
+ doc = documents.get(SearchFields.FILE_CONTENT_FIELD + file.getPath());
}
- doc.add(new Field(SearchFields.DIRECTORY_FIELD, file
- .getPath(), Field.Store.YES,
- Field.Index.ANALYZED));
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR
- + SearchFields.FILE_FIELD
- + DomainPathAnalyzer.TYPE_SEPARATOR + file.getPath()
- + DomainPathAnalyzer.URI_SEPARATOR + file.getName();
-
- FileContent[] files = file.getChildren();
-
- for (FileContent childFile : files) {
- Document fileDoc = parentProcessor.process(parentProcessor,
- documents, childFile, null, parent);
+ //FileContent[] files = file.getChildren();
- fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
- Field.Store.YES, Field.Index.ANALYZED));
+// for (FileContent childFile : files) {
+// // Document fileDoc = parentProcessor.process(
+// // parentProcessor, documents, childFile, null,
+// // parent);
+//
+// Document fileDoc = null;
+//
+// fileDoc = process(this, documents, childFile, null, parent);
+//
+// if (fileDoc == null) {
+// continue;
+// }
+//
+// fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
+// Field.Store.YES, Field.Index.ANALYZED));
+//
+// }
- }
-
return doc;
} else {
for (DocumentProcessor processor : this) {
- Document newDoc = processor.process(this, documents,
- object, doc, parent);
+ Document newDoc = processor.process(this, documents, file,
+ doc, parent);
if (newDoc != null) {
return newDoc;
@@ -60,7 +59,7 @@
}
}
-
+
return doc;
}
@@ -75,7 +74,7 @@
return null;
}
- return path;
+ return SearchFields.FILE_CONTENT_FIELD + path;
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/HighlightingUtil.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/HighlightingUtil.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/HighlightingUtil.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/HighlightingUtil.java Mon Aug 10 01:40:02 2009
@@ -1,43 +1,76 @@
package org.apache.tuscany.sca.domain.search.impl;
import java.io.IOException;
-import java.io.Reader;
import java.io.StringReader;
+import java.util.Map;
import org.apache.lucene.analysis.CachingTokenFilter;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
+import org.apache.lucene.search.highlight.NullFragmenter;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SpanScorer;
+import org.apache.tuscany.sca.domain.search.Result;
final public class HighlightingUtil {
- public static String bestFragmentHighlighted(Query query, Reader reader) throws IOException {
- StringBuilder sb = new StringBuilder();
- int c;
+ public static void highlightResult(Result result, Query query) {
+ highlightResult(result, query, new SimpleFragmenter(70));
+ }
+
+ public static void highlightResult(Result result, Query query, Fragmenter fragmenter) {
+ Map<String, Result> contents = result.getContents();
+
+ if (contents != null) {
+
+ for (Result content : contents.values()) {
+ highlightResult(content, query, fragmenter);
+ }
+
+ }
- // TODO: load the chars into a buffer instead of one at a time
- while ((c = reader.read()) != -1) {
- char character = (char) c;
-
- if (!Character.isIdentifierIgnorable(character)) {
- sb.append(character);
+ try {
+ String highlightedText = HighlightingUtil.bestFragmentHighlighted(
+ result.getField(), query, result.getValue(), fragmenter);
+
+ // checks if something was highlighted before resetting the value
+ if (highlightedText != null && highlightedText.length() > 0) {
+ result.setValue(highlightedText);
}
-
+
+ } catch (IOException e) {
+ // ignore highlighting
+ }
+
+ }
+
+ public static String highlight(String field, Query query, String text) throws IOException {
+ String highlightedText = bestFragmentHighlighted(field, query, text, new NullFragmenter());
+
+ if (highlightedText == null || text.length() >= highlightedText.length()) {
+ return text;
}
- String text = sb.toString();
+ return highlightedText;
- CachingTokenFilter tokenStream = new CachingTokenFilter(new NamingAnalyzer().tokenStream(
- SearchFields.FILE_CONTENT_FIELD, new StringReader(text)));
+ }
+
+ public static String bestFragmentHighlighted(String field, Query query, String text) throws IOException {
+ return bestFragmentHighlighted(field, query, text, new SimpleFragmenter(100));
+ }
+
+ public static String bestFragmentHighlighted(String field, Query query, String text, Fragmenter fragmenter) throws IOException {
+ CachingTokenFilter tokenStream = new CachingTokenFilter(new DomainSearchAnalyzer().tokenStream(
+ field, new StringReader(text)));
- Highlighter highlighter = new Highlighter(new DomainSearchFormatter(), new SpanScorer(query, SearchFields.FILE_CONTENT_FIELD, tokenStream, ""));
- highlighter.setTextFragmenter(new SimpleFragmenter(100));
+ Highlighter highlighter = new Highlighter(new DomainSearchFormatter(), new SpanScorer(query, field, tokenStream, ""));
+ highlighter.setTextFragmenter(fragmenter);
tokenStream.reset();
try {
- return highlighter.getBestFragments(tokenStream, text, 2, "...");
+ return highlighter.getBestFragments(tokenStream, text, 2, " ... ");
} catch (InvalidTokenOffsetsException e) {
@@ -45,7 +78,7 @@
return "";
}
-
+
}
public static String replaceHighlightMarkupBy(CharSequence text,
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ParentField.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ParentField.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ParentField.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ParentField.java Mon Aug 10 01:40:02 2009
@@ -29,7 +29,7 @@
for (int i = 0; i < length ; i++) {
char c = parentFieldValue.charAt(i);
- if (c == DomainPathAnalyzer.PATH_SEPARATOR) {
+ if (c == DomainPathAnalyzer.PATH_SEPARATOR || c == DomainPathAnalyzer.PATH_START) {
if (sb.length() > 0 || element != null) {
Copied: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PriorityFieldListResultFactory.java (from r791205, tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultFactoryList.java)
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PriorityFieldListResultFactory.java?p2=tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PriorityFieldListResultFactory.java&p1=tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultFactoryList.java&r1=791205&r2=802637&rev=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultFactoryList.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PriorityFieldListResultFactory.java Mon Aug 10 01:40:02 2009
@@ -6,21 +6,21 @@
import org.apache.tuscany.sca.domain.search.Result;
import org.apache.tuscany.sca.domain.search.ResultFactory;
-public class ResultFactoryList extends LinkedList<ResultFactory<? extends Result>> implements ResultFactory<Result> {
+public class PriorityFieldListResultFactory extends LinkedList<String> implements ResultFactory<Result> {
private static final long serialVersionUID = 6806221945324235828L;
- public ResultFactoryList() {
+ public PriorityFieldListResultFactory() {
// empty constructor
}
public Result createResult(Document document) {
- for (ResultFactory<? extends Result> resultFactory : this) {
- Result result = resultFactory.createResult(document);
+ for (String field : this) {
+ String value = document.get(field);
- if (result != null) {
- return result;
+ if (value != null) {
+ return new ResultImpl(field, value);
}
}
@@ -29,27 +29,8 @@
}
- public Result createResult(String name) {
- return null;
- }
-
- public String getName(Document document) {
-
- for (ResultFactory<? extends Result> resultFactory : this) {
- String name = resultFactory.getName(document);
-
- if (name != null) {
- return name;
- }
-
- }
-
- return null;
-
- }
-
- public String getType() {
- return "";
+ public Result createResult(String field, String value) {
+ return new ResultImpl(field, value);
}
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultImpl.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultImpl.java Mon Aug 10 01:40:02 2009
@@ -9,7 +9,7 @@
import org.apache.tuscany.sca.domain.search.Result;
-public abstract class ResultImpl implements Result {
+final public class ResultImpl implements Result {
private static final long serialVersionUID = 7084570994751217396L;
@@ -17,14 +17,26 @@
private HashMap<String, Result> contents;
- private String name;
+ private String value;
+
+ private String field;
public ResultImpl() {
// empty constructor
}
- public ResultImpl(String name) {
- this.name = name;
+ public ResultImpl(String field, String value) {
+ setValue(value);
+ setField(field);
+
+ }
+
+ public String getField() {
+ return this.field;
+ }
+
+ public void setField(String field) {
+ this.field = field;
}
public Result getContainer() {
@@ -41,8 +53,8 @@
}
- public String getName() {
- return this.name;
+ public String getValue() {
+ return this.value;
}
public void setContainer(Result container) {
@@ -69,8 +81,8 @@
if (obj instanceof Result) {
Result artifactResult = (Result) obj;
- if (artifactResult.getName() == this.name || this.name != null
- && this.name.equals(artifactResult.getName())) {
+ if (artifactResult.getValue() == this.value || this.value != null
+ && this.value.equals(artifactResult.getValue())) {
if (artifactResult.getContainer() == this.container
|| this.container != null
@@ -96,7 +108,7 @@
}
public void addContent(Result artifactResult) {
- internalGetContents().put(artifactResult.getName(), artifactResult);
+ internalGetContents().put(artifactResult.getValue(), artifactResult);
if (artifactResult.getContainer() != this) {
artifactResult.setContainer(this);
@@ -139,22 +151,22 @@
* 31
+ (this.contents == null || this.contents.isEmpty() ? 13
: this.contents.hashCode());
- hash = hash * 31 + (this.name == null ? 17 : this.name.hashCode());
+ hash = hash * 31 + (this.value == null ? 17 : this.value.hashCode());
return hash;
}
- public void setName(String name) {
- this.name = name;
+ public void setValue(String value) {
+ this.value = value;
}
public String toString() {
StringBuilder sb = new StringBuilder("<");
Result container = getContainer();
- sb.append(getClass().getName()).append(" name='").append(getName())
- .append("' container='").append(container != null ? container.getName() : null).append("'>\n");
+ sb.append(getClass().getName()).append(" name='").append(getValue())
+ .append("' container='").append(container != null ? container.getValue() : null).append("'>\n");
Method[] methods = getClass().getMethods();
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultProcessorList.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultProcessorList.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultProcessorList.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultProcessorList.java Mon Aug 10 01:40:02 2009
@@ -4,145 +4,162 @@
import java.util.LinkedList;
import org.apache.lucene.document.Document;
-import org.apache.lucene.search.Query;
import org.apache.tuscany.sca.domain.search.Result;
import org.apache.tuscany.sca.domain.search.ResultFactory;
import org.apache.tuscany.sca.domain.search.ResultProcessor;
-public class ResultProcessorList extends LinkedList<ResultProcessor> implements ResultProcessor {
+public class ResultProcessorList extends LinkedList<ResultProcessor> implements
+ ResultProcessor {
private static final long serialVersionUID = 7147307292452694895L;
-
- private ResultFactoryList resultFactoryList;
-
+
private HashMap<String, ResultHashMap> resultRoots = new HashMap<String, ResultHashMap>();
+
+ private ResultFactory<? extends Result> resultFactory;
- public ResultProcessorList(ResultFactoryList resultFactoryList) {
- this.resultFactoryList = resultFactoryList;
+ public ResultProcessorList(ResultFactory<? extends Result> resultFactory) {
+ this.resultFactory = resultFactory;
}
-
- public Result process(Document document, Query query, Result result) {
-
- if (result == null) {
- result = this.resultFactoryList.createResult(document);
- }
-
+
+ public Result process(Document document, Result result) {
+
if (result == null) {
- return null;
+ result = this.resultFactory.createResult(document);
+
+ if (result == null) {
+ return null;
+ }
+
}
-
+
ResultHashMap resultHashMap;
-
+
String parent = document.get(SearchFields.PARENT_FIELD);
-
+
if (parent == null) {
resultHashMap = new ResultHashMap(result);
- resultRoots.put(result.getName(), resultHashMap);
-
+ resultRoots.put(result.getValue(), resultHashMap);
+
} else {
-
+
ParentField parentField = new ParentField(parent);
HashMap<String, ResultHashMap> current = this.resultRoots;
- Result currentResult = null;
+ //Result currentResult = null;
int elementsCount = parentField.getElementsCount();
-
- for (int i = 0 ; i < elementsCount ; i++) {
- String actualURI = parentField.getElementURI(i);
+
+ for (int i = 0; i < elementsCount; i++) {
+ String actualName = parentField.getElementName(i);
String type = parentField.getElementType(i);
-
- if (actualURI.length() > 0) {
- ResultHashMap actualResultHashMap = current.get(actualURI);
-
+
+ if (actualName.length() > 0) {
+ ResultHashMap actualResultHashMap = current.get(actualName);
+
if (actualResultHashMap == null) {
- ResultHashMap aux = new ResultHashMap(type, parentField.getElementName(i));
-
- if (current.put(actualURI, aux) == null && currentResult != null) {
- currentResult.addContent(aux.result);
- }
-
+ ResultHashMap aux = new ResultHashMap(type, parentField
+ .getElementName(i));
+
+ current.put(aux.result.getValue(), aux);
+// if (current.put(aux.result.getValue(), aux) == null
+// && currentResult != null) {
+// currentResult.addContent(aux.result);
+// }
+
current = aux;
- currentResult = aux.result;
-
+ //currentResult = aux.result;
+
} else {
current = actualResultHashMap;
- currentResult = actualResultHashMap.result;
-
+ //currentResult = actualResultHashMap.result;
+
}
-
+
}
-
+
}
-
- resultHashMap = current.get(result.getName());
-
+
+ resultHashMap = current.get(result.getValue());
+
if (resultHashMap == null) {
resultHashMap = new ResultHashMap(result);
- current.put(result.getName(), resultHashMap);
-
- if (currentResult != null) {
- currentResult.addContent(result);
- }
-
+ current.put(result.getValue(), resultHashMap);
+
+// if (currentResult != null) {
+// currentResult.addContent(result);
+// }
+
}
-
+
}
-
+
for (ResultProcessor processor : this) {
- result = processor.process(document, query, result);
+ result = processor.process(document, result);
}
-
+
resultHashMap.result = result;
-
+
return result;
-
+
}
- public Result[] getResultRoots() {
- int size = this.resultRoots.size();
+ private static void addContentsToResult(ResultHashMap resultHashMap) {
+
+ for (ResultHashMap actual : resultHashMap.values()) {
+ addContentsToResult(actual);
+
+ resultHashMap.result.addContent(actual.result);
+
+ }
+ }
+
+ public Result[] createResultRoots() {
+ int size = this.resultRoots.size();
+
if (size == 0) {
return new Result[0];
}
-
+
Result[] res = new Result[size];
-
+
int i = 0;
for (ResultHashMap resultHashMap : this.resultRoots.values()) {
+
+ addContentsToResult(resultHashMap);
res[i++] = resultHashMap.result;
+
}
+ this.resultRoots.clear();
+
return res;
-
+
}
-
- private Result createResult(String type, String name) {
+
+ private Result createResult(String field, String value) {
+ Result result = this.resultFactory.createResult(field, value);
- for (ResultFactory<? extends Result> actualResultFactory : this.resultFactoryList) {
-
- if (type.equals(actualResultFactory.getType())) {
- return actualResultFactory.createResult(name);
- }
-
+ if (result != null) {
+ return result;
}
-
+
throw new IllegalArgumentException();
-
+
}
-
+
private class ResultHashMap extends HashMap<String, ResultHashMap> {
private static final long serialVersionUID = 7982561264440904411L;
-
+
Result result;
-
+
ResultHashMap(String type, String name) {
- this.result = createResult(type, name);
+ this(createResult(type, name));
}
-
+
ResultHashMap(Result result) {
this.result = result;
}
-
+
}
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SearchFields.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SearchFields.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SearchFields.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SearchFields.java Mon Aug 10 01:40:02 2009
@@ -2,11 +2,7 @@
public interface SearchFields {
- final public static String LOCATION_FIELD = "location";
-
- final public static String DIRECTORY_FIELD = "directory";
-
- final public static String FILE_FIELD = "file";
+ final public static String ARTIFACT_FIELD = "artifact";
final public static String COMPONENT_TYPE_FIELD = "componenttype";
@@ -18,8 +14,6 @@
final public static String BINDING_FIELD = "binding";
- final public static String ARTIFACT_FIELD = "artifact";
-
final public static String CONTRIBUTION_FIELD = "contribution";
final public static String COMPONENT_FIELD = "component";
@@ -48,7 +42,7 @@
final public static String INCLUDEDBY_FIELD = "includedby";
- final public static String KEY_FIELD = "propertykey";
+ final public static String PROPERTY_KEY_FIELD = "propertykey";
final public static String VALUE_FIELD = "propertyvalue";
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SystemFileContent.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SystemFileContent.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SystemFileContent.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SystemFileContent.java Mon Aug 10 01:40:02 2009
@@ -5,24 +5,26 @@
import java.io.IOException;
import java.io.InputStream;
-public class SystemFileContent extends File implements FileContent {
+public class SystemFileContent implements FileContent {
private static final long serialVersionUID = -8337926886777467728L;
final boolean leaf;
-
+
final private File file;
public SystemFileContent(File file) {
- super(file.getPath());
-
this.leaf = !file.isDirectory();
this.file = file;
}
-
+
+ public File getFile() {
+ return this.file;
+ }
+
public InputStream getInputStream() throws IOException {
- return new FileInputStream(this);
+ return new FileInputStream(this.file);
}
public FileContent[] getChildren() {
@@ -41,4 +43,12 @@
return this.leaf;
}
+ public String getName() {
+ return this.file.getName();
+ }
+
+ public String getPath() {
+ return this.file.getPath();
+ }
+
}
Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/WrappedFileContent.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/WrappedFileContent.java?rev=802637&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/WrappedFileContent.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/WrappedFileContent.java Mon Aug 10 01:40:02 2009
@@ -0,0 +1,91 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.JarURLConnection;
+import java.net.URL;
+
+public class WrappedFileContent implements FileContent {
+
+ final private FileContent fileContent;
+
+ public WrappedFileContent(URL url) throws IOException {
+ String protocol = url.getProtocol();
+
+ if (protocol.equals("jar")) {
+ JarURLConnection jarConn = (JarURLConnection) url.openConnection();
+ //Enumeration<JarEntry> entries = jarConn.getJarFile().entries();
+ String file = url.getFile();
+ file = file.substring(file.lastIndexOf('!') + 1);
+
+// if (file.charAt(file.length() - 1) != '/') {
+//
+// int beginIndex;
+//
+// if (file.charAt(0) == '/') {
+// beginIndex = 1;
+//
+// } else {
+// beginIndex = 0;
+// }
+//
+// file = file.substring(beginIndex);
+//
+// while (entries.hasMoreElements()) {
+// String actualFile = entries.nextElement().getName();
+//
+// if (actualFile.charAt(0) == '/') {
+// beginIndex = 1;
+//
+// } else {
+// beginIndex = 0;
+// }
+//
+// if (actualFile.length() - beginIndex == file.length() + 1 && actualFile.charAt(actualFile.length() - 1) == '/') {
+//
+// if (actualFile.startsWith(file, beginIndex)) {
+// file = actualFile;
+//
+// break;
+//
+// }
+//
+// }
+//
+// }
+//
+// }
+
+ this.fileContent = ZipFileContent.createZipFileContent(jarConn.getJarFile(), file);
+
+ } else if (protocol.equals("file")) {
+ this.fileContent = new SystemFileContent(new File(url.getFile()));
+
+ } else {
+ this.fileContent = new DefaultFileContent(url);
+ }
+
+ }
+
+ public FileContent[] getChildren() {
+ return this.fileContent.getChildren();
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return this.fileContent.getInputStream();
+ }
+
+ public String getName() {
+ return this.fileContent.getName();
+ }
+
+ public String getPath() {
+ return this.fileContent.getPath();
+ }
+
+ public boolean isLeaf() {
+ return this.fileContent.isLeaf();
+ }
+
+}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipDocumentProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipDocumentProcessor.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -2,7 +2,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import org.apache.lucene.document.Field;
@@ -11,8 +10,6 @@
public class ZipDocumentProcessor implements DocumentProcessor {
- final public static char ARCHIVE_SEPARATOR = '\u0004';
-
public Object getDocumentKey(Object object) {
if (object instanceof File) {
@@ -39,18 +36,18 @@
SystemFileContent file = (SystemFileContent) object;
try {
- ZipFile zip = new ZipFile(file);
+ ZipFile zip = new ZipFile(file.getFile());
if (document == null) {
document = documents.get(file.getPath());
}
parent += DomainPathAnalyzer.PATH_SEPARATOR
- + SearchFields.FILE_FIELD
- + DomainPathAnalyzer.TYPE_SEPARATOR + file.getPath() + ARCHIVE_SEPARATOR
+ + SearchFields.ARTIFACT_FIELD
+ + DomainPathAnalyzer.TYPE_SEPARATOR + "jar:file:" + file.getPath() + DomainPathAnalyzer.ARCHIVE_SEPARATOR + '/' + file.getName()
+ DomainPathAnalyzer.URI_SEPARATOR + file.getName();
- document.add(new Field(SearchFields.FILE_FIELD, file.getName(), Field.Store.YES,
+ document.add(new Field(SearchFields.ARTIFACT_FIELD, file.getName(), Field.Store.YES,
Field.Index.ANALYZED));
ZipFileContent[] zipFiles = ZipFileContent.createZipFileContent(zip);
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipFileContent.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipFileContent.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipFileContent.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipFileContent.java Mon Aug 10 01:40:02 2009
@@ -7,20 +7,18 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-
public class ZipFileContent implements FileContent {
-
+
final private ZipFile file;
-
+
final private ZipEntry entry;
-
+
private FileContent[] children;
-
+
private ZipFileContent(ZipFile file, ZipEntry entry) {
this.file = file;
this.entry = entry;
-
+
}
public InputStream getInputStream() throws IOException {
@@ -28,7 +26,8 @@
}
public String getPath() {
- return this.file.getName() + ZipDocumentProcessor.ARCHIVE_SEPARATOR + '/' + this.entry.getName();
+ return this.file.getName() + DomainPathAnalyzer.ARCHIVE_SEPARATOR + '/'
+ + this.entry.getName();
}
public FileContent[] getChildren() {
@@ -36,153 +35,270 @@
}
public String getName() {
- String name = this.entry.getName();
- int lastSlashIndex = name.lastIndexOf('/');
-
- if (lastSlashIndex == -1) {
- return name;
- }
-
- if (lastSlashIndex == name.length() - 1 && name.length() > 1) {
- lastSlashIndex = name.lastIndexOf('/', name.length() - 2);
-
- if (lastSlashIndex == -1) {
- return name.substring(0, name.length() - 1);
- }
-
- return name.substring(lastSlashIndex + 1, name.length() - 1);
-
- }
-
- return name.substring(lastSlashIndex + 1);
-
+ return this.entry.getName();
+// int lastSlashIndex = name.lastIndexOf('/');
+//
+// if (lastSlashIndex == -1) {
+// return name;
+// }
+//
+// if (lastSlashIndex == name.length() - 1 && name.length() > 1) {
+// lastSlashIndex = name.lastIndexOf('/', name.length() - 2);
+//
+// if (lastSlashIndex == -1) {
+// return name.substring(0, name.length() - 1);
+// }
+//
+// return name.substring(lastSlashIndex + 1, name.length() - 1);
+//
+// }
+//
+// return name.substring(lastSlashIndex + 1);
+
}
public boolean isLeaf() {
return !this.entry.isDirectory();
}
-
+
public static ZipFileContent[] createZipFileContent(ZipFile file) {
Enumeration<? extends ZipEntry> entries = file.entries();
-
+
if (!entries.hasMoreElements()) {
return null;
}
-
+
HashMap<String, ZipMap> roots = new HashMap<String, ZipMap>();
-
+
do {
ZipEntry entry = entries.nextElement();
String name = entry.getName();
-
+
if (name.length() > 0) {
-
+
String[] path = name.split("/");
-
+
ZipMap current = roots.get(path[0]);
-
+
if (current == null) {
current = new ZipMap();
roots.put(path[0], current);
-
+
if (path.length == 1) {
current.setEntry(file, entry);
continue;
}
-
+
}
-
- for (int i = 1 ; i < path.length - 1 ; i++) {
+
+ for (int i = 1; i < path.length - 1; i++) {
ZipMap actual = current.get(path[i]);
-
+
if (actual == null) {
actual = new ZipMap();
current.put(path[i], actual);
-
+
}
-
+
current = actual;
-
+
}
-
+
ZipMap entryMap = current.get(path[path.length - 1]);
-
+
if (entryMap == null) {
entryMap = new ZipMap();
current.put(path[path.length - 1], entryMap);
-
+
}
-
+
entryMap.setEntry(file, entry);
-
+
}
-
+
} while (entries.hasMoreElements());
-
+
for (ZipMap map : roots.values()) {
createZipFileContentChildren(map);
}
-
+
ZipFileContent[] ret = new ZipFileContent[roots.size()];
int i = 0;
-
+
for (ZipMap rootMap : roots.values()) {
ret[i++] = rootMap.zipContent;
}
-
+
return ret;
+
+ }
+
+ public static ZipFileContent createZipFileContent(ZipFile file,
+ String filePath) {
+
+ Enumeration<? extends ZipEntry> entries = file.entries();
+
+ if (!entries.hasMoreElements()) {
+ return null;
+ }
+
+ int beginIndex;
+ int endIndex;
+
+ if (filePath.charAt(0) == '/') {
+ beginIndex = 1;
+
+ } else {
+ beginIndex = 0;
+ }
+
+ ZipMap root = new ZipMap();
+ if (filePath.length() > 1
+ && filePath.charAt(filePath.length() - 1) == '/') {
+ endIndex = filePath.length() - 1;
+
+ } else {
+ endIndex = filePath.length();
+ }
+
+ filePath = filePath.substring(beginIndex, endIndex);
+ // HashMap<String, ZipMap> roots = new HashMap<String, ZipMap>();
+
+ do {
+ ZipEntry entry = entries.nextElement();
+ String name = entry.getName();
+
+ if (name.length() > 0) {
+
+ if (name.charAt(name.length() - 1) == '/') {
+ endIndex = 1;
+
+ } else {
+ endIndex = 0;
+ }
+
+ if (name.length() - endIndex == filePath.length()) {
+ root.setEntry(file, entry);
+
+ } else if (filePath.length() == 0 || (name.startsWith(filePath) && name.charAt(filePath.length()) == '/')) {
+
+ name = name.substring(filePath.length());
+ String[] path = name.split("/");
+
+ ZipMap current = root;
+
+ // if (current == null) {
+ // current = new ZipMap();
+ // roots.put(path[0], current);
+ //
+ // if (path.length == 1) {
+ // current.setEntry(file, entry);
+ // continue;
+ //
+ // }
+ //
+ // }
+
+ if (path.length > 0) {
+
+ int i;
+
+ if (path[0].length() == 0) {
+ i = 1;
+
+ } else {
+ i = 0;
+ }
+
+ for (; i < path.length - 1; i++) {
+ ZipMap actual = current.get(path[i]);
+
+ if (actual == null) {
+ actual = new ZipMap();
+ current.put(path[i], actual);
+
+ }
+
+ current = actual;
+
+ }
+
+ ZipMap entryMap = current.get(path[path.length - 1]);
+
+ if (entryMap == null) {
+ entryMap = new ZipMap();
+ current.put(path[path.length - 1], entryMap);
+
+ }
+
+ entryMap.setEntry(file, entry);
+
+ }
+
+ }
+
+ }
+
+ } while (entries.hasMoreElements());
+
+ createZipFileContentChildren(root);
+
+ return root.zipContent;
+
}
-
+
private static void createZipFileContentChildren(ZipMap map) {
ZipFileContent[] children = new ZipFileContent[map.size()];
int i = 0;
-
+
for (ZipMap childMap : map.values()) {
-
+
if (childMap.zipContent == null) {
- throw new RuntimeException("could not load zip file hierarchy for file: " + map.zipContent.file);
+ throw new RuntimeException(
+ "could not load zip file hierarchy for file: "
+ + map.zipContent.file);
}
-
+
children[i++] = childMap.zipContent;
-
+
createZipFileContentChildren(childMap);
-
+
}
-
+
map.zipContent.children = children;
-
+
}
-
+
@Override
public String toString() {
return this.file.getName() + '/' + this.entry.getName();
}
-
+
private static class ZipMap extends HashMap<String, ZipMap> {
-
+
private static final long serialVersionUID = 6514645087432837480L;
-
+
ZipFileContent zipContent;
-
+
void setEntry(ZipFile zipFile, ZipEntry entry) {
this.zipContent = new ZipFileContent(zipFile, entry);
}
-
+
ZipFileContent[] getChildren() {
-
+
ZipFileContent ret[] = new ZipFileContent[this.size()];
int i = 0;
-
+
for (ZipMap actual : this.values()) {
ret[i++] = actual.zipContent;
}
-
+
return ret;
-
+
}
-
+
}
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java Mon Aug 10 01:40:02 2009
@@ -15,12 +15,13 @@
public void test() throws IOException {
Tokenizer tokenizer = new DomainPathAnalyzer.DomainPathTokenizer(new StringReader(
- DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.CONTRIBUTION_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + "123tuscany" + DomainPathAnalyzer.TYPE_SEPARATOR + "SCA" +
+ Character.toString(DomainPathAnalyzer.PATH_START) + SearchFields.CONTRIBUTION_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + "123tuscany" + DomainPathAnalyzer.PATH_START + DomainPathAnalyzer.TYPE_SEPARATOR + "SCA" +
DomainPathAnalyzer.PATH_SEPARATOR + DomainPathAnalyzer.TYPE_SEPARATOR + "TuscanySCA" + DomainPathAnalyzer.TYPE_SEPARATOR + "321" + DomainPathAnalyzer.URI_SEPARATOR + "123"));
- assertNextToken(Character.toString(DomainPathAnalyzer.PATH_SEPARATOR), tokenizer);
+ assertNextToken(Character.toString(DomainPathAnalyzer.PATH_START), tokenizer);
assertNextToken("123", tokenizer);
assertNextToken("tuscany", tokenizer);
+ assertNextToken(Character.toString(DomainPathAnalyzer.PATH_START), tokenizer);
assertNextToken("sca", tokenizer);
assertNextToken(Character.toString(DomainPathAnalyzer.PATH_SEPARATOR), tokenizer);
assertNextToken("tuscany", tokenizer);