You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2009/08/10 03:40:04 UTC
svn commit: r802637 [1/2] - in /tuscany/branches/sca-java-1.x/modules:
domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/
domain-manager/src/main/resources/ domain-manager/src/main/resources/icons/
domain-search/src/main/java/org/...
Author: adrianocrestani
Date: Mon Aug 10 01:40:02 2009
New Revision: 802637
URL: http://svn.apache.org/viewvc?rev=802637&view=rev
Log:
applying tuscany_2552_domain_search_phillipe_ramalho_08_08_2009.patch and tuscany_2552_domain_manager_phillipe_ramalho_08_08_2009.patch submitted to TUSCANY-2552
Added:
tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionsReader.java
- copied, changed from r791205, 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/java/org/apache/tuscany/sca/domain/manager/impl/Searcher.java
tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/artifact.png (with props)
tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/component.png (with props)
tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/composite.png (with props)
tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/DefaultFileContent.java
tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/PriorityFieldListResultFactory.java
- copied, changed from r791205, 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/WrappedFileContent.java
Removed:
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-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/DirectoryDocumentProcessor.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/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/ServiceResult.java
Modified:
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/DeployableCompositeCollectionImpl.java
tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.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/search-gadget.html
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/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/ArtifactDocumentProcessor.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/DefaultFileDocumentProcessor.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/DomainSearchFormatter.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/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/FileContentResultProcessor.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/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/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/SearchFields.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
tuscany/branches/sca-java-1.x/modules/domain-search/src/test/java/org/apache/tuscany/sca/domain/search/impl/DomainPathAnalyzerTestCase.java
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=802637&r1=802636&r2=802637&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 Mon Aug 10 01:40:02 2009
@@ -74,6 +74,7 @@
import org.apache.tuscany.sca.data.collection.LocalItemCollection;
import org.apache.tuscany.sca.data.collection.NotFoundException;
import org.apache.tuscany.sca.domain.manager.impl.ContributionCollectionImpl.Cache.ContributionCache;
+import org.apache.tuscany.sca.domain.search.DomainSearch;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.MonitorFactory;
import org.apache.tuscany.sca.monitor.Problem;
@@ -97,8 +98,8 @@
* @version $Rev$ $Date$
*/
@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class, WorkspaceReader.class})
-public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection, WorkspaceReader {
+@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
+public class ContributionCollectionImpl implements ItemCollection, LocalItemCollection {
private static final Logger logger = Logger.getLogger(ContributionCollectionImpl.class.getName());
@@ -111,6 +112,9 @@
@Reference
public DomainManagerConfiguration domainManagerConfiguration;
+ @Reference
+ public DomainSearch domainSearch;
+
private Monitor monitor;
private ContributionFactory contributionFactory;
private WorkspaceFactory workspaceFactory;
@@ -256,6 +260,7 @@
// Write the workspace
writeWorkspace(workspace);
return;
+
}
}
throw new NotFoundException(key);
@@ -479,7 +484,6 @@
private static String title(String contributionURI) {
return contributionURI;
}
-
/**
* Read the workspace.
@@ -652,9 +656,5 @@
}
return contributions;
}
-
- public Workspace getWorkspace() {
- return readContributions(readWorkspace());
- }
}
Copied: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionsReader.java (from r791205, 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/ContributionsReader.java?p2=tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionsReader.java&p1=tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java&r1=791205&r2=802637&rev=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/WorkspaceReader.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionsReader.java Mon Aug 10 01:40:02 2009
@@ -1,9 +1,9 @@
package org.apache.tuscany.sca.domain.manager.impl;
-import org.apache.tuscany.sca.workspace.Workspace;
+import org.apache.tuscany.sca.contribution.Contribution;
-public interface WorkspaceReader {
+public interface ContributionsReader {
- Workspace getWorkspace();
+ Contribution[] readContributions();
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.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/DeployableCompositeCollectionImpl.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java Mon Aug 10 01:40:02 2009
@@ -33,6 +33,7 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
@@ -54,10 +55,8 @@
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.data.collection.Entry;
@@ -78,331 +77,405 @@
import org.osoa.sca.annotations.Service;
/**
- * Implementation of a deployable composite collection service.
- *
+ * Implementation of a deployable composite collection service.
+ *
* @version $Rev$ $Date$
*/
@Scope("COMPOSITE")
-@Service(interfaces={ItemCollection.class, LocalItemCollection.class})
-public class DeployableCompositeCollectionImpl implements ItemCollection, LocalItemCollection {
-
- private static final Logger logger = Logger.getLogger(DeployableCompositeCollectionImpl.class.getName());
-
- @Reference
- public LocalItemCollection contributionCollection;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ModelFactoryExtensionPoint modelFactories;
- private ModelResolverExtensionPoint modelResolvers;
- private URLArtifactProcessor<Contribution> contributionProcessor;
- private XMLOutputFactory outputFactory;
- private ContributionDependencyBuilder contributionDependencyBuilder;
- private Monitor monitor;
-
- /**
- * Cache contribution models.
- */
- static class Cache {
- static class ContributionCache {
- private Contribution contribution;
- private long contributionLastModified;
- }
- private Map<URL, ContributionCache> contributions = new HashMap<URL, ContributionCache>();
- }
-
- private Cache cache = new Cache();
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws ParserConfigurationException {
-
- ExtensionPointRegistry extensionPoints = domainManagerConfiguration.getExtensionPoints();
-
- // Create a monitor
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
-
- // Get model factories
- modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-
- // Get and initialize artifact processors
- StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
-
- URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors, monitor);
-
- // Create contribution processor
- modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
- contributionProcessor = new ContributionContentProcessor(extensionPoints, monitor);
-
- // Create contribution and composite builders
- contributionDependencyBuilder = new ContributionDependencyBuilderImpl(monitor);
- }
-
- public Entry<String, Item>[] getAll() {
- logger.fine("getAll");
-
- // Return all the deployable composites in the contributions
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-
- // Get the list of contributions in the workspace
- Entry<String, Item>[] contributionEntries = contributionCollection.getAll();
-
- // Read contribution metadata
- for (Entry<String, Item> contributionEntry: contributionEntries) {
- Item contributionItem = contributionEntry.getData();
- Contribution contribution;
- try {
- contribution = contribution(contributionEntry.getKey(), contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- continue;
- }
-
- // Create entries for the deployable composites
- for (Composite deployable: contribution.getDeployables()) {
- entries.add(entry(contribution, deployable));
- }
-
- }
- return entries.toArray(new Entry[entries.size()]);
- }
-
- public Item get(String key) throws NotFoundException {
- logger.fine("get " + key);
-
- // Get the specified contribution info
- String contributionURI = contributionURI(key);
- Item contributionItem = contributionCollection.get(contributionURI);
-
- // Read the contribution
- Contribution contribution;
- try {
- contribution = contribution(contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- throw new NotFoundException(key);
- }
-
- // Find the specified deployable composite
- QName qname = compositeQName(key);
- for (Composite deployable: contribution.getDeployables()) {
- if (qname.equals(deployable.getName())) {
- // find the deployable composite
- deployable = contribution.getModelResolver().resolveModel(Composite.class, deployable);
-
- if (deployable.isUnresolved()) {
- throw new NotFoundException(key);
- }
-
- // Return an item describing the deployable composite
- return item(contribution, deployable);
- }
- }
-
- throw new NotFoundException(key);
- }
-
- public String post(String key, Item item) {
- throw new UnsupportedOperationException();
- }
-
- public void put(String key, Item item) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public void delete(String key) throws NotFoundException {
- throw new UnsupportedOperationException();
- }
-
- public Entry<String, Item>[] query(String queryString) {
- logger.fine("query " + queryString);
-
- if (queryString.startsWith("contribution=")) {
-
- // Return all the deployable composites in the specified
- // contribution
- List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
-
- // Get the specified contribution info
- String contributionURI = queryString.substring(queryString.indexOf('=') + 1);
- Item contributionItem;
- try {
- contributionItem = contributionCollection.get(contributionURI);
- } catch (NotFoundException e) {
- return entries.toArray(new Entry[entries.size()]);
- }
-
- // Read the contribution
- Contribution contribution;
- try {
- contribution = contribution(contributionURI, contributionItem.getAlternate());
- } catch (ContributionReadException e) {
- return entries.toArray(new Entry[entries.size()]);
- }
-
- // Create entries for the deployable composites
- for (Composite deployable: contribution.getDeployables()) {
- entries.add(entry(contribution, deployable));
- }
-
- return entries.toArray(new Entry[entries.size()]);
-
- } else {
- throw new UnsupportedOperationException();
- }
- }
-
- /**
- * Returns the contribution with the given URI.
- *
- * @param contributionURI
- * @param contributionLocation
- * @return
- * @throws NotFoundException
- */
- private Contribution contribution(String contributionURI, String contributionLocation) throws ContributionReadException {
- try {
- URI uri = URI.create(contributionURI);
- URL location = locationURL(contributionLocation);
-
- // Get contribution from cache
- ContributionCache contributionCache = cache.contributions.get(location);
- long lastModified = lastModified(location);
- if (contributionCache != null) {
- if (contributionCache.contributionLastModified == lastModified) {
- return contributionCache.contribution;
- }
-
- // Reset contribution cache
- cache.contributions.remove(location);
- }
-
- Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
-
- // TODO - analyse dependencies here?
-
- //contributionProcessor.resolve(contribution, new DefaultModelResolver());
-
- // Cache contribution
- contributionCache = new ContributionCache();
- contributionCache.contribution = contribution;
- contributionCache.contributionLastModified = lastModified;
- cache.contributions.put(location, contributionCache);
-
- return contribution;
-
- } catch (ContributionReadException e) {
- throw e;
- } catch (MalformedURLException e) {
- throw new ContributionReadException(e);
- // } catch (ContributionResolveException e) {
- // throw new ContributionReadException(e);
- } catch (Throwable e) {
- throw new ContributionReadException(e);
- }
- }
-
- /**
- * Returns the entry contents describing a composite.
- *
- * @param composite
- * @return
- */
- private static String content(Composite composite) {
- StringBuffer sb = new StringBuffer();
- List<Component> components = composite.getComponents();
- for (int i = 0, n = components.size(); i < n; i++) {
- Component component = components.get(i);
- if (component.getImplementation() instanceof NodeImplementation) {
- List<ComponentService> services = component.getServices();
- if (!services.isEmpty()) {
- List<Binding> bindings = services.get(0).getBindings();
- if (!bindings.isEmpty()) {
-
- // List node URIs
- sb.append("Node URI: <span id=\"nodeURI\">");
- sb.append(component.getServices().get(0).getBindings().get(0).getURI());
- break;
- }
- }
- } else {
-
- // List component names
- if (sb.length() == 0) {
- sb.append("Components: <span id=\"components\">");
- } else {
- sb.append(" ");
- }
- sb.append(component.getName());
- }
- }
- if (sb.length() != 0) {
- sb.append("</span>");
- }
- return sb.toString();
- }
-
- /**
- * Returns the link to the resource related to a composite.
- *
- * @param composite
- * @return
- */
- private static String relatedLink(Composite composite) {
- for (Component component: composite.getComponents()) {
- if (component.getImplementation() instanceof NodeImplementation) {
- NodeImplementation nodeImplementation = (NodeImplementation)component.getImplementation();
- Composite deployable = nodeImplementation.getComposite();
- String contributionURI = deployable.getURI();
- QName qname = deployable.getName();
- String key = compositeKey(contributionURI, qname);
- return "/composite-source/" + key;
- }
- }
- return null;
- }
-
- /**
- * Returns an entry describing the given deployable.
- *
- * @param contribution
- * @param deployable
- * @return
- */
- private static Entry<String, Item> entry(Contribution contribution, Composite deployable) {
- Entry<String, Item> entry = new Entry<String, Item>();
- entry.setKey(DomainManagerUtil.compositeKey(contribution.getURI(), deployable.getName()));
- entry.setData(item(contribution, deployable));
- return entry;
- }
-
- /**
- * Returns an item describing the given deployable.
- *
- * @param contribution
- * @param deployable
- * @return
- */
- private static Item item(Contribution contribution, Composite deployable) {
- String contributionURI = contribution.getURI();
- String contributionLocation = contribution.getLocation();
- QName qname = deployable.getName();
- String deployableURI = deployable.getURI();
- Item item = new Item();
- item.setTitle(compositeTitle(contributionURI, qname));
- item.setContents(content(deployable));
- item.setLink(compositeSourceLink(contributionURI, qname));
- item.setAlternate(compositeAlternateLink(contributionLocation, deployableURI));
- item.setRelated(relatedLink(deployable));
- return item;
- }
+@Service(interfaces = { ItemCollection.class, LocalItemCollection.class, ContributionsReader.class })
+public class DeployableCompositeCollectionImpl implements ItemCollection,
+ LocalItemCollection, ContributionsReader {
+
+ private static final Logger logger = Logger
+ .getLogger(DeployableCompositeCollectionImpl.class.getName());
+
+ @Reference
+ public LocalItemCollection contributionCollection;
+
+ @Reference
+ public DomainManagerConfiguration domainManagerConfiguration;
+
+ private ModelFactoryExtensionPoint modelFactories;
+ private ModelResolverExtensionPoint modelResolvers;
+ private URLArtifactProcessor<Contribution> contributionProcessor;
+ private XMLOutputFactory outputFactory;
+ private ContributionDependencyBuilder contributionDependencyBuilder;
+ private Monitor monitor;
+
+ /**
+ * Cache contribution models.
+ */
+ static class Cache {
+ static class ContributionCache {
+ private Contribution contribution;
+ private long contributionLastModified;
+ }
+
+ private Map<URL, ContributionCache> contributions = new HashMap<URL, ContributionCache>();
+ }
+
+ private Cache cache = new Cache();
+
+ /**
+ * Initialize the component.
+ */
+ @Init
+ public void initialize() throws ParserConfigurationException {
+
+ ExtensionPointRegistry extensionPoints = domainManagerConfiguration
+ .getExtensionPoints();
+
+ // Create a monitor
+ UtilityExtensionPoint utilities = extensionPoints
+ .getExtensionPoint(UtilityExtensionPoint.class);
+ MonitorFactory monitorFactory = utilities
+ .getUtility(MonitorFactory.class);
+ monitor = monitorFactory.createMonitor();
+
+ // Get model factories
+ modelFactories = extensionPoints
+ .getExtensionPoint(ModelFactoryExtensionPoint.class);
+ XMLInputFactory inputFactory = modelFactories
+ .getFactory(XMLInputFactory.class);
+ outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+ outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES,
+ true);
+
+ // Get and initialize artifact processors
+ StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints
+ .getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(
+ staxProcessors, inputFactory, outputFactory, monitor);
+
+ URLArtifactProcessorExtensionPoint urlProcessors = extensionPoints
+ .getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(
+ urlProcessors, monitor);
+
+ // Create contribution processor
+ modelResolvers = extensionPoints
+ .getExtensionPoint(ModelResolverExtensionPoint.class);
+ contributionProcessor = new ContributionContentProcessor(
+ extensionPoints, monitor);
+
+ // Create contribution and composite builders
+ contributionDependencyBuilder = new ContributionDependencyBuilderImpl(
+ monitor);
+ }
+
+ public Entry<String, Item>[] getAll() {
+ logger.fine("getAll");
+
+ // Return all the deployable composites in the contributions
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+
+ // Get the list of contributions in the workspace
+ Entry<String, Item>[] contributionEntries = contributionCollection
+ .getAll();
+
+ // Read contribution metadata
+ for (Entry<String, Item> contributionEntry : contributionEntries) {
+ Item contributionItem = contributionEntry.getData();
+ Contribution contribution;
+ try {
+ contribution = contribution(contributionEntry.getKey(),
+ contributionItem.getAlternate());
+ } catch (ContributionReadException e) {
+ continue;
+ }
+
+ // Create entries for the deployable composites
+ for (Composite deployable : contribution.getDeployables()) {
+ entries.add(entry(contribution, deployable));
+ }
+
+ }
+ return entries.toArray(new Entry[entries.size()]);
+ }
+
+ public Contribution[] readContributions() {
+
+ // Get the list of contributions in the workspace
+ Entry<String, Item>[] contributionEntries = contributionCollection
+ .getAll();
+
+ LinkedList<Contribution> contributions = new LinkedList<Contribution>();
+
+ // Read contribution metadata
+ for (Entry<String, Item> contributionEntry : contributionEntries) {
+ Item contributionItem = contributionEntry.getData();
+ Contribution contribution;
+ try {
+ contribution = contribution(contributionEntry.getKey(),
+ contributionItem.getAlternate());
+
+ } catch (ContributionReadException e) {
+ continue;
+ }
+
+ LinkedList<Composite> resolvedComposites = new LinkedList<Composite>();
+
+ for (Composite composite : contribution.getDeployables()) {
+
+ // find the deployable composite
+ composite = contribution.getModelResolver().resolveModel(
+ Composite.class, composite);
+
+ resolvedComposites.add(composite);
+
+ }
+
+ contribution.getDeployables().clear();
+ contribution.getDeployables().addAll(resolvedComposites);
+
+ contributions.add(contribution);
+
+ }
+
+ return contributions.toArray(new Contribution[0]);
+
+ }
+
+ public Item get(String key) throws NotFoundException {
+ logger.fine("get " + key);
+
+ // Get the specified contribution info
+ String contributionURI = contributionURI(key);
+ Item contributionItem = contributionCollection.get(contributionURI);
+
+ // Read the contribution
+ Contribution contribution;
+ try {
+ contribution = contribution(contributionURI, contributionItem
+ .getAlternate());
+ } catch (ContributionReadException e) {
+ throw new NotFoundException(key);
+ }
+
+ // Find the specified deployable composite
+ QName qname = compositeQName(key);
+ for (Composite deployable : contribution.getDeployables()) {
+ if (qname.equals(deployable.getName())) {
+ // find the deployable composite
+ deployable = contribution.getModelResolver().resolveModel(
+ Composite.class, deployable);
+
+ if (deployable.isUnresolved()) {
+ throw new NotFoundException(key);
+ }
+
+ // Return an item describing the deployable composite
+ return item(contribution, deployable);
+ }
+ }
+
+ throw new NotFoundException(key);
+ }
+
+ public String post(String key, Item item) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void put(String key, Item item) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void delete(String key) throws NotFoundException {
+ throw new UnsupportedOperationException();
+ }
+
+ public Entry<String, Item>[] query(String queryString) {
+ logger.fine("query " + queryString);
+
+ if (queryString.startsWith("contribution=")) {
+
+ // Return all the deployable composites in the specified
+ // contribution
+ List<Entry<String, Item>> entries = new ArrayList<Entry<String, Item>>();
+
+ // Get the specified contribution info
+ String contributionURI = queryString.substring(queryString
+ .indexOf('=') + 1);
+ Item contributionItem;
+ try {
+ contributionItem = contributionCollection.get(contributionURI);
+ } catch (NotFoundException e) {
+ return entries.toArray(new Entry[entries.size()]);
+ }
+
+ // Read the contribution
+ Contribution contribution;
+ try {
+ contribution = contribution(contributionURI, contributionItem
+ .getAlternate());
+ } catch (ContributionReadException e) {
+ return entries.toArray(new Entry[entries.size()]);
+ }
+
+ // Create entries for the deployable composites
+ for (Composite deployable : contribution.getDeployables()) {
+ entries.add(entry(contribution, deployable));
+ }
+
+ return entries.toArray(new Entry[entries.size()]);
+
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ /**
+ * Returns the contribution with the given URI.
+ *
+ * @param contributionURI
+ * @param contributionLocation
+ * @return
+ * @throws NotFoundException
+ */
+ private Contribution contribution(String contributionURI,
+ String contributionLocation) throws ContributionReadException {
+ try {
+ URI uri = URI.create(contributionURI);
+ URL location = locationURL(contributionLocation);
+
+ // Get contribution from cache
+ ContributionCache contributionCache = cache.contributions
+ .get(location);
+ long lastModified = lastModified(location);
+ if (contributionCache != null) {
+ if (contributionCache.contributionLastModified == lastModified) {
+ return contributionCache.contribution;
+ }
+
+ // Reset contribution cache
+ cache.contributions.remove(location);
+ }
+
+ Contribution contribution = (Contribution) contributionProcessor
+ .read(null, uri, location);
+
+ // TODO - analyse dependencies here?
+
+ // contributionProcessor.resolve(contribution, new
+ // DefaultModelResolver());
+
+ // Cache contribution
+ contributionCache = new ContributionCache();
+ contributionCache.contribution = contribution;
+ contributionCache.contributionLastModified = lastModified;
+ cache.contributions.put(location, contributionCache);
+
+ return contribution;
+
+ } catch (ContributionReadException e) {
+ throw e;
+ } catch (MalformedURLException e) {
+ throw new ContributionReadException(e);
+ // } catch (ContributionResolveException e) {
+ // throw new ContributionReadException(e);
+ } catch (Throwable e) {
+ throw new ContributionReadException(e);
+ }
+ }
+
+ /**
+ * Returns the entry contents describing a composite.
+ *
+ * @param composite
+ * @return
+ */
+ private static String content(Composite composite) {
+ StringBuffer sb = new StringBuffer();
+ List<Component> components = composite.getComponents();
+ for (int i = 0, n = components.size(); i < n; i++) {
+ Component component = components.get(i);
+ if (component.getImplementation() instanceof NodeImplementation) {
+ List<ComponentService> services = component.getServices();
+ if (!services.isEmpty()) {
+ List<Binding> bindings = services.get(0).getBindings();
+ if (!bindings.isEmpty()) {
+
+ // List node URIs
+ sb.append("Node URI: <span id=\"nodeURI\">");
+ sb.append(component.getServices().get(0).getBindings()
+ .get(0).getURI());
+ break;
+ }
+ }
+ } else {
+
+ // List component names
+ if (sb.length() == 0) {
+ sb.append("Components: <span id=\"components\">");
+ } else {
+ sb.append(" ");
+ }
+ sb.append(component.getName());
+ }
+ }
+ if (sb.length() != 0) {
+ sb.append("</span>");
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Returns the link to the resource related to a composite.
+ *
+ * @param composite
+ * @return
+ */
+ private static String relatedLink(Composite composite) {
+ for (Component component : composite.getComponents()) {
+ if (component.getImplementation() instanceof NodeImplementation) {
+ NodeImplementation nodeImplementation = (NodeImplementation) component
+ .getImplementation();
+ Composite deployable = nodeImplementation.getComposite();
+ String contributionURI = deployable.getURI();
+ QName qname = deployable.getName();
+ String key = compositeKey(contributionURI, qname);
+ return "/composite-source/" + key;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns an entry describing the given deployable.
+ *
+ * @param contribution
+ * @param deployable
+ * @return
+ */
+ private static Entry<String, Item> entry(Contribution contribution,
+ Composite deployable) {
+ Entry<String, Item> entry = new Entry<String, Item>();
+ entry.setKey(DomainManagerUtil.compositeKey(contribution.getURI(),
+ deployable.getName()));
+ entry.setData(item(contribution, deployable));
+ return entry;
+ }
+
+ /**
+ * Returns an item describing the given deployable.
+ *
+ * @param contribution
+ * @param deployable
+ * @return
+ */
+ private static Item item(Contribution contribution, Composite deployable) {
+ String contributionURI = contribution.getURI();
+ String contributionLocation = contribution.getLocation();
+ QName qname = deployable.getName();
+ String deployableURI = deployable.getURI();
+ Item item = new Item();
+ item.setTitle(compositeTitle(contributionURI, qname));
+ item.setContents(content(deployable));
+ item.setLink(compositeSourceLink(contributionURI, qname));
+ item.setAlternate(compositeAlternateLink(contributionLocation,
+ deployableURI));
+ item.setRelated(relatedLink(deployable));
+ return item;
+ }
}
Modified: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.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/FileServiceImpl.java?rev=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/FileServiceImpl.java Mon Aug 10 01:40:02 2009
@@ -39,6 +39,9 @@
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.tuscany.sca.data.collection.Item;
+import org.apache.tuscany.sca.data.collection.LocalItemCollection;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
@@ -47,107 +50,161 @@
/**
* Implementation of a servlet component supporting file upload/download.
- *
+ *
* @version $Rev$ $Date$
*/
@Scope("COMPOSITE")
@Service(Servlet.class)
public class FileServiceImpl extends HttpServlet {
- private static final long serialVersionUID = -4560385595481971616L;
-
- private static final Logger logger = Logger.getLogger(FileServiceImpl.class.getName());
-
- @Property
- public String directoryName;
-
- @Reference
- public DomainManagerConfiguration domainManagerConfiguration;
-
- private ServletFileUpload upload;
-
- /**
- * Initialize the component.
- */
- @Init
- public void initialize() throws IOException {
- upload = new ServletFileUpload(new DiskFileItemFactory());
- }
-
- @Override
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
-
- // Upload files
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- try {
- for (FileItem item: (List<FileItem>)upload.parseRequest(request)) {
- if (!item.isFormField()) {
- File directory = new File(rootDirectory + "/" + directoryName);
- if (!directory.exists()) {
- directory.mkdirs();
- }
- logger.fine("post " + item.getName());
- item.write(new File(directory, item.getName()));
- }
- }
-
- // Redirect to the admin page
- response.sendRedirect("/ui/files");
- }
- catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- // Download a file
- String requestURI = URLDecoder.decode(request.getRequestURI(), "UTF-8");
- String path = requestURI.substring(request.getServletPath().length());
- if (path.startsWith("/")) {
- path = path.substring(1);
- }
- logger.fine("get " + path);
-
- try {
-
- // Analyze the given path
- URI uri = URI.create(path);
- String scheme = uri.getScheme();
- if (scheme == null) {
-
- // If no scheme is specified then the path identifies file
- // inside our directory
- String rootDirectory = domainManagerConfiguration.getRootDirectory();
- uri = new File(rootDirectory + "/" + directoryName, path).toURI();
-
- } else if (!scheme.equals("file")) {
-
- // If the scheme does not identify a local file, just redirect to the server
- // hosting the file
- response.sendRedirect(path);
- }
-
- // Read the file and write to response
- URLConnection connection = uri.toURL().openConnection();
- connection.setUseCaches(false);
- connection.connect();
- InputStream is = connection.getInputStream();
- ServletOutputStream os = response.getOutputStream();
- byte[] buffer = new byte[4096];
- for (;;) {
- int n = is.read(buffer);
- if (n < 0) {
- break;
- }
- os.write(buffer, 0, n);
- }
- is.close();
- os.flush();
-
- } catch (FileNotFoundException e) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
- }
-
+ private static final long serialVersionUID = -4560385595481971616L;
+
+ private static final Logger logger = Logger.getLogger(FileServiceImpl.class
+ .getName());
+
+ @Property
+ public String directoryName;
+
+ @Reference
+ public DomainManagerConfiguration domainManagerConfiguration;
+
+ @Reference
+ public LocalItemCollection contributionCollection;
+
+ private ServletFileUpload upload;
+
+ /**
+ * Initialize the component.
+ */
+ @Init
+ public void initialize() throws IOException {
+ upload = new ServletFileUpload(new DiskFileItemFactory());
+ }
+
+ @Override
+ public void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+
+ // Upload files
+ String rootDirectory = domainManagerConfiguration.getRootDirectory();
+ try {
+ for (FileItem item : (List<FileItem>) upload.parseRequest(request)) {
+ if (!item.isFormField()) {
+ File directory = new File(rootDirectory + "/"
+ + directoryName);
+ if (!directory.exists()) {
+ directory.mkdirs();
+ }
+ logger.fine("post " + item.getName());
+ item.write(new File(directory, item.getName()));
+ }
+ }
+
+ // Redirect to the admin page
+ response.sendRedirect("/ui/files");
+ } catch (Exception e) {
+ throw new IOException(e.toString());
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+
+ // Download a file
+ String requestURI = URLDecoder.decode(request.getRequestURI(), "UTF-8");
+ String path = requestURI.substring(request.getServletPath().length());
+ if (path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ logger.fine("get " + path);
+
+ try {
+
+ // Analyze the given path
+ String artifactURI;
+ if (path.startsWith("contribution=")) {
+ int semicolonIndex = path.indexOf(';');
+ String contributionName = path.substring("contribution="
+ .length(), semicolonIndex);
+ artifactURI = path.substring(semicolonIndex + 1);
+
+ try {
+ Item item = this.contributionCollection
+ .get(contributionName);
+
+ if (item == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+
+ return;
+
+ }
+
+ path = item.getAlternate();
+
+ } catch (NotFoundException e) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+
+ return;
+
+ }
+
+ if (path.endsWith(".jar") || path.endsWith(".zip")) {
+ path = "jar:" + (path.startsWith("file:") ? "" : "file:") + path + '!' + (artifactURI.startsWith("/") ? "" : "/") + artifactURI;
+
+ } else {
+ path += (path.endsWith("/") ? "" : "/") + artifactURI;
+ }
+
+ } else {
+ artifactURI = null;
+ }
+
+ URI uri = URI.create(path);
+ String scheme = uri.getScheme();
+ if (scheme == null) {
+
+ if (artifactURI != null) {
+ uri = URI.create("file:" + uri.toString());
+
+ } else {
+
+ // If no scheme is specified then the path identifies file
+ // inside our directory
+ String rootDirectory = domainManagerConfiguration
+ .getRootDirectory();
+ uri = new File(rootDirectory + "/" + directoryName, path)
+ .toURI();
+
+ }
+
+ } else if (!scheme.equals("file") && !scheme.equals("jar")) {
+
+ // If the scheme does not identify a local file, just redirect
+ // to the server
+ // hosting the file
+ response.sendRedirect(path);
+ }
+
+ // Read the file and write to response
+ URLConnection connection = uri.toURL().openConnection();
+ connection.setUseCaches(false);
+ connection.connect();
+ InputStream is = connection.getInputStream();
+ ServletOutputStream os = response.getOutputStream();
+ byte[] buffer = new byte[4096];
+ for (;;) {
+ int n = is.read(buffer);
+ if (n < 0) {
+ break;
+ }
+ os.write(buffer, 0, n);
+ }
+ is.close();
+ os.flush();
+
+ } catch (FileNotFoundException e) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ }
+ }
+
}
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=802637&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 Mon Aug 10 01:40:02 2009
@@ -0,0 +1,502 @@
+package org.apache.tuscany.sca.domain.manager.impl;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.Map;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.tuscany.sca.contribution.Contribution;
+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.DomainSearchFormatter;
+import org.apache.tuscany.sca.domain.search.impl.HighlightingUtil;
+import org.apache.tuscany.sca.domain.search.impl.SearchFields;
+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 = "/";
+
+ final private static int MAX_CONTENT_LINE_WIDTH = 300;
+
+ final private static String HIGHLIGHT_START = "<font color='#FF0000'>";
+
+ final private static String HIGHLIGHT_END = "</font>";
+
+ @Reference
+ public ContributionsReader contributionReader;
+
+ @Reference
+ public LocalItemCollection contributionCollection;
+
+ @Reference
+ public DomainSearch domainSearch;
+
+ private int elementCounter;
+
+ 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 {
+
+ try {
+
+ if (key.startsWith("highlight")) {
+ int lastSemicolonIndex = key.lastIndexOf(";");
+ String artifact = key.substring(lastSemicolonIndex + 1);
+ int secondLastSemicolonIndex = key.lastIndexOf(";",
+ lastSemicolonIndex - 1);
+ String contribution = key.substring(
+ secondLastSemicolonIndex + 1, lastSemicolonIndex);
+ String query = key.substring("highlight".length(),
+ secondLastSemicolonIndex);
+
+ return highlightArtifact(contribution, artifact, query);
+
+ } else if (key.startsWith("query")) {
+ return executeQuery(key.substring("query".length()));
+
+ } else {
+ throw new NotFoundException("Invalid operation!");
+ }
+
+ } catch (Exception t) {
+
+ if (t instanceof NotFoundException) {
+ throw (NotFoundException) t;
+ }
+
+ throw new NotFoundException("Internal error!");
+
+ }
+
+ }
+
+ private Item highlightArtifact(String contribution, String artifact,
+ String query) throws NotFoundException {
+
+ // Item item = this.contributionCollection.get(contribution);
+ //
+ // if (item == null) {
+ // throw new NotFoundException("contribution not found: " +
+ // contribution);
+ // }
+ //
+ // String location = item.getAlternate();
+ //
+ // if (location.endsWith(".jar") || location.endsWith(".zip")) {
+ // location = "jar:" + (location.startsWith("file:") ? "" : "file:") +
+ // location + '!' + (artifact.startsWith("/") ? "" : "/") + artifact;
+ //
+ // } else {
+ // location += (location.endsWith("/") ? "" : "/") + artifact;
+ // }
+ //
+ // try {
+ // Reader reader = new InputStreamReader(new
+ // URL(location).openStream());
+ // StringBuilder sb = new StringBuilder();
+ // int c;
+ //
+ // // TODO: load the chars into an array buffer instead of one
+ // // at a
+ // // time
+ // while ((c = reader.read()) != -1) {
+ // char character = (char) c;
+ //
+ // if (!Character.isIdentifierIgnorable(character)) {
+ // sb.append(character);
+ // }
+ //
+ // }
+ //
+ // String highlightedText =
+ // this.domainSearch.highlight(SearchFields.FILE_CONTENT_FIELD,
+ // sb.toString(), query);
+ // highlightedText =
+ // HighlightingUtil.replaceHighlightMarkupBy(highlightedText,
+ // HIGHLIGHT_START, HIGHLIGHT_END);
+ //
+ // item = new Item();
+ // item.setTitle("Highlighted Artifact");
+ // item.setContents(highlightedText);
+ //
+ // return item;
+ //
+ // } catch (Exception e) {
+ // throw new NotFoundException("Could not highlight artifact: " +
+ // e.getMessage(), e);
+ // }
+
+ return null;
+
+ }
+
+ private Item executeQuery(String query) throws NotFoundException {
+
+ if (!this.domainSearch.indexExists()) {
+
+ Contribution[] contributions = this.contributionReader
+ .readContributions();
+
+ for (Contribution contribution : contributions) {
+
+ if (!contribution.getURI().equals(
+ DomainManagerUtil.DEPLOYMENT_CONTRIBUTION_URI)) {
+
+ this.domainSearch.contributionUpdated(contribution,
+ contribution);
+
+ }
+
+ }
+
+ }
+
+ Result[] results;
+ try {
+ results = this.domainSearch.parseAndSearch(query, true);
+
+ } catch (Exception e1) {
+
+ throw new NotFoundException("Exception while searching: "
+ + e1.getMessage(), e1);
+
+ }
+
+ Item item = new Item();
+ item.setTitle("Results");
+
+ StringWriter sw = new StringWriter();
+ this.elementCounter = 0;
+
+ if (results.length > 0) {
+
+ for (Result result : results) {
+
+ try {
+ writeToHTML(0, result, sw);
+
+ } catch (IOException e) {
+ // ignore result
+ }
+
+ }
+
+ String contents = HighlightingUtil.replaceHighlightMarkupBy(sw
+ .getBuffer(), HIGHLIGHT_START, HIGHLIGHT_END);
+
+ item.setContents(replaceAll(contents, 40) + "end");
+
+ } else {
+ item.setContents("No results match: <u>" + query + "</u>");
+ }
+
+ 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 == ':' || 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 String getIconLocationForResult(Result result) {
+
+ if (SearchFields.COMPONENT_FIELD.equals(result.getField())) {
+ return "icons/component.png' title='Component";
+
+ } else if (SearchFields.COMPOSITE_FIELD.equals(result.getField())) {
+ return "icons/composite.png' title='Composite";
+
+ } else if (SearchFields.ARTIFACT_FIELD.equals(result.getField())) {
+ return "icons/artifact.png' title='Artifact";
+ }
+
+ return "icons/feed-icon.png";
+
+ }
+
+ private static void writeResultIcon(Writer writer, Result result)
+ throws IOException {
+ writer.write("<img src='");
+ writer.write(getIconLocationForResult(result));
+ writer.write("'/> ");
+
+ }
+
+ private static Result writeFileContentResultToHTML(int indentation,
+ Result result, StringWriter writer) throws IOException {
+
+ Map<String, Result> contents = result.getContents();
+ writeResultIcon(writer, result);
+
+ if (contents.size() == 1
+ && SearchFields.ARTIFACT_FIELD.equals(contents.values()
+ .iterator().next().getField())) {
+
+ writer.write(result.getValue());
+ contents = result.getContents();
+
+ while (contents.size() == 1
+ && SearchFields.ARTIFACT_FIELD.equals(contents.values()
+ .iterator().next().getField())) {
+
+ result = contents.values().iterator().next();
+
+ writer.write(PATH_SEPARATOR);
+ StringEscapeUtils.escapeHtml(writer, result.getValue());
+
+ contents = result.getContents();
+
+ }
+
+ } else {
+ StringEscapeUtils.escapeHtml(writer, result.getValue());
+ }
+
+ return result;
+
+ }
+
+ private static String removeHighlighting(String text) {
+ return HighlightingUtil.replaceHighlightMarkupBy(text, "", "");
+ }
+
+ private static void writeResultName(Result result, StringWriter writer)
+ throws IOException {
+
+ if (SearchFields.CONTRIBUTION_FIELD.equals(result.getField())) {
+ writer.write("<a href='/contribution/");
+ writer.write(removeHighlighting(result.getValue()));
+ writer.write("'>");
+ writer.write(StringEscapeUtils.escapeHtml(result.getValue()));
+ writer.write("</a>");
+
+ } else if (SearchFields.COMPOSITE_FIELD.equals(result.getField())) {
+ writer.write("<a href='/composite-source/composite:");
+ writer.write(getContributionURI(result));
+ writer.write(';');
+ writer.write(removeHighlighting(result.getValue()));
+ writer.write("'>");
+ writer.write(StringEscapeUtils.escapeHtml(result.getValue()));
+ writer.write("</a>");
+
+ } else {
+ StringEscapeUtils.escapeHtml(writer, result.getValue());
+ }
+
+ }
+
+ private static String getContributionURI(Result result) {
+
+ if (result == null) {
+ return "";
+
+ } else if (SearchFields.CONTRIBUTION_FIELD.equals(result.getField())) {
+ return removeHighlighting(result.getValue());
+
+ } else {
+ return getContributionURI(result.getContainer());
+ }
+
+ }
+
+ private void writeToHTML(int indentation, Result result, StringWriter writer)
+ throws IOException {
+
+ startIndentation(indentation++, writer);
+ String field = result.getField();
+
+ if (SearchFields.FILE_CONTENT_FIELD.equals(field)) {
+ String content = result.getValue();
+
+ if (content != null && content.length() > 0
+ && DomainSearchFormatter.isHighlighted(content)) {
+
+ writer.write(HTML_NEW_LINE);
+
+ this.elementCounter++;
+ writer.write("<div style='margin-top:0em;margin-left:");
+ writer.write(Integer.toString(indentation));
+ writer
+ .write("em;background-color:#FFE175;max-width:100%;border-style:dashed;border-width:1px;padding:5px'>"
+ + "<p style='margin:0px;padding:0px;font-size:70%'>"
+ + "<a style='margin:0px;padding:0px' href='#filecontent");
+
+ writer.write(Integer.toString(this.elementCounter));
+
+ String contributionPlusArtifact = getContributionURI(result)
+ + ";"
+ + removeHighlighting(result.getContainer().getValue());
+
+ // writer.write("' onclick='search");
+ // writer.write("'>view all</a> <a href='/files/contribution=");
+ writer.write("' onclick='getHighlighted(\"");
+ writer.write(contributionPlusArtifact);
+ writer
+ .write("\")'>view all</a> <a href='/files/contribution=");
+
+ writer.write(contributionPlusArtifact);
+ writer
+ .write("'>download</a></p><p style='margin:8px 0px 0px 0px;padding:0px'>");
+
+ int i = 0;
+ while (i < content.length()) {
+ StringEscapeUtils.escapeHtml(writer, content.substring(i,
+ Math.min(i + MAX_CONTENT_LINE_WIDTH, content
+ .length())));
+ writer.write(HTML_NEW_LINE);
+ i += MAX_CONTENT_LINE_WIDTH;
+
+ }
+
+ writer.write("</p></div>");
+
+ }
+
+ } else if (SearchFields.ARTIFACT_FIELD.equals(field)) {
+ result = writeFileContentResultToHTML(indentation, result, writer);
+
+ } else {
+
+ writeResultIcon(writer, result);
+ writeResultName(result, writer);
+
+ }
+
+ 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;
+ }
+
+}
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=802637&r1=802636&r2=802637&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 Mon Aug 10 01:40:02 2009
@@ -128,6 +128,7 @@
<t:binding.atom uri="http://localhost:9990/workspace" title="Contributions"/>
</service>
<reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
+ <reference name="domainSearch" target="DomainSearchComponent"/>
</component>
<component name="ContributionServiceComponent">
@@ -154,6 +155,7 @@
<t:binding.http uri="http://localhost:9990/files"/>
</service>
<reference name="domainManagerConfiguration" target="DomainManagerConfigurationComponent"/>
+ <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
</component>
<component name="DomainCompositeCollectionComponent">
@@ -274,7 +276,8 @@
</service>
<reference name="domainSearch" target="DomainSearchComponent"/>
- <reference name="contributionCollection" target="ContributionCollectionComponent/WorkspaceReader"/>
+ <reference name="contributionCollection" target="ContributionCollectionComponent/LocalItemCollection"/>
+ <reference name="contributionReader" target="DeployableCompositeCollectionComponent/ContributionsReader"/>
</component>
@@ -311,6 +314,7 @@
<component name="DomainSearchComponent">
<implementation.java class="org.apache.tuscany.sca.domain.search.impl.DomainSearchImpl"/>
+ <!--<property name="indexDirectoryPath">domainSearchIndex</property> -->
</component>
-
+
</composite>
Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/artifact.png
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/artifact.png?rev=802637&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/artifact.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/component.png
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/component.png?rev=802637&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/component.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/composite.png
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/composite.png?rev=802637&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/icons/composite.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: 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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-manager/src/main/resources/search-gadget.html Mon Aug 10 01:40:02 2009
@@ -25,11 +25,39 @@
<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">
+<script type="text/javascript">
+ function search() {
+ lastQuery = elementByID(gadget, 'searchField').value;
+ searcher.get("query" + lastQuery, searchResponse);
+
+ }
+
+ function getHighlighted(artifact) {
+ searcher.get("highlight" + lastQuery + ";" + artifact, searchResponse);
+ }
+
+ function highlightResponse(feed) {
+ var entries = feed.getElementsByTagName("entry");
+ var content = entries[0].getElementsByTagName("content");
+
+ var results = elementByID(gadget, "results");
+ results.innerHTML = content[0].firstChild.data;
+
+ }
+
+ function searchResponse(feed) {
+ var entries = feed.getElementsByTagName("entry");
+ var content = entries[0].getElementsByTagName("content");
+
+ var results = elementByID(gadget, "results");
+ results.innerHTML = content[0].firstChild.data;
+
+ }
+
+</script>
</head>
@@ -53,28 +81,14 @@
</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;
-
- }
+ var lastQuery = "";
- elementByID(gadget, 'searchButton').onclick = search
+ elementByID(gadget, 'searchButton').onclick = search;
</script>
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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/DomainSearch.java Mon Aug 10 01:40:02 2009
@@ -2,15 +2,18 @@
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;
@Remotable
public interface DomainSearch {
- Result[] parseAndSearch(String searchQuery, boolean highlight);
+ boolean indexExists();
- Result[] search(Query searchQuery, boolean hightlight);
+ Result[] parseAndSearch(String searchQuery, boolean highlight) throws Exception;
+
+ Result[] search(Query searchQuery, boolean hightlight) throws Exception;
+
+ String highlight(String field, String text, String searchQuery) throws Exception;
/**
* Notifies the listener that a contribution has been added.
@@ -18,7 +21,7 @@
* @param repository The contribution repository
* @param contribution The new contribution
*/
- void contributionAdded(ContributionRepository repository, Contribution contribution);
+ void contributionAdded(Contribution contribution);
/**
* Notifies the listener that a contribution has been removed.
@@ -26,7 +29,7 @@
* @param repository The contribution repository
* @param contribution The removed contribution.
*/
- void contributionRemoved(ContributionRepository repository, Contribution contribution);
+ void contributionRemoved(Contribution contribution);
/**
* Notifies the listener that a contribution has been updated.
@@ -35,6 +38,6 @@
* @param oldContribution The old contribution
* @param contribution The new contribution
*/
- void contributionUpdated(ContributionRepository repository, Contribution oldContribution, Contribution contribution);
+ void contributionUpdated(Contribution oldContribution, Contribution contribution);
}
Modified: 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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/Result.java Mon Aug 10 01:40:02 2009
@@ -5,9 +5,9 @@
public interface Result extends Serializable {
- String getName();
+ String getValue();
- void setName(String name);
+ void setValue(String value);
Result getContainer();
@@ -18,5 +18,9 @@
void removeContent(Result artifactResult);
void setContainer(Result container);
+
+ String getField();
+
+ void setField(String field);
}
Modified: 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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultFactory.java Mon Aug 10 01:40:02 2009
@@ -4,11 +4,7 @@
public interface ResultFactory<T extends Result> {
- String getType();
-
- String getName(Document document);
-
- T createResult(String name);
+ T createResult(String field, String value);
T createResult(Document document);
Modified: 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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/ResultProcessor.java Mon Aug 10 01:40:02 2009
@@ -1,10 +1,9 @@
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);
+ Result process(Document document, 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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ArtifactDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -1,11 +1,11 @@
package org.apache.tuscany.sca.domain.search.impl;
-import java.io.File;
-import java.net.MalformedURLException;
+import java.io.IOException;
import java.net.URL;
import org.apache.lucene.document.Field;
import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
@@ -17,43 +17,68 @@
if (object instanceof Artifact) {
Artifact artifact = (Artifact) object;
- String uri = artifact.getURI();
+ // String uri = artifact.getURI();
- if (uri != null && uri.length() == 0) {
- uri = null;
- }
+ // if (uri != null && uri.length() == 0) {
+ // uri = null;
+ // }
+ //
+ // if (uri != null) {
+ //
+ // if (uri.endsWith(".composite")
+ // || uri.endsWith(".component")) {
+ //
+ // 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 (uri != null) {
-
- 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) {
+ if (!(object instanceof Contribution)) {
String location = artifact.getLocation();
-
- document.add(new Field(SearchFields.LOCATION_FIELD, location,
- Field.Store.YES, Field.Index.ANALYZED));
try {
+
+ if (document == null) {
+ document = documents.get(SearchFields.ARTIFACT_FIELD + location);
+ }
+
+ FileContent fileContent = new WrappedFileContent(new URL(
+ location));
+
+ document.add(new Field(SearchFields.ARTIFACT_FIELD,
+ fileContent.getName(), Field.Store.YES,
+ Field.Index.ANALYZED));
+
+ parent += DomainPathAnalyzer.PATH_SEPARATOR
+ + SearchFields.ARTIFACT_FIELD
+ + DomainPathAnalyzer.TYPE_SEPARATOR
+ + location + DomainPathAnalyzer.URI_SEPARATOR
+ + fileContent.getName();
+
+ // parent += DomainPathAnalyzer.PATH_SEPARATOR
+ // + SearchFields.FILE_FIELD
+ // + DomainPathAnalyzer.TYPE_SEPARATOR + location +
+ // DomainPathAnalyzer.URI_SEPARATOR + fileContent.getName();
+
Document fileDoc = parentProcessor.process(parentProcessor,
- documents, new SystemFileContent(new File(new URL(location).getFile())), document, parent);
-
+ documents, fileContent, null, parent);
+
fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
Field.Store.YES, Field.Index.ANALYZED));
-
- } catch (MalformedURLException e) {
- // ignore file
+
+ } catch (IOException e) {
+ // ignore location
}
}
@@ -70,13 +95,13 @@
if (obj instanceof Artifact) {
Artifact artifact = (Artifact) obj;
- String uri = artifact.getURI();
+ String uri = artifact.getLocation();
if (uri != null && uri.length() == 0) {
return null;
}
- return uri;
+ return SearchFields.ARTIFACT_FIELD + uri;
}
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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -5,6 +5,7 @@
import org.apache.tuscany.sca.assembly.ComponentProperty;
import org.apache.tuscany.sca.assembly.ComponentReference;
import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Property;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
import org.apache.tuscany.sca.domain.search.Result;
@@ -32,12 +33,16 @@
if (doc == null) {
doc = documents.get(uri);
}
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPONENT_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri + DomainPathAnalyzer.URI_SEPARATOR + component.getName();
+
+ 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));
-
+
for (ComponentService service : component.getServices()) {
Document serviceDoc = documents.get(uri + ':'
+ service.getName());
@@ -84,8 +89,9 @@
Document referenceDoc = documents.get(uri + ':'
+ reference.getName());
- referenceDoc.add(new Field(SearchFields.REFERENCE_NAME_FIELD,
- reference.getName(), Field.Store.YES,
+ referenceDoc.add(new Field(
+ SearchFields.REFERENCE_NAME_FIELD, reference
+ .getName(), Field.Store.YES,
Field.Index.ANALYZED));
InterfaceContract interfaceContract = reference
@@ -117,31 +123,38 @@
}
- referenceDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
- Field.Store.YES, Field.Index.ANALYZED));
+ referenceDoc.add(new Field(SearchFields.PARENT_FIELD,
+ parent, Field.Store.YES, Field.Index.ANALYZED));
}
}
- Document implementationDoc = parentProcessor.process(parentProcessor,
- documents, component.getImplementation(), null, parent);
+ Document implementationDoc = parentProcessor.process(
+ parentProcessor, documents, component.getImplementation(),
+ null, parent);
if (uri != null && implementationDoc != null) {
- implementationDoc.add(new Field(SearchFields.PARENT_FIELD,
- uri, Field.Store.YES, Field.Index.ANALYZED));
-
+ implementationDoc.add(new Field(SearchFields.PARENT_FIELD, uri,
+ Field.Store.YES, Field.Index.ANALYZED));
+
}
for (ComponentProperty componentProperty : component
.getProperties()) {
- Document propertyDoc = parentProcessor.process(parentProcessor,
- documents, componentProperty.getProperty(), null, parent);
- if (uri != null) {
- propertyDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
- Field.Store.YES, Field.Index.ANALYZED));
+ Property property = componentProperty.getProperty();
+
+ if (property != null) {
+ Document propertyDoc = parentProcessor.process(
+ parentProcessor, documents, property, null, parent);
+
+ if (uri != null) {
+ propertyDoc.add(new Field(SearchFields.PARENT_FIELD,
+ parent, Field.Store.YES, Field.Index.ANALYZED));
+
+ }
}
@@ -176,17 +189,16 @@
}
- public Result processDocument(org.apache.lucene.document.Document document, Result result) {
+ public Result processDocument(org.apache.lucene.document.Document document,
+ Result result) {
String componentName = document.get(SearchFields.COMPONENT_FIELD);
-
+
if (componentName != null) {
-
-
-
+
}
-
+
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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/ComponentTypeDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -7,6 +7,7 @@
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.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -35,8 +36,10 @@
}
if (uri != null) {
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPONENT_TYPE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
+
+ parent += DomainPathAnalyzer.PATH_SEPARATOR
+ + SearchFields.COMPONENT_TYPE_FIELD
+ + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
doc.add(new Field(SearchFields.COMPONENT_TYPE_FIELD, uri,
Field.Store.YES, Field.Index.ANALYZED));
@@ -54,25 +57,35 @@
if (interfaceContract != null) {
- for (Operation operation : interfaceContract
- .getInterface().getOperations()) {
+ Interface interfac = interfaceContract.getInterface();
- serviceDoc.add(new Field(
- SearchFields.SERVICE_INTERFACE_FIELD,
- operation.getName(), Field.Store.YES,
- Field.Index.ANALYZED));
+ if (interfac != null) {
+
+ for (Operation operation : interfac.getOperations()) {
+
+ serviceDoc.add(new Field(
+ SearchFields.SERVICE_INTERFACE_FIELD,
+ operation.getName(), Field.Store.YES,
+ Field.Index.ANALYZED));
+
+ }
}
- for (Operation operation : interfaceContract
- .getCallbackInterface().getOperations()) {
+ interfac = interfaceContract.getCallbackInterface();
- serviceDoc
- .add(new Field(
- SearchFields.SERVICE_INTERFACE_CALLBACK_FIELD,
- operation.getName(),
- Field.Store.YES,
- Field.Index.ANALYZED));
+ if (interfac != null) {
+
+ for (Operation operation : interfac.getOperations()) {
+
+ serviceDoc
+ .add(new Field(
+ SearchFields.SERVICE_INTERFACE_CALLBACK_FIELD,
+ operation.getName(),
+ Field.Store.YES,
+ Field.Index.ANALYZED));
+
+ }
}
@@ -122,8 +135,8 @@
}
- referenceDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
- Field.Store.YES, Field.Index.ANALYZED));
+ referenceDoc.add(new Field(SearchFields.PARENT_FIELD,
+ parent, Field.Store.YES, Field.Index.ANALYZED));
}
@@ -135,8 +148,8 @@
if (uri != null) {
- propertyDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
- Field.Store.YES, Field.Index.ANALYZED));
+ propertyDoc.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/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=802637&r1=802636&r2=802637&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/CompositeDocumentProcessor.java Mon Aug 10 01:40:02 2009
@@ -15,11 +15,9 @@
if (object instanceof Composite) {
Composite composite = (Composite) object;
- String uri = composite.getURI();
QName name = composite.getName();
-
- uri = (uri == null ? "" : uri) + (name == null ? "" : name.toString());
-
+ String uri = (name == null ? "" : name.getNamespaceURI() + ';' + name.getLocalPart());
+
if (uri.length() == 0) {
uri = null;
@@ -28,7 +26,7 @@
}
if (uri != null) {
- parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPOSITE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + composite.getURI() + DomainPathAnalyzer.URI_SEPARATOR + composite.getName();
+ parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.COMPOSITE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + uri;
}
for (Component component : composite.getComponents()) {