Author: xcoulon
Date: 2012-02-09 15:54:32 -0500 (Thu, 09 Feb 2012)
New Revision: 38578
Modified:
trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/action/OpenInWSTesterAction.java
Log:
Open - Hook up WS Tester to the JAX-RS tooling
https://issues.jboss.org/browse/JBIDE-10609
Modified:
trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/action/OpenInWSTesterAction.java
===================================================================
---
trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/action/OpenInWSTesterAction.java 2012-02-09
20:23:56 UTC (rev 38577)
+++
trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/action/OpenInWSTesterAction.java 2012-02-09
20:54:32 UTC (rev 38578)
@@ -14,6 +14,9 @@
import java.lang.reflect.Method;
import java.util.List;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -26,12 +29,15 @@
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.navigator.CommonViewer;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerUtil;
import org.jboss.tools.ws.jaxrs.ui.cnf.UriPathTemplateElement;
import org.jboss.tools.ws.jaxrs.ui.internal.utils.Logger;
/**
* @author bfitzpat
- *
+ *
*/
public class OpenInWSTesterAction extends Action implements ISelectionChangedListener {
@@ -43,6 +49,7 @@
/**
* (non-Javadoc)
+ *
* @see org.eclipse.jface.action.Action#run()
*/
@Override
@@ -57,19 +64,17 @@
try {
if (selectedObject instanceof UriPathTemplateElement) {
UriPathTemplateElement element = (UriPathTemplateElement) selectedObject;
- String uriPathTemplate = element.getEndpoint().getUriPathTemplate();
- String uriPrefix = "http://[domain]:[port]"; //$NON-NLS-1$
-
+ String endpointUri = computeEndpointURI(element);
// Now we call the WS Tester through Reflection so there's no direct plug-in
dependency
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = win.getActivePage();
+ IWorkbenchPage page = win.getActivePage();
String id = "org.jboss.tools.ws.ui.tester.views.TestWSView"; //$NON-NLS-1$
try {
IViewPart part = page.showView(id);
- if (part != null &&
- part.getClass().getName().equalsIgnoreCase(
- "org.jboss.tools.ws.ui.views.JAXRSWSTestView2")) { //$NON-NLS-1$
+ if (part != null
+ && part.getClass().getName()
+ .equalsIgnoreCase("org.jboss.tools.ws.ui.views.JAXRSWSTestView2")) {
//$NON-NLS-1$
Class<?> c = part.getClass();
Class<?> parmtypes[] = new Class[2];
parmtypes[0] = String.class;
@@ -77,10 +82,10 @@
Method setURL = c.getDeclaredMethod("setJAXRS", parmtypes);
//$NON-NLS-1$
if (setURL != null) {
Object arglist[] = new Object[2];
- arglist[0] = uriPrefix + uriPathTemplate;
- arglist[1] = element.getEndpoint().getHttpMethod().getHttpVerb();
- setURL.invoke(part, arglist);
- }
+ arglist[0] = endpointUri;
+ arglist[1] = element.getEndpoint().getHttpMethod().getHttpVerb();
+ setURL.invoke(part, arglist);
+ }
}
} catch (PartInitException e) {
e.printStackTrace();
@@ -92,6 +97,29 @@
}
}
+ /**
+ * Creates the endpoint URI from the endpoint, by looking at the servers on which the
module is deployed.
+ * @param element
+ * @return
+ */
+ private String computeEndpointURI(UriPathTemplateElement element) {
+ String uriPathTemplate = element.getEndpoint().getUriPathTemplate();
+ IProject project = element.getEndpoint().getJavaProject().getProject();
+ IModule module = ServerUtil.getModule(project);
+ IPath path = new Path(module.getName()).append(uriPathTemplate);
+ // WebResource wr = new WebResource(module, path);
+ // check to see if this project has been deployed...
+ IServer[] servers = ServerUtil.getServersByModule(module, null);
+ if (servers == null || servers.length == 0) {
+ return "http://[domain]:[port]/" + path.toPortableString(); //$NON-NLS-1$
+ }
+ // if it's been deployed, we can grab the domain and web port
+ String domain = servers[0].getHost();
+ String webport =
servers[0].getAttribute("org.jboss.ide.eclipse.as.core.server.webPort",
"8080");//$NON-NLS-1$ //$NON-NLS-2$
+ return "http://" + domain + ':' + webport + "/" +
path.toPortableString(); //$NON-NLS-1$
+
+ }
+
@Override
public void selectionChanged(SelectionChangedEvent event) {
Object source = event.getSource();