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/07/05 09:04:58 UTC

svn commit: r791203 [1/2] - in /tuscany/branches/sca-java-1.x/modules: domain-manager/ domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ domain-manager/src/main/resources/ domain-search/ domain-search/src/main/java/org/apache/tus...

Author: adrianocrestani
Date: Sun Jul  5 07:04:56 2009
New Revision: 791203

URL: http://svn.apache.org/viewvc?rev=791203&view=rev
Log:
applying patch tuscany_2552_phillipe_ramalho_07_04_2009.patch.txt  from TUSCANY-2552

Added:
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search.html
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResultProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFileDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFormatter.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultFactory.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchResultProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContent.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileContentResultProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/HighlightingUtil.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ParentField.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PropertyResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ReferenceResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultFactoryList.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultImpl.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ResultProcessorList.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ServiceResult.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SystemFileContent.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ZipFileContent.java
Modified:
    tuscany/branches/sca-java-1.x/modules/domain-manager/pom.xml
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/DomainManager.composite
    tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/composite-gadget.html
    tuscany/branches/sca-java-1.x/modules/domain-search/pom.xml
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessorsMap.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DirectoryDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/Document.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzer.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchDocumentProcessorsMap.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchImpl.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PropertyDocumentProcessor.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/SearchFields.java
    tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java
    tuscany/branches/sca-java-1.x/modules/node-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/pom.xml?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/pom.xml Sun Jul  5 07:04:56 2009
@@ -3,7 +3,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership.  The ASF license f 	s this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
@@ -131,6 +131,13 @@
         
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-resource</artifactId>
+            <version>1.6-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-java</artifactId>
             <version>1.6-SNAPSHOT</version>
             <scope>runtime</scope>
@@ -143,11 +150,10 @@
             <scope>runtime</scope>
         </dependency>
         
-        <dependency>
+		<dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-contribution-resource</artifactId>
+            <artifactId>tuscany-domain-search</artifactId>
             <version>1.6-SNAPSHOT</version>
-            <scope>runtime</scope>
         </dependency>
         
         <dependency>
@@ -177,6 +183,12 @@
             <version>1.6-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
+        
+         <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.4</version>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java Sun Jul  5 07:04:56 2009
@@ -97,8 +97,8 @@
  * @version $Rev$ $Date$
  */
 @Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection {
+@Service(interfaces={ItemCollection.class, LocalItemCollection.class, WorkspaceReader.class})
+public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection, WorkspaceReader {
 
     private static final Logger logger = Logger.getLogger(ContributionCollectionImpl.class.getName());
 
@@ -486,7 +486,7 @@
      * 
      * @return
      */
-    private Workspace readWorkspace() {
+    Workspace readWorkspace() {
         String rootDirectory = domainManagerConfiguration.getRootDirectory();
         
         Workspace workspace;
@@ -652,5 +652,9 @@
         }
         return contributions;
     }
+
+	public Workspace getWorkspace() {
+		return readContributions(readWorkspace());
+	}
     
 }

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java Sun Jul  5 07:04:56 2009
@@ -59,6 +59,7 @@
 import org.apache.tuscany.sca.data.collection.ItemCollection;
 import org.apache.tuscany.sca.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.apache.tuscany.sca.domain.search.DomainSearch;
 import org.apache.xml.serialize.OutputFormat;
 import org.apache.xml.serialize.XMLSerializer;
 import org.osoa.sca.ServiceRuntimeException;
@@ -115,7 +116,7 @@
      */
     @Init
     public void initialize() throws ParserConfigurationException {
-        
+    	
         // Create factories
         ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
         modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
@@ -133,7 +134,7 @@
     
     public Entry<String, Item>[] getAll() {
         logger.fine("getAll");
-
+    
         // Return all the composites in the domain composite
         List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
         Composite compositeCollection = readCompositeCollection();

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java Sun Jul  5 07:04:56 2009
@@ -39,6 +39,7 @@
 import org.apache.tuscany.sca.data.collection.ItemCollection;
 import org.apache.tuscany.sca.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.apache.tuscany.sca.domain.search.DomainSearch;
 import org.osoa.sca.ServiceRuntimeException;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Reference;

Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,297 @@
+package org.apache.tuscany.sca.domain.manager.impl;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.Item;
+import org.apache.tuscany.sca.data.collection.ItemCollection;
+import org.apache.tuscany.sca.data.collection.LocalItemCollection;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
+import org.apache.tuscany.sca.domain.search.DomainSearch;
+import org.apache.tuscany.sca.domain.search.Result;
+import org.apache.tuscany.sca.domain.search.impl.ArtifactResult;
+import org.apache.tuscany.sca.domain.search.impl.FileContentResult;
+import org.apache.tuscany.sca.domain.search.impl.HighlightingUtil;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Scope("COMPOSITE")
+@Service(interfaces = { ItemCollection.class, LocalItemCollection.class })
+public class Searcher implements ItemCollection, LocalItemCollection {
+
+	static char[] characters = { '\u0001'/*  */, '\u0003'/*  */,
+			'\u0004'/*  */,
+
+	};
+
+	final private static String HTML_NEW_LINE = "<BR/>";
+
+	final private static String PATH_SEPARATOR = "/";
+
+	@Reference
+	public WorkspaceReader contributionCollection;
+
+	@Reference
+	public DomainSearch domainSearch;
+
+	public void delete(String key) throws NotFoundException {
+		System.out.println("delete");
+	}
+
+	private static void startIndentation(int size, StringWriter writer) {
+		writer
+				.write("<p style='margin-top:0em;margin-bottom:0em;padding:0em;margin-left:");
+		writer.write(Integer.toString(size));
+		writer.write("em'>");
+
+	}
+
+	private static void endIndentation(StringWriter writer) {
+		writer.write("</p>");
+	}
+
+	public Item get(String key) throws NotFoundException {
+		System.out.println("get");
+		this.domainSearch.contributionAdded(null, this.contributionCollection
+				.getWorkspace());
+		Result[] results = this.domainSearch.parseAndSearch(key, false);
+
+		Item item = new Item();
+		item.setTitle("Results");
+
+		StringWriter sw = new StringWriter();
+
+		for (Result result : results) {
+
+			try {
+				writeToHTML(0, result, sw);
+
+			} catch (IOException e) {
+				// ignore result
+			}
+
+			sw.write(HTML_NEW_LINE);
+
+		}
+
+		String contents = HighlightingUtil.replaceHighlightMarkupBy(sw
+				.getBuffer(), "<font color='#FF0000'>", "</font>");
+
+		item.setContents(replaceAll(contents, 40) + "end");
+		
+		System.out.println(item.getContents().indexOf("@Referencevar"));
+
+		System.out.println(item.getContents());
+
+		return item;
+
+	}
+
+	//	
+	// private static String replaceAll(CharSequence c) {
+	// StringBuilder sb = new StringBuilder();
+	// // HashSet<Character> set = new HashSet<Character>();
+	// Arrays.sort(characters);
+	// // int start = 0, end = 4;
+	// // char[] chars = new char[end - start];
+	// // System.arraycopy(characters, start, chars, 0, end - start);
+	//		
+	// for (int i = 0 ; i < c.length() ; i++) {
+	// char actual = c.charAt(i);
+	//			
+	// //if (Arrays.binarySearch(characters, actual) < 0) {
+	//
+	// if (!Character.isIdentifierIgnorable(actual)) {
+	// sb.append(actual);
+	//				
+	// } else {
+	// //sb.append('0');
+	// }
+	//			
+	// }
+	// //
+	// // System.out.println("set-size: " + set.size());
+	// // for (char character : set) {
+	// // System.out.print(",");
+	// // System.out.print((int) character);
+	// // System.out.print("/*" + character + "*/");
+	// //
+	// // }
+	// //
+	// // System.out.println();
+	//		
+	// return sb.toString();
+	//		
+	// }
+
+	private static String replaceAll(CharSequence c, int less) {
+		StringBuilder sb = new StringBuilder();
+		// HashSet<Character> set = new HashSet<Character>();
+		Arrays.sort(characters);
+		// int start = 0, end = 4;
+		// char[] chars = new char[end - start];
+		// System.arraycopy(characters, start, chars, 0, end - start);
+
+		for (int i = 0; i < c.length(); i++) {
+			char actual = c.charAt(i);
+
+			// if (Arrays.binarySearch(characters, actual) < 0) {
+
+			// if (actual != '\u000b' && actual != '\u0020' &&
+			// actual != '\u000c' && actual != '\u0009' &&
+			// actual != ')' && actual != '(') {
+
+			if (actual > less || actual == '&' || actual == '#'
+					|| actual == '\'' || actual == ' ' || actual == '%'
+					|| actual == ':') {
+				sb.append(actual);
+
+			} else {
+				// sb.append('0');
+			}
+
+		}
+		//		
+		// System.out.println("set-size: " + set.size());
+		// for (char character : set) {
+		// System.out.print(",");
+		// System.out.print((int) character);
+		// System.out.print("/*" + character + "*/");
+		//			
+		// }
+		//		
+		// System.out.println();
+
+		return sb.toString();
+
+	}
+
+	private static Result writeFileContentResultToHTML(int indentation,
+			Result result, StringWriter writer) throws IOException {
+
+		String content = ((FileContentResult) result).getContent();
+		writer.write("file:");
+
+		if (content != null && content.length() > 0) {
+
+			StringEscapeUtils.escapeHtml(writer, result.getName());
+			writer.write(HTML_NEW_LINE);
+
+			startIndentation(indentation, writer);
+			writer.write("<span style='max-width:100%'>");
+			StringEscapeUtils.escapeHtml(writer, content);
+			writer.write("</span>");
+			endIndentation(writer);
+			writer.write(HTML_NEW_LINE);
+
+		} else {
+
+			writer.write(result.getName());
+			Collection<Result> contents = result.getContents().values();
+
+			while (contents.size() == 1) {
+				result = contents.iterator().next();
+
+				if (result instanceof FileContentResult) {
+					writer.write(PATH_SEPARATOR);
+					writer.write(result.getName());
+
+					contents = result.getContents().values();
+
+				} else {
+					break;
+				}
+
+			}
+			
+			if (result instanceof FileContentResult) {
+				FileContentResult fileResult = (FileContentResult) result;
+				content = fileResult.getContent();
+
+				if (content != null && content.length() > 0) {
+
+					writer.write(HTML_NEW_LINE);
+
+					startIndentation(indentation, writer);
+					writer.write("<span style='max-width:100%'>");
+					StringEscapeUtils.escapeHtml(writer, content);
+					writer.write("</span>");
+					endIndentation(writer);
+					writer.write(HTML_NEW_LINE);
+
+				}
+
+			}
+
+		}
+		
+		return result;
+
+	}
+
+	private static void writeToHTML(int indentation, Result result,
+			StringWriter writer) throws IOException {
+
+		startIndentation(indentation++, writer);
+
+		if (result instanceof FileContentResult) {
+			result = writeFileContentResultToHTML(indentation, result, writer);
+
+		} else {
+
+			StringEscapeUtils.escapeHtml(writer, result.getClass()
+					.getSimpleName().substring(0,
+							result.getClass().getSimpleName().length() - 6));
+			writer.write(':');
+			StringEscapeUtils.escapeHtml(writer, result.getName());
+			writer.write(HTML_NEW_LINE);
+
+			if (result instanceof ArtifactResult) {
+				String location = ((ArtifactResult) result).getLocation();
+
+				if (location != null) {
+					startIndentation(indentation, writer);
+					writer.write("location: ");
+					StringEscapeUtils.escapeHtml(writer, location);
+					endIndentation(writer);
+					writer.write(HTML_NEW_LINE);
+
+				}
+
+			}
+
+		}
+
+		endIndentation(writer);
+
+		for (Result actualResult : result.getContents().values()) {
+			writeToHTML(indentation, actualResult, writer);
+		}
+
+	}
+
+	public Entry<String, Item>[] getAll() {
+		System.out.println("getAll");
+		return null;
+	}
+
+	public String post(String key, Item item) {
+		System.out.println("post");
+		return null;
+	}
+
+	public void put(String key, Item item) throws NotFoundException {
+		System.out.println("put");
+	}
+
+	public Entry<String, Item>[] query(String queryString) {
+		System.out.println("query");
+		return null;
+	}
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,9 @@
+package org.apache.tuscany.sca.domain.manager.impl;
+
+import org.apache.tuscany.sca.workspace.Workspace;
+
+public interface WorkspaceReader {
+	
+	Workspace getWorkspace();
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/DomainManager.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/DomainManager.composite?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/DomainManager.composite (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/DomainManager.composite Sun Jul  5 07:04:56 2009
@@ -29,6 +29,13 @@
         </service>
     </component>
     
+    <component name="SearchPage">
+        <t:implementation.widget location="search.html"/>
+        <service name="Widget">
+        	<t:binding.http uri="http://localhost:9990/ui/search"/>
+        </service>
+    </component>
+    
     <component name="HomeGadget">
         <t:implementation.widget location="home-gadget.html"/>
         <service name="Widget">
@@ -247,6 +254,29 @@
    		<reference name="cloudCollection" target="CloudCollectionComponent/LocalItemCollection"/>
    		<reference name="processCollection" target="NodeProcessCollectionComponent/LocalItemCollection"/>
     </component>
+    
+    <component name="SearchGadget">
+        <t:implementation.widget location="search-gadget.html"/>
+        <service name="Widget">
+        	<t:binding.http uri="http://localhost:9990/ui/search-gadget"/>
+        </service>
+		 <reference name="searcher" target="SearcherCollectionComponent/ItemCollection">
+		 	<t:binding.atom/>
+		 </reference>
+		
+    </component>
+    
+    <component name="SearcherCollectionComponent">
+        <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.Searcher"/>
+        
+   		<service name="ItemCollection">
+   	 		<t:binding.atom uri="http://localhost:9990/search" title="Search"/>
+   		</service>
+   		
+   		<reference name="domainSearch" target="DomainSearchComponent"/>
+   		<reference name="contributionCollection" target="ContributionCollectionComponent/WorkspaceReader"/>
+   		
+    </component>
 
     <component name="NodeProcessCollectionFacadeComponent">
         <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.NodeProcessCollectionFacadeImpl"/>
@@ -258,6 +288,7 @@
    		<reference name="processCollection" target="NodeProcessCollectionComponent/ItemCollection">
    	 		<t:binding.atom/>
    		</reference>
+   		
     </component>
 
     <component name="NodeProcessCollectionComponent">
@@ -277,5 +308,9 @@
     <component name="DomainManagerConfigurationComponent">
         <implementation.java class="org.apache.tuscany.sca.domain.manager.impl.DomainManagerConfigurationImpl"/>
     </component>
+    
+    <component name="DomainSearchComponent">
+        <implementation.java class="org.apache.tuscany.sca.domain.search.impl.DomainSearchImpl"/>
+    </component>
 
 </composite>

Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/composite-gadget.html
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/composite-gadget.html?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/composite-gadget.html (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/composite-gadget.html Sun Jul  5 07:04:56 2009
@@ -65,6 +65,7 @@
 	var gadget = gadget(window, document);
 	if (gadget.showContributions == null) {
 		gadget.showContributions = true;
+		
 	}
 
 	var domainCompositeForm = elementByID(gadget, 'domainCompositeForm');

Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html Sun Jul  5 07:04:56 2009
@@ -0,0 +1,81 @@
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * 
+    *   http://www.apache.org/licenses/LICENSE-2.0
+    * 
+    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    
+-->
+<html>
+
+<head>
+
+<title>SCA Domain - Domain Composite</title>
+
+<script type="text/javascript" src="../search-gadget/search-gadget.js"></script>
+<script type="text/javascript" src="utils.js"></script>
+
+
+
+<link rel="stylesheet" type="text/css" href="manager.css">
+
+
+
+</head>
+
+<body>
+
+
+  <div id="domainSearch">
+  
+  <form id="domainSearchForm">
+    
+    <p style="margin-top:1em;margin-bottom:1em;margin-left:1em;margin-right:1em">
+     	<input id="searchField" type="text" value="" />&nbsp;<input id="searchButton" type="button" value="Search" onclick="search()" />
+     </p>
+     
+     <br>
+     <br>
+     <div id="results"></div>
+  </form>
+  
+  </div>
+</body>
+
+<script type="text/javascript">
+
+	//@Reference
+	var searcher = new tuscany.sca.Reference("searcher");
+	
+	var gadget = gadget(window, document);
+	
+	function search() {
+		searcher.get(elementByID(gadget, 'searchField').value, searchResponse);
+	}
+	
+	function searchResponse(feed) {
+		var entries = feed.getElementsByTagName("entry");
+		var content = entries[0].getElementsByTagName("content");
+		
+		// alert(content[0].firstChild.data);
+		
+		var results = elementByID(gadget, "results");
+		results.innerHTML = content[0].firstChild.data;
+		
+	}
+	
+	elementByID(gadget, 'searchButton').onclick = search
+	
+</script>
+
+</html>

Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search.html
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search.html?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search.html (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search.html Sun Jul  5 07:04:56 2009
@@ -0,0 +1,66 @@
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * 
+    *   http://www.apache.org/licenses/LICENSE-2.0
+    * 
+    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    
+-->
+<html>
+<head>
+<title>SCA Domain - Search</title>
+
+<script type="text/javascript" src="utils.js"></script>
+
+<link rel="stylesheet" type="text/css" href="manager.css">
+</head>
+
+<body>
+  <div id="toolbarGadgetDiv"></div>
+  <br>
+  
+  <span class=hd1>
+  SCA Domain<br><br>
+  Domain Search&nbsp;<a href="/search/"><img src="icons/feed-icon.png" border="0"></a>
+  </span>
+  <br>
+  
+  <p>
+  	<div id="searchGadgetDiv"></div>
+  </p>
+  
+  <iframe id="toolbarGadget" src="toolbar-gadget.html"></iframe>
+  <iframe id="searchGadget" src="search-gadget.html"marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>
+</body>
+
+<script type="text/javascript">
+	var toolbarGadgetDiv = elementByID(document, 'toolbarGadgetDiv');
+	var searchGadgetDiv = elementByID(document, 'searchGadgetDiv');
+	
+	var toolbarGadget = elementByID(document, 'toolbarGadget');
+	var searchGadget = elementByID(document, 'searchGadget');
+	
+	function ongadget(win, doc) {
+		if (doc == content(toolbarGadget)) {
+			toolbarGadgetDiv.innerHTML = doc.body.innerHTML;
+			return toolbarGadgetDiv;
+		} else if (doc == content(searchGadget)) {
+			searchGadgetDiv.innerHTML = doc.body.innerHTML;
+			searchGadgetDiv.showContributions = true;
+			searchGadgetDiv.showComponents = true; 
+			return searchGadgetDiv;
+		}
+		return document;
+	}
+</script>
+</html>

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-search/pom.xml?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/pom.xml Sun Jul  5 07:04:56 2009
@@ -65,10 +65,22 @@
             <version>1.6-SNAPSHOT</version>
         </dependency>
 
-	<dependency>
+		<dependency>
             <groupId>org.apache.lucene</groupId>
             <artifactId>lucene-core</artifactId>
-	    <version>2.4-SNAPSHOT</version>
+	    	<version>2.4-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-highlighter</artifactId>
+	    	<version>2.4-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-memory</artifactId>
+	    	<version>2.4-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessor.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/DocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -6,7 +6,7 @@
 	
 	final public static Document FAKE_DOCUMENT = new Document();
 	
-	Document process(DocumentProcessorsMap processors, DocumentMap documents, Object object, Document document, String parent);
+	Document process(DocumentProcessor parentProcessor, DocumentMap documents, Object object, Document document, String parent);
 	
 	Object getDocumentKey(Object object);
 

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessorsMap.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/DocumentProcessorsMap.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessorsMap.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DocumentProcessorsMap.java Sun Jul  5 07:04:56 2009
@@ -77,7 +77,7 @@
 
 	}
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document document, String parent) {
 
 		LinkedList<DocumentProcessor> processorsList;
@@ -102,7 +102,7 @@
 		}
 
 		for (DocumentProcessor processor : processorsList) {
-			processor.process(processors, documents, object, document, parent);
+			processor.process(parentProcessor, documents, object, document, parent);
 		}
 
 		return document;

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.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/DomainSearch.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.java Sun Jul  5 07:04:56 2009
@@ -1,5 +1,6 @@
 package org.apache.tuscany.sca.domain.search;
 
+import org.apache.lucene.search.Query;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.osoa.sca.annotations.Remotable;
@@ -7,7 +8,9 @@
 @Remotable
 public interface DomainSearch {
 	
+	Result[] parseAndSearch(String searchQuery, boolean highlight);
 	
+	Result[] search(Query searchQuery, boolean hightlight);
 	
 	/**
      * Notifies the listener that a contribution has been added.

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.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/Result.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,22 @@
+package org.apache.tuscany.sca.domain.search;
+
+import java.io.Serializable;
+import java.util.Map;
+
+public interface Result extends Serializable {
+	
+	String getName();
+	
+	void setName(String name);
+	
+	Result getContainer();
+	
+	Map<String, Result> getContents();
+	
+	void addContent(Result artifactResult);
+	
+	void removeContent(Result artifactResult);
+	
+	void setContainer(Result container);
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.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/ResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,15 @@
+package org.apache.tuscany.sca.domain.search;
+
+import org.apache.lucene.document.Document;
+
+public interface ResultFactory<T extends Result> {
+	
+	String getType();
+	
+	String getName(Document document);
+	
+	T createResult(String name);
+	
+	T createResult(Document document);
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.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/ResultProcessor.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,10 @@
+package org.apache.tuscany.sca.domain.search;
+
+import org.apache.lucene.document.Document;
+import org.apache.lucene.search.Query;
+
+public interface ResultProcessor {
+	
+	Result process(Document document, Query query, Result result);
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.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/ArtifactDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -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 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();
-		
+
 	}
 
 }

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResult.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/ArtifactResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,25 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class ArtifactResult extends ResultImpl {
+
+	private static final long serialVersionUID = 7418036586148544103L;
+	
+	private String location;
+	
+	public ArtifactResult() {
+		// empty constructor
+	}
+
+	public ArtifactResult(String name) {
+		super(name);
+	}
+	
+	public void setLocation(String location) {
+		this.location = location;
+	}
+
+	public String getLocation() {
+		return this.location;
+	}
+	
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResultProcessor.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/ArtifactResultProcessor.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResultProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactResultProcessor.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,55 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.tuscany.sca.domain.search.Result;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+import org.apache.tuscany.sca.domain.search.ResultProcessor;
+
+import org.apache.lucene.document.Document;
+import org.apache.lucene.search.Query;
+
+public class ArtifactResultProcessor implements ResultProcessor {
+	
+	public Result process(Document document, Query query, Result result) {
+		
+		if (result instanceof ArtifactResult) {
+			String location = document.get(SearchFields.LOCATION_FIELD);
+			((ArtifactResult) result).setLocation(location);
+			
+		}
+		
+		return result;
+		
+	}
+	
+	public static class ArtifactResultFactory implements ResultFactory<ArtifactResult> {
+		
+		public ArtifactResultFactory() {
+			// empty constructor
+		}
+
+		public ArtifactResult createResult(String name) {
+			return new ArtifactResult(name);
+		}
+
+		public String getName(Document document) {
+			return document.get(SearchFields.ARTIFACT_FIELD);
+		}
+
+		public String getType() {
+			return SearchFields.ARTIFACT_FIELD;
+		}
+
+		public ArtifactResult createResult(Document document) {
+			String name = getName(document);
+			
+			if (name != null) {
+				return createResult(name);
+			}
+			
+			return null;
+			
+		}
+		
+	}
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingDocumentProcessor.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/BindingDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -4,11 +4,10 @@
 import org.apache.tuscany.sca.assembly.Binding;
 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 BindingDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document document, String parent) {
 
 		if (object instanceof Binding) {
@@ -55,5 +54,5 @@
 		throw new IllegalArgumentException();
 
 	}
-
+	
 }

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResult.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/BindingResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,11 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class BindingResult extends ResultImpl {
+
+	private static final long serialVersionUID = 8393058630593239377L;
+
+	public BindingResult(String name) {
+		super(name);
+	}
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResultFactory.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/BindingResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/BindingResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,36 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.lucene.document.Document;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+
+public class BindingResultFactory implements ResultFactory<BindingResult> {
+
+	public BindingResultFactory() {
+		// empty constructor
+	}
+
+	public BindingResult createResult(String name) {
+		return new BindingResult(name);
+	}
+
+	public String getType() {
+		return SearchFields.BINDING_FIELD;
+	}
+
+	public String getName(Document document) {
+		return document.get(getType());
+	}
+
+	public BindingResult createResult(Document document) {
+		String name = getName(document);
+		
+		if (name != null) {
+			return createResult(name);
+		}
+		
+		return null;
+		
+		
+	}
+	
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.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/ComponentDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -7,13 +7,13 @@
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.domain.search.DocumentMap;
 import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-import org.apache.tuscany.sca.domain.search.DocumentProcessorsMap;
+import org.apache.tuscany.sca.domain.search.Result;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
 
 public class ComponentDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document doc, String parent) {
 
 		if (object instanceof Component) {
@@ -33,7 +33,7 @@
 					doc = documents.get(uri);
 				}
 				
-				parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPONENT_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
+				parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPONENT_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri + DomainPathAnalyzer.URI_SEPARATOR + component.getName();
 
 				doc.add(new Field(SearchFields.COMPONENT_FIELD, uri,
 						Field.Store.YES, Field.Index.ANALYZED));
@@ -81,10 +81,10 @@
 				}
 
 				for (ComponentReference reference : component.getReferences()) {
-					Document serviceDoc = documents.get(uri + ':'
+					Document referenceDoc = documents.get(uri + ':'
 							+ reference.getName());
 
-					serviceDoc.add(new Field(SearchFields.REFERENCE_NAME_FIELD,
+					referenceDoc.add(new Field(SearchFields.REFERENCE_NAME_FIELD,
 							reference.getName(), Field.Store.YES,
 							Field.Index.ANALYZED));
 
@@ -96,7 +96,7 @@
 						for (Operation operation : interfaceContract
 								.getInterface().getOperations()) {
 
-							serviceDoc.add(new Field(
+							referenceDoc.add(new Field(
 									SearchFields.REFERENCE_INTERFACE_FIELD,
 									operation.getName(), Field.Store.YES,
 									Field.Index.ANALYZED));
@@ -106,7 +106,7 @@
 						for (Operation operation : interfaceContract
 								.getCallbackInterface().getOperations()) {
 
-							serviceDoc
+							referenceDoc
 									.add(new Field(
 											SearchFields.REFERENCE_INTERFACE_CALLBACK_FIELD,
 											operation.getName(),
@@ -117,26 +117,26 @@
 
 					}
 
-					serviceDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
+					referenceDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
 							Field.Store.YES, Field.Index.ANALYZED));
 
 				}
 
 			}
 
-			Document implementationDoc = processors.process(processors,
+			Document implementationDoc = parentProcessor.process(parentProcessor,
 					documents, component.getImplementation(), null, parent);
 
 			if (uri != null && implementationDoc != null) {
 
-				implementationDoc.add(new Field(SearchFields.IMPLEMENTS_FIELD,
+				implementationDoc.add(new Field(SearchFields.PARENT_FIELD,
 						uri, Field.Store.YES, Field.Index.ANALYZED));
-
+				
 			}
 
 			for (ComponentProperty componentProperty : component
 					.getProperties()) {
-				Document propertyDoc = processors.process(processors,
+				Document propertyDoc = parentProcessor.process(parentProcessor,
 						documents, componentProperty.getProperty(), null, parent);
 
 				if (uri != null) {
@@ -176,4 +176,17 @@
 
 	}
 
+	public Result processDocument(org.apache.lucene.document.Document document, Result result) {
+		String componentName = document.get(SearchFields.COMPONENT_FIELD);
+		
+		if (componentName != null) {
+			
+			
+			
+		}
+		
+		return null;
+		
+	}
+
 }

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResult.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/ComponentResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,16 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+
+public class ComponentResult extends ResultImpl {
+
+	private static final long serialVersionUID = -2171168107785499573L;
+	
+	public ComponentResult() {
+		// empty constructor
+	}
+	
+	public ComponentResult(String name) {
+		super(name);
+	}
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResultFactory.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/ComponentResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,35 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.lucene.document.Document;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+
+public class ComponentResultFactory implements ResultFactory<ComponentResult> {
+
+	public ComponentResultFactory() {
+		// empty constructor
+	}
+	
+	public ComponentResult createResult(String name) {
+		return new ComponentResult(name);
+	}
+
+	public String getName(Document document) {
+		return document.get(getType());
+	}
+
+	public String getType() {
+		return SearchFields.COMPONENT_FIELD;
+	}
+
+	public ComponentResult createResult(Document document) {
+		String name = getName(document);
+		
+		if (name != null) {
+			return createResult(name);
+		}
+		
+		return null;
+		
+	}
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.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/ComponentTypeDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -7,13 +7,12 @@
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.domain.search.DocumentMap;
 import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-import org.apache.tuscany.sca.domain.search.DocumentProcessorsMap;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
 
 public class ComponentTypeDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document doc, String parent) {
 
 		if (object instanceof ComponentType) {
@@ -131,7 +130,7 @@
 			}
 
 			for (Property property : componentType.getProperties()) {
-				Document propertyDoc = processors.process(processors,
+				Document propertyDoc = parentProcessor.process(parentProcessor,
 						documents, property, null, parent);
 
 				if (uri != null) {

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResult.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/ComponentTypeResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,15 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class ComponentTypeResult extends ResultImpl {
+
+	private static final long serialVersionUID = 3767144511814116732L;
+	
+	public ComponentTypeResult() {
+		// empty constructor
+	}
+
+	public ComponentTypeResult(String name) {
+		super(name);
+	}
+	
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResultFactory.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/ComponentTypeResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,36 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.lucene.document.Document;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+
+public class ComponentTypeResultFactory implements
+		ResultFactory<ComponentTypeResult> {
+
+	public ComponentTypeResultFactory() {
+		// empty constructor
+	}
+
+	public String getName(Document document) {
+		return document.get(getType());
+	}
+
+	public String getType() {
+		return SearchFields.COMPONENT_TYPE_FIELD;
+	}
+
+	public ComponentTypeResult createResult(String name) {
+		return new ComponentTypeResult(name);
+	}
+
+	public ComponentTypeResult createResult(Document document) {
+		String name = getName(document);
+
+		if (name != null) {
+			return createResult(name);
+		}
+
+		return null;
+
+	}
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.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/CompositeDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -7,11 +7,10 @@
 import org.apache.tuscany.sca.assembly.Composite;
 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 CompositeDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document doc, String parent) {
 
 		if (object instanceof Composite) {
@@ -25,15 +24,16 @@
 				uri = null;
 				
 			} else if (doc == null) {
-				doc = documents.get(uri);	
-				parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPOSITE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
-				
+				doc = documents.get(uri);
+			}
+			
+			if (uri != null) {
+				parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPOSITE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + composite.getURI() + DomainPathAnalyzer.URI_SEPARATOR + composite.getName();
 			}
 			
 			for (Component component : composite.getComponents()) {
 				
-				
-				Document componentDoc = processors.process(processors,
+				Document componentDoc = parentProcessor.process(parentProcessor,
 						documents, component, null, parent);
 
 				if (uri != null) {
@@ -47,13 +47,13 @@
 
 			if (uri != null) {
 
-				doc.add(new Field(SearchFields.COMPOSITE_FIELD, uri.toString(),
+				doc.add(new Field(SearchFields.COMPOSITE_FIELD, uri,
 						Field.Store.YES, Field.Index.ANALYZED));
 
 			}
 
 			for (Composite include : composite.getIncludes()) {
-				Document compositeDoc = processors.process(processors,
+				Document compositeDoc = parentProcessor.process(parentProcessor,
 						documents, include, null, parent);
 
 				if (uri != null) {
@@ -66,7 +66,7 @@
 			}
 
 			for (Component component : composite.getComponents()) {
-				Document componentDoc = processors.process(processors,
+				Document componentDoc = parentProcessor.process(parentProcessor,
 						documents, component, null, parent);
 
 				if (uri != null) {
@@ -102,5 +102,5 @@
 		throw new IllegalArgumentException();
 			
 	}
-
+	
 }

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResult.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/CompositeResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,15 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class CompositeResult extends ResultImpl {
+
+	private static final long serialVersionUID = -4651241874173649592L;
+	
+	public CompositeResult() {
+		// empty constructor
+	}
+	
+	public CompositeResult(String name) {
+		super(name);
+	}
+
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResultFactory.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/CompositeResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,35 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.lucene.document.Document;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+
+public class CompositeResultFactory implements ResultFactory<CompositeResult> {
+
+	public CompositeResultFactory() {
+		// empty constructor
+	}
+
+	public CompositeResult createResult(String name) {
+		return new CompositeResult(name);
+	}
+
+	public String getName(Document document) {
+		return document.get(getType());
+	}
+
+	public String getType() {
+		return SearchFields.COMPOSITE_FIELD;
+	}
+
+	public CompositeResult createResult(Document document) {
+		String name = getName(document);
+
+		if (name != null) {
+			return createResult(name);
+		}
+
+		return null;
+
+	}
+
+}

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=791203&r1=791202&r2=791203&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 Sun Jul  5 07:04:56 2009
@@ -7,31 +7,35 @@
 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.DocumentProcessorsMap;
+import org.apache.tuscany.sca.domain.search.Result;
 
 public class ContributionDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document doc, String parent) {
 
 		if (object instanceof Contribution) {
 			Contribution contribution = (Contribution) object;
 			String uri = contribution.getURI();
-			
+
 			if (uri != null) {
-				
+
 				if (uri.length() == 0) {
 					uri = null;
-					
+
 				} else {
-					parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.CONTRIBUTION_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
+					
+					parent += DomainPathAnalyzer.PATH_SEPARATOR
+							+ SearchFields.CONTRIBUTION_FIELD
+							+ DomainPathAnalyzer.TYPE_SEPARATOR + uri;
+					
 				}
-				
+
 			}
-			
+
 			if (uri != null && doc == null) {
 				doc = documents.get(uri);
-				
+
 				doc.add(new Field(SearchFields.CONTRIBUTION_FIELD, uri,
 						Field.Store.YES, Field.Index.ANALYZED));
 
@@ -40,52 +44,56 @@
 			}
 
 			for (Artifact artifact : contribution.getArtifacts()) {
-				Document artifactDoc = processors.process(processors,
+				Document artifactDoc = parentProcessor.process(parentProcessor,
 						documents, artifact, null, parent);
 
 				if (uri != null) {
 
-					artifactDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
-							Field.Store.YES, Field.Index.ANALYZED));
+					artifactDoc.add(new Field(SearchFields.PARENT_FIELD,
+							parent, Field.Store.YES, Field.Index.ANALYZED));
 
 				}
 
 			}
 
-//			for (Import imprt : contribution.getImports()) {
-//				Document importDoc = processors.process(processors, documents,
-//						imprt, null);
-//
-//				if (uri != null) {
-//
-//					importDoc.add(new Field(SearchFields.IMPORTEDBY_FIELD, uri,
-//							Field.Store.YES, Field.Index.ANALYZED));
-//
-//				}
-//
-//			}
-//
-//			for (Export export : contribution.getExports()) {
-//				Document exportDoc = processors.process(processors, documents,
-//						export, null);
-//
-//				if (uri != null) {
-//
-//					exportDoc.add(new Field(SearchFields.EXPORTEDBY_FIELD, uri,
-//							Field.Store.YES, Field.Index.ANALYZED));
-//
-//				}
-//
-//			}
-
-			for (Composite composite : contribution.getDeployables()) {
-				Document compositeDoc = processors.process(processors,
-						documents, composite, null, parent);
+			// for (Import imprt : contribution.getImports()) {
+			// Document importDoc = processors.process(processors, documents,
+			// imprt, null);
+			//
+			// if (uri != null) {
+			//
+			// importDoc.add(new Field(SearchFields.IMPORTEDBY_FIELD, uri,
+			// Field.Store.YES, Field.Index.ANALYZED));
+			//
+			// }
+			//
+			// }
+			//
+			// for (Export export : contribution.getExports()) {
+			// Document exportDoc = processors.process(processors, documents,
+			// export, null);
+			//
+			// if (uri != null) {
+			//
+			// exportDoc.add(new Field(SearchFields.EXPORTEDBY_FIELD, uri,
+			// Field.Store.YES, Field.Index.ANALYZED));
+			//
+			// }
+			//
+			// }
+
+			if (!object.getClass().getSimpleName().contains("Workspace")) {
+
+				for (Composite composite : contribution.getDeployables()) {
+					Document compositeDoc = parentProcessor.process(parentProcessor,
+							documents, composite, null, parent);
 
-				if (uri != null) {
+					if (uri != null) {
+
+						compositeDoc.add(new Field(SearchFields.PARENT_FIELD,
+								parent, Field.Store.YES, Field.Index.ANALYZED));
 
-					compositeDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
-							Field.Store.YES, Field.Index.ANALYZED));
+					}
 
 				}
 
@@ -100,21 +108,42 @@
 	}
 
 	public Object getDocumentKey(Object object) {
-		
+
 		if (object instanceof Contribution) {
 			Contribution contribution = (Contribution) object;
 			String uri = contribution.getURI();
-			
+
 			if (uri != null && uri.length() == 0) {
 				return null;
 			}
-			
+
 			return uri;
-			
+
 		}
-		
+
 		throw new IllegalArgumentException();
-		
+
+	}
+
+	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/ContributionResult.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/ContributionResult.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResult.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResult.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,15 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class ContributionResult extends ArtifactResult {
+
+	private static final long serialVersionUID = 4508196828816188213L;
+	
+	public ContributionResult() {
+		// empty constructor
+	}
+	
+	public ContributionResult(String name) {
+		super(name);
+	}
+	
+}

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResultFactory.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/ContributionResultFactory.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResultFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ContributionResultFactory.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,36 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import org.apache.lucene.document.Document;
+import org.apache.tuscany.sca.domain.search.ResultFactory;
+
+public class ContributionResultFactory implements
+		ResultFactory<ContributionResult> {
+
+	public ContributionResultFactory() {
+		// empty constructor
+	}
+
+	public ContributionResult createResult(String name) {
+		return new ContributionResult(name);
+	}
+
+	public String getName(Document document) {
+		return document.get(SearchFields.CONTRIBUTION_FIELD);
+	}
+
+	public String getType() {
+		return SearchFields.CONTRIBUTION_FIELD;
+	}
+
+	public ContributionResult createResult(Document document) {
+		String name = getName(document);
+
+		if (name != null) {
+			return createResult(name);
+		}
+
+		return null;
+
+	}
+
+}

Added: 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=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,63 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.apache.lucene.document.Field;
+import org.apache.tuscany.sca.domain.search.DocumentMap;
+import org.apache.tuscany.sca.domain.search.DocumentProcessor;
+
+public class DefaultFileDocumentProcessor implements DocumentProcessor {
+
+	public Document process(DocumentProcessor parentProcessor,
+			DocumentMap documents, Object object, Document doc, String parent) {
+
+		if (object instanceof FileContent) {
+			FileContent file = (FileContent) object;
+			
+			Reader reader;
+			try {
+				reader = new InputStreamReader(file.getInputStream());
+				
+				if (doc == null) {
+					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));
+				
+				return doc;
+				
+			} catch (IOException e) {
+				// ignore the file
+			}
+			
+		}
+		
+		return null;
+
+	}
+
+	public Object getDocumentKey(Object object) {
+
+		if (object instanceof File) {
+			File file = (File) object;
+			String path = file.getPath();
+
+			if (path != null && path.length() == 0) {
+				return null;
+			}
+
+			return path;
+
+		}
+
+		throw new IllegalArgumentException();
+
+	}
+
+}

Modified: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DirectoryDocumentProcessor.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/DirectoryDocumentProcessor.java?rev=791203&r1=791202&r2=791203&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DirectoryDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DirectoryDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -5,11 +5,10 @@
 import org.apache.lucene.document.Field;
 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 DirectoryDocumentProcessor implements DocumentProcessor {
 
-	public Document process(DocumentProcessorsMap processors,
+	public Document process(DocumentProcessor parentProcessor,
 			DocumentMap documents, Object object, Document doc, String parent) {
 
 		if (object instanceof File) {
@@ -25,7 +24,7 @@
 				File[] files = file.listFiles();
 				
 				for (File childFile : files) {
-					Document fileDoc = processors.process(processors, documents, childFile, null, parent);
+					Document fileDoc = parentProcessor.process(parentProcessor, documents, childFile, null, parent);
 					
 					fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
 							Field.Store.YES, Field.Index.ANALYZED));

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=791203&r1=791202&r2=791203&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 Sun Jul  5 07:04:56 2009
@@ -3,29 +3,52 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Hashtable;
+import java.util.LinkedList;
 
 import org.apache.lucene.document.Fieldable;
 
 public class Document {
 
 	private Hashtable<String, Hashtable<String, Fieldable>> fieldablesTable = new Hashtable<String, Hashtable<String, Fieldable>>();
+	
+	private Hashtable<String, LinkedList<Fieldable>> readerMap = new Hashtable<String, LinkedList<Fieldable>>();;
 
 	public Document() {
 		// empty constructor
 	}
 
 	public void add(Fieldable fieldable) {
-		Hashtable<String, Fieldable> fieldables = this.fieldablesTable
-				.get(fieldable.name());
+		
+		String strValue = fieldable.stringValue();
+		
+		if (strValue != null) {
+			
+			Hashtable<String, Fieldable> fieldables = this.fieldablesTable
+			.get(fieldable.name());
+			
+			if (fieldables == null) {
+				fieldables = new Hashtable<String, Fieldable>();
+				this.fieldablesTable.put(fieldable.name(), fieldables);
 
-		if (fieldables == null) {
-			fieldables = new Hashtable<String, Fieldable>();
-			this.fieldablesTable.put(fieldable.name(), fieldables);
+			}
+			
+			fieldables.put(strValue, fieldable);
+			
+		} else {
+			
+			LinkedList<Fieldable> fieldables = this.readerMap
+			.get(fieldable.name());
+			
+			if (fieldables == null) {
+				fieldables = new LinkedList<Fieldable>();
+				this.readerMap.put(fieldable.name(), fieldables);
 
+			}
+			
+			fieldables.add(fieldable);
+			
 		}
 
-		fieldables.put(fieldable.stringValue(), fieldable);
-
 	}
 	
 	public org.apache.lucene.document.Document createLuceneDocument() {
@@ -39,6 +62,14 @@
 			
 		}
 		
+		for (LinkedList<Fieldable> fieldables : this.readerMap.values()) {
+			
+			for (Fieldable fieldable : fieldables) {
+				doc.add(fieldable);
+			}
+			
+		}
+		
 		return doc;
 		
 	}
@@ -50,7 +81,7 @@
 			return fieldables.keySet();
 		}
 		
-		return Collections.EMPTY_LIST;
+		return Collections.emptyList();
 			
 	}
 	

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=791203&r1=791202&r2=791203&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 Sun Jul  5 07:04:56 2009
@@ -14,6 +14,8 @@
 
 	final public static char TYPE_SEPARATOR = '\u0002';
 
+	final public static char URI_SEPARATOR = '\u0003';
+
 	static class DomainPathTokenizer extends Tokenizer {
 
 		private int offset = 0, bufferIndex = 0, dataLen = 0;
@@ -21,25 +23,28 @@
 		private static final int IO_BUFFER_SIZE = 4096;
 		private final char[] ioBuffer = new char[IO_BUFFER_SIZE];
 		private boolean typeCharFound = false;
+		private boolean uriCharFound = false;
 
 		public DomainPathTokenizer(Reader reader) {
 			super(reader);
 		}
-		
+
 		@Override
 		public void reset() throws IOException {
 			super.reset();
-			
+
 			typeCharFound = false;
-			
+			uriCharFound = false;
+
 		}
-		
+
 		@Override
 		public void reset(Reader input) throws IOException {
 			super.reset(input);
-			
+
+			uriCharFound = false;
 			typeCharFound = false;
-			
+
 		}
 
 		@Override
@@ -52,7 +57,7 @@
 
 			boolean lowercaseCharFound = false;
 			boolean digitFound = false;
-			
+
 			while (true) {
 
 				if (bufferIndex >= dataLen) {
@@ -94,15 +99,17 @@
 					} else {
 						bufferIndex--;
 					}
-					
+
 					typeCharFound = false;
+					uriCharFound = false;
 
-				} else if (c == TYPE_SEPARATOR && !typeCharFound) {
+				} else if (c == TYPE_SEPARATOR && !typeCharFound
+						|| c == URI_SEPARATOR && !uriCharFound) {
 					length = 0;
 					breakChar = false;
 					lowercaseCharFound = false;
 					digitFound = false;
-					
+
 				} else {
 
 					if (Character.isDigit(c)) {
@@ -154,12 +161,18 @@
 
 					if (c == TYPE_SEPARATOR && !typeCharFound) {
 						typeCharFound = true;
-						
+
+					} else if (c == URI_SEPARATOR && !uriCharFound) {
+						typeCharFound = true;
+
 					} else {
-						buffer[length++] = Character.toLowerCase(c); // buffer it, normalized
+						buffer[length++] = Character.toLowerCase(c); // buffer
+																		// it,
+																		// normalized
 					}
-					
-					if (length == MAX_WORD_LEN || (breakChar && length > 0)) // buffer overflow!
+
+					if (length == MAX_WORD_LEN || (breakChar && length > 0)) // buffer
+																				// overflow!
 						break;
 
 				} else if (length > 0) {// at non-Letter w/ chars

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=791203&r1=791202&r2=791203&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 Sun Jul  5 07:04:56 2009
@@ -1,5 +1,7 @@
 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;
@@ -21,6 +23,7 @@
 		addDocumentProcessor(Binding.class, new BindingDocumentProcessor());
 		addDocumentProcessor(Component.class, new ComponentDocumentProcessor());
 		addDocumentProcessor(Composite.class, new CompositeDocumentProcessor());
+		addDocumentProcessor(File.class, new DomainSearchFileDocumentProcessor());
 		
 	}
 

Added: tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFileDocumentProcessor.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/DomainSearchFileDocumentProcessor.java?rev=791203&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFileDocumentProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DomainSearchFileDocumentProcessor.java Sun Jul  5 07:04:56 2009
@@ -0,0 +1,13 @@
+package org.apache.tuscany.sca.domain.search.impl;
+
+public class DomainSearchFileDocumentProcessor extends FileDocumentProcessor {
+
+	private static final long serialVersionUID = -2725616937948969598L;
+
+	public DomainSearchFileDocumentProcessor() {
+		add(new ZipDocumentProcessor());
+		add(new DefaultFileDocumentProcessor());
+		
+	}
+	
+}