https://bugzilla.redhat.com/show_bug.cgi?id=832117 - deployment editor
should support importing WSDLs hosted on a web server, not just local
project files.
diff --git a/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/pages/ProcessPage.java b/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/pages/ProcessPage.java
index a353558..f38e9a7 100644
--- a/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/pages/ProcessPage.java
+++ b/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/pages/ProcessPage.java
@@ -11,6 +11,7 @@
package org.eclipse.bpel.apache.ode.deploy.ui.pages;
+import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -36,6 +37,7 @@
import org.eclipse.bpel.apache.ode.deploy.ui.messages.ODEDeployUIMessages;
import org.eclipse.bpel.apache.ode.deploy.ui.util.DeployResourceSetImpl;
import org.eclipse.bpel.apache.ode.deploy.ui.util.DeployUtils;
+import org.eclipse.bpel.model.Import;
import org.eclipse.bpel.model.PartnerLink;
import org.eclipse.bpel.model.PartnerLinks;
import org.eclipse.bpel.model.Process;
@@ -57,6 +59,7 @@
import org.eclipse.emf.common.command.CompoundCommand;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.RemoveCommand;
@@ -64,6 +67,7 @@
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
@@ -151,7 +155,7 @@
private Form mainform;
// Bugzilla 324164
// we will manage this for ServiceCellEditor and PortTypeLabelProvider
- private ResourceSetImpl resourceSet = null;
+ private DeployResourceSetImpl resourceSet = null;
public ProcessPage(FormEditor editor, ProcessType pt) {
super(editor, "ODED" + pt.getName().toString(), pt.getName().getLocalPart()); //$NON-NLS-1$
@@ -163,6 +167,22 @@
this.domain = this.editor.getEditingDomain();
// Bugzilla 324164
resourceSet = new DeployResourceSetImpl();
+ Process process = processType.getModel();
+ for (Import imp : process.getImports()) {
+ try {
+ // NOTE: File URIs will be resolved by DeployUtils#loadAllWSDLFromProject(). This avoids the
+ // hassle of having to deal with relative file paths here.
+ URI uri = URI.createURI(imp.getLocation());
+ if (!uri.isFile())
+ resourceSet.getResource(uri, true);
+ } catch (Exception e) {
+ MessageDialog.openError(editor.getSite().getShell(), "Load Error", "Unable to load the import file:\n\n\t"+
+ imp.getLocation()+"\n\n"+
+ "Reason: "+e.getMessage()+"\n"+
+ "Process definitions may not be available!"
+ );
+ }
+ }
}
@Override
diff --git a/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployUtils.java b/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployUtils.java
index 0d320b0..80b0718 100644
--- a/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployUtils.java
+++ b/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployUtils.java
@@ -200,12 +200,15 @@
{
// fix a dumb mistake: XSDs don't have Definitions
// and will cause this to throw a class cast exception
- Object obj = res.getContents().get(0);
- if (obj instanceof Definition)
- {
- Definition def = (Definition)obj;
- if (!wsdlFiles.contains(def))
- wsdlFiles.add(def);
+ EList<EObject>contents = res.getContents();
+ if (contents!=null && !contents.isEmpty()) {
+ Object obj = contents.get(0);
+ if (obj instanceof Definition)
+ {
+ Definition def = (Definition)obj;
+ if (!wsdlFiles.contains(def))
+ wsdlFiles.add(def);
+ }
}
}
return wsdlFiles;