Author: rob.stryker(a)jboss.com
Date: 2012-04-25 04:17:47 -0400 (Wed, 25 Apr 2012)
New Revision: 40470
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IMultiModuleURLProvider.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/EarArtifactAdapter.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossLaunchAdapter.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/core/behaviour/ExpressServer.java
Log:
JBIDE-10930
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/EarArtifactAdapter.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/EarArtifactAdapter.java 2012-04-25
07:46:16 UTC (rev 40469)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/EarArtifactAdapter.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -46,10 +46,25 @@
String typeId = children[i].getModuleType().getId();
if( typeId.equals(IModuleConstants.JST_WEB_MODULE) ||
typeId.equals(IModuleConstants.WST_WEB_MODULE))
tmp = WebDeployableArtifactUtil.getModuleObject(children[i].getProject());
- if( tmp != null )
- return tmp;
+ if( tmp != null ) {
+ return new EarModuleArtifact(ear, tmp);
+ }
}
return null;
}
+ public static class EarModuleArtifact implements IModuleArtifact {
+ private IModule earModule;
+ private IModuleArtifact webArtifact;
+ public EarModuleArtifact(IModule ear, IModuleArtifact web) {
+ this.earModule = ear;
+ this.webArtifact = web;
+ }
+ public IModule getModule() {
+ return earModule;
+ }
+ public IModuleArtifact getWebArtifact() {
+ return webArtifact;
+ }
+ }
}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IMultiModuleURLProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IMultiModuleURLProvider.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IMultiModuleURLProvider.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.ide.eclipse.as.core.server;
+
+import java.net.URL;
+
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.model.IURLProvider;
+
+public interface IMultiModuleURLProvider extends IURLProvider {
+ public URL getModuleRootURL(IModule[] module);
+}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java 2012-04-25
07:46:16 UTC (rev 40469)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -20,21 +20,22 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.j2ee.project.WebUtilities;
import org.eclipse.jst.server.core.IWebModule;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.model.IURLProvider;
import org.eclipse.wst.server.core.model.ServerDelegate;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
+import org.jboss.ide.eclipse.as.core.server.IMultiModuleURLProvider;
import org.jboss.ide.eclipse.as.core.util.RuntimeUtils;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
import org.jboss.ide.eclipse.as.wtp.core.util.ServerModelUtilities;
-public class DeployableServer extends ServerDelegate implements IDeployableServer,
IURLProvider {
+public class DeployableServer extends ServerDelegate implements IDeployableServer,
IMultiModuleURLProvider {
public DeployableServer() {
}
@@ -183,15 +184,26 @@
return false;
}
+ protected int getWebPort() {
+ return 80;
+ }
public URL getModuleRootURL(IModule module) {
- return getModuleRootURL(module, getServer().getHost(), 80);
+ return getModuleRootURL(module, getServer().getHost(), getWebPort(), null);
}
-
- public static URL getModuleRootURL(IModule module, String host, int port) {
- return getModuleRootURL(module, host, port, false);
+ public URL getModuleRootURL(IModule[] module) {
+ if( module.length == 2) {
+ String contextRoot = WebUtilities.getServerContextRoot(module[1].getProject(),
+ module[0].getProject());
+ return getModuleRootURL(module[1], getServer().getHost(), getWebPort(), contextRoot);
+ } else {
+ return module.length > 0 ? getModuleRootURL(module[0]) : null;
+ }
}
-
- public static URL getModuleRootURL(IModule module, String host, int port, boolean
ignoreContextRoot) {
+ public URL getModuleRootURL(IModule module, String contextRoot) {
+ return getModuleRootURL(module, getServer().getHost(), getWebPort(), contextRoot);
+ }
+
+ public static URL getModuleRootURL(IModule module, String host, int port, String
contextRoot) {
if (module == null || module.loadAdapter(IWebModule.class,null)==null )
return null;
@@ -203,11 +215,11 @@
if (port != 80)
url += ":" + port; //$NON-NLS-1$
- if( !ignoreContextRoot ) {
- String cxRoot = webModule.getContextRoot();
- if( !cxRoot.equals("/") && !cxRoot.equals("./"))
//$NON-NLS-1$ //$NON-NLS-2$
- url += "/"+webModule.getContextRoot(); //$NON-NLS-1$
+ if( contextRoot == null ) {
+ contextRoot = webModule.getContextRoot();
}
+ if( !contextRoot.equals("/") && !contextRoot.equals("./"))
//$NON-NLS-1$ //$NON-NLS-2$
+ url += "/"+contextRoot; //$NON-NLS-1$
if (!url.endsWith("/")) //$NON-NLS-1$
url += "/"; //$NON-NLS-1$
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossLaunchAdapter.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossLaunchAdapter.java 2012-04-25
07:46:16 UTC (rev 40469)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossLaunchAdapter.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -20,6 +20,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.j2ee.project.WebUtilities;
import org.eclipse.jst.server.core.EJBBean;
import org.eclipse.jst.server.core.JndiLaunchable;
import org.eclipse.jst.server.core.JndiObject;
@@ -34,7 +35,9 @@
import org.eclipse.wst.server.core.model.LaunchableAdapterDelegate;
import org.eclipse.wst.server.core.model.ServerDelegate;
import org.eclipse.wst.server.core.util.WebResource;
+import org.jboss.ide.eclipse.as.core.modules.EarArtifactAdapter.EarModuleArtifact;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
+import org.jboss.ide.eclipse.as.core.server.IMultiModuleURLProvider;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeConstants;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
import org.jboss.ide.eclipse.as.core.util.PortalUtil;
@@ -60,11 +63,23 @@
public Object getLaunchable(IServer server, IModuleArtifact moduleObject) {
if (server != null) {
ServerDelegate delegate =
(ServerDelegate)server.loadAdapter(ServerDelegate.class,null);
-// if (!(delegate instanceof JBossServer ))
-// return null;
- if ((moduleObject instanceof Servlet) ||(moduleObject instanceof WebResource))
- return prepareHttpLaunchable(moduleObject, delegate, server);
-
+ if( moduleObject instanceof EarModuleArtifact ) {
+ EarModuleArtifact earArt = ((EarModuleArtifact)moduleObject);
+ IModuleArtifact webArtifact = earArt.getWebArtifact();
+ if( delegate instanceof IMultiModuleURLProvider) {
+ URL root = ((IMultiModuleURLProvider)delegate).getModuleRootURL(new
IModule[]{
+ earArt.getModule(), webArtifact.getModule()
+ });
+ return prepareHttpLaunchable(moduleObject, delegate, server, root);
+ } else {
+ // Cannot calculate root url from application.xml for this server type.
+ moduleObject = webArtifact;
+ }
+ }
+ if ((moduleObject instanceof Servlet) ||(moduleObject instanceof WebResource)) {
+ URL root = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+ return prepareHttpLaunchable(moduleObject, delegate, server, root);
+ }
if((moduleObject instanceof EJBBean) || (moduleObject instanceof JndiObject))
return prepareJndiLaunchable(moduleObject,delegate);
}
@@ -103,9 +118,9 @@
* @param server
* @return object
*/
- private Object prepareHttpLaunchable(IModuleArtifact moduleObject, ServerDelegate
delegate, IServer server) {
+ private Object prepareHttpLaunchable(IModuleArtifact moduleObject, ServerDelegate
delegate, IServer server, URL rootUrl) {
try {
- URL url = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+ URL url = rootUrl;
if (moduleObject instanceof Servlet) {
Servlet servlet = (Servlet) moduleObject;
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2012-04-25
07:46:16 UTC (rev 40469)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -29,8 +29,6 @@
import static
org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants.WEB_PORT_DETECT_XPATH;
import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.Date;
import org.eclipse.core.runtime.IPath;
@@ -40,11 +38,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.security.storage.StorageException;
-import org.eclipse.jst.server.core.IWebModule;
-import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
import org.eclipse.wst.server.core.model.IURLProvider;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathModel;
@@ -191,6 +185,10 @@
JNDI_PORT_DEFAULT_XPATH, JNDI_DEFAULT_PORT);
}
+ protected int getWebPort() {
+ return getJBossWebPort();
+ }
+
public int getJBossWebPort() {
return findPort(WEB_PORT, WEB_PORT_DETECT, WEB_PORT_DETECT_XPATH,
WEB_PORT_DEFAULT_XPATH, JBOSS_WEB_DEFAULT_PORT);
@@ -225,10 +223,6 @@
return ExpressionResolverUtil.safeReplaceProperties(result);
}
- public URL getModuleRootURL(IModule module) {
- return getModuleRootURL(module, getHost(), getJBossWebPort());
- }
-
// first class parameters
public String getUsername() {
return getAttribute(SERVER_USERNAME, "admin"); //$NON-NLS-1$
Modified:
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/core/behaviour/ExpressServer.java
===================================================================
---
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/core/behaviour/ExpressServer.java 2012-04-25
07:46:16 UTC (rev 40469)
+++
trunk/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/core/behaviour/ExpressServer.java 2012-04-25
08:17:47 UTC (rev 40470)
@@ -61,7 +61,7 @@
IProject appProj = appProjString == null ? null :
ResourcesPlugin.getWorkspace().getRoot().getProject(appProjString);
IProject p =module.getProject();
boolean shouldIgnore = ExpressServerUtils.getIgnoresContextRoot(getServer()) &&
p.equals(appProj);
- return JBossServer.getModuleRootURL(module, getServer().getHost(), 80, shouldIgnore);
+ return JBossServer.getModuleRootURL(module, getServer().getHost(), 80, shouldIgnore ?
"" : null);
}
public ServerExtendedProperties getExtendedProperties() {