xml files are also evaluated during search
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
index 32ca6a3..dbb6628 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
@@ -17,7 +17,8 @@
org.eclipse.wst.wsdl;bundle-version="1.2.201",
org.eclipse.core.resources;bundle-version="3.7.100",
org.eclipse.ui.ide;bundle-version="3.7.0",
- org.eclipse.ui.forms;bundle-version="3.5.200"
+ org.eclipse.ui.forms;bundle-version="3.5.200",
+ org.eclipse.wst.sse.sieditor.core;bundle-version="1.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.wst.sse.sieditor.search.destinations,
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
index 1e4eb78..3555c51 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
@@ -11,6 +11,7 @@
package org.eclipse.wst.sse.sieditor.search.provider;
import java.util.LinkedHashSet;
+import java.util.Map;
import java.util.Set;
import org.eclipse.core.resources.IContainer;
@@ -22,7 +23,9 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.platform.discovery.runtime.api.ISearchParameters;
import org.eclipse.platform.discovery.util.api.longop.ILongOperation;
import org.eclipse.platform.discovery.util.api.longop.LongOpCanceledException;
@@ -33,10 +36,14 @@
import org.eclipse.wst.sse.sieditor.search.ui.tree.RootTreeNode;
import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
public abstract class AbstractSearchQueryOperation implements ILongOperation<ITreeNode> {
+ protected static final String XSD_FILE_EXTENSION = "xsd"; //$NON-NLS-1$
+ protected static final String WSDL_FILE_EXTENSION = "wsdl"; //$NON-NLS-1$
+ protected static final String XML_FILE_EXTENSION = "xml"; //$NON-NLS-1$
protected final ISearchParameters searchParams;
public AbstractSearchQueryOperation(ISearchParameters searchParams) {
@@ -101,29 +108,45 @@
protected abstract boolean isFileThatMayHaveTheSearchedContenet(IFile file);
protected boolean isXmlFileExtension(String fileExtension) {
- return checkForFileExtension(fileExtension, "xml"); //$NON-NLS-1$
+ return checkForFileExtension(fileExtension, XML_FILE_EXTENSION);
}
protected boolean isWsdlFileExtension(String fileExtension) {
- return checkForFileExtension(fileExtension, "wsdl"); //$NON-NLS-1$
+ return checkForFileExtension(fileExtension, WSDL_FILE_EXTENSION);
}
protected boolean isXsdFileExtension(String fileExtension) {
- return checkForFileExtension(fileExtension, "xsd"); //$NON-NLS-1$
+ return checkForFileExtension(fileExtension, XSD_FILE_EXTENSION);
}
private boolean checkForFileExtension(String fileExtension, String searchedFileExtension) {
- return fileExtension == null ? false : searchedFileExtension.equals(fileExtension.toLowerCase());
+ return fileExtension == null ? false : searchedFileExtension.equalsIgnoreCase(fileExtension);
}
protected abstract ITreeNode getRootTreeNode(Set<IFile> files);
- protected IWsdlModelRoot getWsdlModelRootForFile(IFile file, ResourceSet resourceSet) {
- WSDLResourceImpl resource = (WSDLResourceImpl) resourceSet.getResource(createFileUri(file), true);
- Definition definition = resource.getDefinition();
+ protected IWsdlModelRoot getWsdlModelRootForFile(IFile file) {
+ Map<String, Object> extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
+ Object currentXmlResourceFactoryWithLowerCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toLowerCase());
+ Object currentXmlResourceFactoryWithUpperCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toUpperCase());
+ Object currentWsdlResourceFactoryWithUpperCase = extensionToFactoryMap.get(WSDL_FILE_EXTENSION.toUpperCase());
+ try {
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), new WSDLResourceFactoryImpl());
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), new WSDLResourceFactoryImpl());
+ extensionToFactoryMap.put(WSDL_FILE_EXTENSION.toUpperCase(), new WSDLResourceFactoryImpl());
- IWsdlModelRoot modelRoot = WSDLFactory.getInstance().createWSDLModelRoot(definition);
- return modelRoot;
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ WSDLResourceImpl resource = (WSDLResourceImpl) resourceSet.getResource(createFileUri(file), true);
+ Definition definition = resource.getDefinition();
+
+ IWsdlModelRoot modelRoot = WSDLFactory.getInstance().createWSDLModelRoot(definition);
+ return modelRoot;
+ } finally {
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), currentXmlResourceFactoryWithLowerCase);
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), currentXmlResourceFactoryWithUpperCase);
+ extensionToFactoryMap.put(WSDL_FILE_EXTENSION.toUpperCase(), currentWsdlResourceFactoryWithUpperCase);
+ }
}
protected URI createFileUri(IFile file) {
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
index 4658522..1af0e8d 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
@@ -14,7 +14,6 @@
import java.util.Set;
import org.eclipse.core.resources.IFile;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.platform.discovery.runtime.api.ISearchParameters;
import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface;
@@ -46,11 +45,9 @@
@Override
protected ITreeNode getRootTreeNode(Set<IFile> files) {
RootTreeNode rootTreeNode = new RootTreeNode();
- final ResourceSetImpl resourceSet = new ResourceSetImpl();
-
for (IFile file : files) {
FileNode fileNode = new FileNode(file, rootTreeNode, false);
- IWsdlModelRoot wsdlModelRoot = getWsdlModelRootForFile(file, resourceSet);
+ IWsdlModelRoot wsdlModelRoot = getWsdlModelRootForFile(file);
if (isByNamespaceHierarchy() || isByFilesHierarchy()) {
NamespaceNode namespaceNode = new NamespaceNode(wsdlModelRoot.getDescription(), fileNode);
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
index 1ac7517..0159d85 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
@@ -12,9 +12,11 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Map;
import java.util.Set;
import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.platform.discovery.runtime.api.ISearchDestination;
@@ -41,6 +43,7 @@
import org.eclipse.wst.sse.sieditor.ui.v2.factory.TreeNodeMapper;
import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
import org.eclipse.xsd.util.XSDResourceImpl;
public class XsdSearchQueryOperation extends AbstractSearchQueryOperation {
@@ -62,12 +65,11 @@
protected ITreeNode getRootTreeNode(Set<IFile> files) {
RootTreeNode rootTreeNode = new RootTreeNode();
final TreeNodeMapper treeNodeMapper = new TreeNodeMapper();
- final ResourceSet resourceSet = new ResourceSetImpl();
for (IFile file : files) {
FileNode fileNode = new FileNode(file, rootTreeNode, isXsdFileExtension(file.getFileExtension()));
- Collection<ISchema> schemas = getSchemasFromFile(file, resourceSet);
+ Collection<ISchema> schemas = getSchemasFromFile(file);
for (ISchema schema : schemas) {
if (isByNamespaceHierarchy() || isByFilesHierarchy()) {
NamespaceNode namespaceNode = new NamespaceNode(schema, fileNode);
@@ -86,33 +88,49 @@
return rootTreeNode;
}
- private Collection<ISchema> getSchemasFromFile(IFile file, ResourceSet resourceSet) {
+ private Collection<ISchema> getSchemasFromFile(IFile file) {
Collection<ISchema> schemasInFile = new ArrayList<ISchema>();
String fileExtension = file.getFileExtension();
if (isXsdFileExtension(fileExtension) || isXmlFileExtension(fileExtension)) {
- ISchema schemaFromXsdFile = getSchemaFromXsdFile(file, resourceSet);
+ ISchema schemaFromXsdFile = getSchemaFromXsdFile(file);
if (schemaFromXsdFile != null) {
schemasInFile.add(schemaFromXsdFile);
}
}
if (isWsdlFileExtension(fileExtension) || isXmlFileExtension(fileExtension)) {
- schemasInFile.addAll(getSchemasFromWsdl(file, resourceSet));
+ schemasInFile.addAll(getSchemasFromWsdl(file));
}
return schemasInFile;
}
- private Collection<ISchema> getSchemasFromWsdl(IFile file, ResourceSet resourceSet) {
- IWsdlModelRoot modelRoot = getWsdlModelRootForFile(file, resourceSet);
+ private Collection<ISchema> getSchemasFromWsdl(IFile file) {
+ IWsdlModelRoot modelRoot = getWsdlModelRootForFile(file);
return modelRoot.getDescription().getContainedSchemas();
}
- private ISchema getSchemaFromXsdFile(IFile file, ResourceSet resourceSet) {
- XSDResourceImpl resource = (XSDResourceImpl) resourceSet.getResource(createFileUri(file), true);
- XSDSchema schema = resource.getSchema();
- IXSDModelRoot modelRoot = XSDFactory.getInstance().createXSDModelRoot(schema);
- return modelRoot.getSchema();
+ private ISchema getSchemaFromXsdFile(IFile file) {
+ Map<String, Object> extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
+ Object currentXmlResourceFactoryWithLowerCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toLowerCase());
+ Object currentXmlResourceFactoryWithUpperCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toUpperCase());
+ Object currentXsdResourceFactoryWithUpperCase = extensionToFactoryMap.get(XSD_FILE_EXTENSION.toUpperCase());
+ try {
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), new XSDResourceFactoryImpl());
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), new XSDResourceFactoryImpl());
+ extensionToFactoryMap.put(XSD_FILE_EXTENSION.toUpperCase(), new XSDResourceFactoryImpl());
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ XSDResourceImpl resource = (XSDResourceImpl) resourceSet.getResource(createFileUri(file), true);
+ XSDSchema schema = resource.getSchema();
+ IXSDModelRoot modelRoot = XSDFactory.getInstance().createXSDModelRoot(schema);
+ return modelRoot.getSchema();
+ } finally {
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), currentXmlResourceFactoryWithLowerCase);
+ extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), currentXmlResourceFactoryWithUpperCase);
+ extensionToFactoryMap.put(XSD_FILE_EXTENSION.toUpperCase(), currentXsdResourceFactoryWithUpperCase);
+ }
}
private void addTypesToParentNode(ISchema schema, ITreeNodeWithCustomizableChildren parent, TreeNodeMapper treeNodeMapper) {