Author: max.andersen(a)jboss.com
Date: 2007-11-22 12:19:02 -0500 (Thu, 22 Nov 2007)
New Revision: 5049
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.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/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerTableViewer.java
Log:
JBIDE-1353 fixed deploy only runtime/server inconsistencies
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2007-11-22
17:17:20 UTC (rev 5048)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2007-11-22
17:19:02 UTC (rev 5049)
@@ -86,7 +86,12 @@
final IServer server2 = server;
new Job("Add Server XPath Details") {
protected IStatus run(IProgressMonitor monitor) {
- AbstractJBossServerRuntime ajbsr = (AbstractJBossServerRuntime)
+
+ if(server2==null || server2.getRuntime()==null) {
+ return Status.OK_STATUS; // server has no runtime so we can't set this up.
+ }
+
+ AbstractJBossServerRuntime ajbsr = (AbstractJBossServerRuntime)
server2.getRuntime().loadAdapter(AbstractJBossServerRuntime.class, null);
if(ajbsr != null ) {
IPath loc = server2.getRuntime().getLocation();
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 2007-11-22
17:17:20 UTC (rev 5048)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java 2007-11-22
17:19:02 UTC (rev 5049)
@@ -21,16 +21,23 @@
*/
package org.jboss.ide.eclipse.as.core.server.internal;
+import java.util.ArrayList;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.server.core.IEnterpriseApplication;
+import org.eclipse.jst.server.core.IWebModule;
import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleType;
import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ServerUtil;
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;
+// TODO: share the logic for modules with normal deployable server!
public class DeployableServer extends ServerDelegate implements IDeployableServer {
public DeployableServer() {
@@ -44,23 +51,55 @@
return new Status(IStatus.OK, JBossServerCorePlugin.PLUGIN_ID,0, "OK",
null);
}
- /*
- * (non-Javadoc)
- * @see
org.eclipse.wst.server.core.model.ServerDelegate#getChildModules(org.eclipse.wst.server.core.IModule[])
- */
public IModule[] getChildModules(IModule[] module) {
- // TODO Auto-generated method stub
- return null;
+ int last = module.length-1;
+ if (module[last] != null && module[last].getModuleType() != null) {
+ IModuleType moduleType = module[last].getModuleType();
+ if("jst.ear".equals(moduleType.getId())) { //$NON-NLS-1$
+ IEnterpriseApplication enterpriseApplication = (IEnterpriseApplication) module[0]
+ .loadAdapter(IEnterpriseApplication.class, null);
+ if (enterpriseApplication != null) {
+ IModule[] earModules = enterpriseApplication.getModules();
+ if ( earModules != null) {
+ return earModules;
+ }
+ }
+ }
+ else if ("jst.web".equals(moduleType.getId())) { //$NON-NLS-1$
+ IWebModule webModule = (IWebModule) module[last].loadAdapter(IWebModule.class,
null);
+ if (webModule != null) {
+ IModule[] modules = webModule.getModules();
+ return modules;
+ }
+ }
+ }
+ return new IModule[0];
}
- /*
- * (non-Javadoc)
- * @see
org.eclipse.wst.server.core.model.ServerDelegate#getRootModules(org.eclipse.wst.server.core.IModule)
- */
- public IModule[] getRootModules(IModule module) throws CoreException {
- return new IModule[] { module };
+ public IModule[] getRootModules(IModule module) throws CoreException {
+ IStatus status = canModifyModules(new IModule[] { module }, null);
+ if (status != null && !status.isOK())
+ throw new CoreException(status);;
+ IModule[] parents = doGetParentModules(module);
+ if(parents.length>0)
+ return parents;
+ return new IModule[] { module };
+ }
+
+
+ private IModule[] doGetParentModules(IModule module) {
+ IModule[] ears = ServerUtil.getModules("jst.ear"); //$NON-NLS-1$
+ ArrayList list = new ArrayList();
+ for (int i = 0; i < ears.length; i++) {
+ IEnterpriseApplication ear =
(IEnterpriseApplication)ears[i].loadAdapter(IEnterpriseApplication.class,null);
+ IModule[] childs = ear.getModules();
+ for (int j = 0; j < childs.length; j++) {
+ if(childs[j].equals(module))
+ list.add(ears[i]);
+ }
+ }
+ return (IModule[])list.toArray(new IModule[list.size()]);
}
-
/*
* (non-Javadoc)
* @see
org.eclipse.wst.server.core.model.ServerDelegate#modifyModules(org.eclipse.wst.server.core.IModule[],
org.eclipse.wst.server.core.IModule[], org.eclipse.core.runtime.IProgressMonitor)
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2007-11-22 17:17:20 UTC (rev
5048)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2007-11-22 17:19:02 UTC (rev
5049)
@@ -60,14 +60,14 @@
<serverType
behaviourClass="org.jboss.ide.eclipse.as.core.server.internal.DeployableServerBehavior"
class="org.jboss.ide.eclipse.as.core.server.internal.DeployableServer"
- description="A server which cannot be started, stopped, or debugged\nbut
provides a deploy folder for publishing."
+ description="A server which only provides a deploy folder for
publishing."
hasConfiguration="false"
id="org.jboss.ide.eclipse.as.systemCopyServer"
initialState="stopped"
launchConfigId="org.jboss.ide.eclipse.as.core.server.stripped.launchConfiguration"
- launchModes="run,debug"
+ launchModes="run"
name="JBoss Deploy-Only Server"
- runtime="false"
+ runtime="true"
runtimeTypeId="org.jboss.ide.eclipse.as.runtime.stripped"
startBeforePublish="false"
startTimeout="100000"
@@ -165,7 +165,7 @@
class="org.jboss.ide.eclipse.as.core.server.internal.DeployableServerRuntime"
description="A runtime provided to allow a deploy-only server the
ability to deploy certain project types."
id="org.jboss.ide.eclipse.as.runtime.stripped"
- name="JBoss Deploy-only"
+ name="JBoss Deploy-Only Runtime"
vendor="%providerName"
version="1.0">
<moduleType
@@ -328,9 +328,32 @@
runtimeTypeId="org.jboss.ide.eclipse.as.runtime.42"
runtime-component="org.jboss.ide.eclipse.as.runtime.component"
version="4.2"/>
+ <runtimeFacetMapping
+ runtimeTypeId="org.jboss.ide.eclipse.as.runtime.stripped"
+
runtime-component="org.jboss.ide.eclipse.as.runtime.stripped.component"
+ version="1.0"/>
</extension>
+<extension
+ point="org.eclipse.wst.common.project.facet.core.runtimes">
+ <runtime-component-type
id="org.jboss.ide.eclipse.as.runtime.stripped.component"/>
+ <runtime-component-version
+ type="org.jboss.ide.eclipse.as.runtime.stripped.component"
+ version="1.0"/>
+
+ <supported>
+ <runtime-component
+ id="org.jboss.ide.eclipse.as.runtime.stripped.component"
+ version="1.0"/>
+ <facet id="jst.web" version="2.2,2.3,2.4,2.5"/>
+ <facet id="jst.java" version="1.3,1.4,5.0,6.0"/>
+ <facet id="jst.utility" version="1.0"/>
+ <facet id="jst.ejb" version="2.0,2.1,3.0"/>
+ <facet id="jst.ear" version="1.2,1.3,1.4,5.0"/>
+ <facet id="jst.appclient" version="1.2,1.3,1.4,5.0"/>
+ </supported>
+ </extension>
<extension
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerTableViewer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerTableViewer.java 2007-11-22
17:17:20 UTC (rev 5048)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerTableViewer.java 2007-11-22
17:19:02 UTC (rev 5049)
@@ -92,11 +92,9 @@
protected class ServerTableLabelProvider2 extends ServerTableLabelProvider {
private int myCount = 0;
protected Image getStateImage(IServerType serverType, int state, String mode) {
- if( serverType.getId().equals("org.jboss.ide.eclipse.as.systemCopyServer"))
return null;
return UIDecoratorManager.getUIDecorator(serverType).getStateImage(state, mode,
myCount);
}
protected String getStateLabel(IServerType serverType, int state, String mode) {
- if( serverType.getId().equals("org.jboss.ide.eclipse.as.systemCopyServer"))
return "N/A";
return UIDecoratorManager.getUIDecorator(serverType).getStateLabel(state, mode,
myCount);
}
protected void animate() {