From 7d544d6b11dc6494170c293e6897ed6d72612d06 Mon Sep 17 00:00:00 2001 From: adrianocrestani Date: Sun, 5 Jul 2009 07:04:56 +0000 Subject: applying patch tuscany_2552_phillipe_ramalho_07_04_2009.patch.txt from TUSCANY-2552 git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@791203 13f79535-47bb-0310-9956-ffa450edef68 --- .../manager/impl/ContributionCollectionImpl.java | 10 +- .../impl/DeployedCompositeCollectionImpl.java | 5 +- .../impl/NodeProcessCollectionFacadeImpl.java | 1 + .../tuscany/sca/domain/manager/impl/Searcher.java | 297 +++++++++++++++++++++ .../sca/domain/manager/impl/WorkspaceReader.java | 9 + 5 files changed, 317 insertions(+), 5 deletions(-) create mode 100644 branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java create mode 100644 branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java (limited to 'branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache') diff --git a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java index 0b304a0854..6d13e38937 100644 --- a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java +++ b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java @@ -97,8 +97,8 @@ import org.w3c.dom.Document; * @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 @@ public class ContributionCollectionImpl implements ItemCollection, LocalItemColl * * @return */ - private Workspace readWorkspace() { + Workspace readWorkspace() { String rootDirectory = domainManagerConfiguration.getRootDirectory(); Workspace workspace; @@ -652,5 +652,9 @@ public class ContributionCollectionImpl implements ItemCollection, LocalItemColl } return contributions; } + + public Workspace getWorkspace() { + return readContributions(readWorkspace()); + } } diff --git a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java index e95a0cc585..a8cc6efdd1 100644 --- a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java +++ b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java @@ -59,6 +59,7 @@ 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.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import org.osoa.sca.ServiceRuntimeException; @@ -115,7 +116,7 @@ public class DeployedCompositeCollectionImpl implements ItemCollection, LocalIte */ @Init public void initialize() throws ParserConfigurationException { - + // Create factories ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints(); modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); @@ -133,7 +134,7 @@ public class DeployedCompositeCollectionImpl implements ItemCollection, LocalIte public Entry[] getAll() { logger.fine("getAll"); - + // Return all the composites in the domain composite List> entries = new ArrayList>(); Composite compositeCollection = readCompositeCollection(); diff --git a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java index d68cfa3786..04c807cba8 100644 --- a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java +++ b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/NodeProcessCollectionFacadeImpl.java @@ -39,6 +39,7 @@ 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.osoa.sca.ServiceRuntimeException; import org.osoa.sca.annotations.Init; import org.osoa.sca.annotations.Reference; diff --git a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java new file mode 100644 index 0000000000..5a2873b35f --- /dev/null +++ b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java @@ -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 = "
"; + + 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("

"); + + } + + private static void endIndentation(StringWriter writer) { + writer.write("

"); + } + + 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(), "", ""); + + 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 set = new HashSet(); + // 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 set = new HashSet(); + 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(""); + StringEscapeUtils.escapeHtml(writer, content); + writer.write(""); + endIndentation(writer); + writer.write(HTML_NEW_LINE); + + } else { + + writer.write(result.getName()); + Collection 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(""); + StringEscapeUtils.escapeHtml(writer, content); + writer.write(""); + 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[] 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[] query(String queryString) { + System.out.println("query"); + return null; + } + +} diff --git a/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java new file mode 100644 index 0000000000..d4cb1d21af --- /dev/null +++ b/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java @@ -0,0 +1,9 @@ +package org.apache.tuscany.sca.domain.manager.impl; + +import org.apache.tuscany.sca.workspace.Workspace; + +public interface WorkspaceReader { + + Workspace getWorkspace(); + +} -- cgit v1.2.3