summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java59
1 files changed, 39 insertions, 20 deletions
diff --git a/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java b/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java
index 815f0a20c7..ade97aaaeb 100644
--- a/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java
+++ b/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java
@@ -1,44 +1,63 @@
package org.apache.tuscany.sca.domain.search.impl;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
import org.apache.lucene.document.Field;
import org.apache.tuscany.sca.contribution.Artifact;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-import org.apache.tuscany.sca.domain.search.DocumentProcessorsMap;
public class ArtifactDocumentProcessor implements DocumentProcessor {
- public Document process(DocumentProcessorsMap processors,
- DocumentMap documents, Object object, Document document, String parent) {
+ public Document process(DocumentProcessor parentProcessor,
+ DocumentMap documents, Object object, Document document,
+ String parent) {
if (object instanceof Artifact) {
Artifact artifact = (Artifact) object;
String uri = artifact.getURI();
-
+
if (uri != null && uri.length() == 0) {
uri = null;
}
-
+
if (uri != null) {
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.ARTIFACT_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
-
+
+ parent += DomainPathAnalyzer.PATH_SEPARATOR
+ + SearchFields.ARTIFACT_FIELD
+ + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
+
if (document == null) {
document = documents.get(uri);
}
-
+
document.add(new Field(SearchFields.ARTIFACT_FIELD, uri,
Field.Store.YES, Field.Index.ANALYZED));
-
+
}
-
+
if (document != null) {
+
+ String location = artifact.getLocation();
- document.add(new Field(SearchFields.LOCATION_FIELD, artifact.getLocation(),
+ document.add(new Field(SearchFields.LOCATION_FIELD, location,
Field.Store.YES, Field.Index.ANALYZED));
-
+
+ try {
+ Document fileDoc = parentProcessor.process(parentProcessor,
+ documents, new SystemFileContent(new File(new URL(location).getFile())), document, parent);
+
+ fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
+ Field.Store.YES, Field.Index.ANALYZED));
+
+ } catch (MalformedURLException e) {
+ // ignore file
+ }
+
}
-
+
return document == null ? FAKE_DOCUMENT : document;
}
@@ -48,21 +67,21 @@ public class ArtifactDocumentProcessor implements DocumentProcessor {
}
public Object getDocumentKey(Object obj) {
-
+
if (obj instanceof Artifact) {
Artifact artifact = (Artifact) obj;
String uri = artifact.getURI();
-
+
if (uri != null && uri.length() == 0) {
return null;
}
-
+
return uri;
-
+
}
-
+
throw new IllegalArgumentException();
-
+
}
}