[jbosstools-issues] [JBoss JIRA] Commented: (JBDS-1155) EAR deployment problems when variables are used in Eclipse 3.5.2/WTP 3.1.2
Max Rydahl Andersen (JIRA)
jira-events at lists.jboss.org
Fri Mar 12 04:00:38 EST 2010
[ https://jira.jboss.org/jira/browse/JBDS-1155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12519563#action_12519563 ]
Max Rydahl Andersen commented on JBDS-1155:
-------------------------------------------
### Eclipse Workspace Patch 1.0
#P org.jboss.ide.eclipse.as.core
Index: jbosscore/org/jboss/ide/eclipse/as/core/Messages.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/Messages.java (revision 20521)
+++ jbosscore/org/jboss/ide/eclipse/as/core/Messages.java (working copy)
@@ -28,6 +28,8 @@
public static String saveXMLDocumentFailed;
public static String loadJMXClassesFailed;
public static String securityException;
+ public static String JBossServerCorePlugin_Fix_component_xml;
+
public static String JMXPoller;
public static String XPathLoadFailure;
Index: META-INF/MANIFEST.MF
===================================================================
--- META-INF/MANIFEST.MF (revision 20521)
+++ META-INF/MANIFEST.MF (working copy)
@@ -13,6 +13,7 @@
org.eclipse.wst.server.core,
org.eclipse.jst.j2ee,
org.eclipse.wst.xml.core,
+ org.eclipse.wst.sse.core,
org.apache.ant,
org.jboss.tools.jmx.core,
org.eclipse.core.variables,
Index: jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java (revision 20521)
+++ jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java (working copy)
@@ -10,21 +10,49 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.core;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathModel;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListenerManager;
import org.jboss.ide.eclipse.as.core.server.internal.ServerListener;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Version;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
/**
* The main plugin class to be used in the desktop.
@@ -33,7 +61,7 @@
//The shared instance.
private static JBossServerCorePlugin plugin;
public static final String PLUGIN_ID = "org.jboss.ide.eclipse.as.core"; //$NON-NLS-1$
-
+ private static IResourceChangeListener listener;
/**
* The constructor.
*/
@@ -61,8 +89,71 @@
UnitedServerListenerManager.getDefault().addListener(XPathModel.getDefault());
UnitedServerListenerManager.getDefault().addListener(ServerListener.getDefault());
FacetedProjectFramework.addListener( JBoss4xEarFacetInstallListener.getDefault(), IFacetedProjectEvent.Type.POST_INSTALL);
+ // A workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=305306
+ if (isGalileoSR2()) {
+ addResourceChangeListener();
+ }
}
+ private void addResourceChangeListener() {
+ listener = new IResourceChangeListener() {
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getType() != IResourceChangeEvent.POST_CHANGE)
+ return;
+ IResourceDelta delta = event.getDelta();
+ final List<IResource> components = new ArrayList<IResource>();
+ IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() {
+ public boolean visit(IResourceDelta delta) {
+ IResource resource = delta.getResource();
+ if (resource.getType() == IResource.PROJECT) {
+ IProject project = resource.getProject();
+ try {
+ return FacetedProjectFramework.hasProjectFacet(
+ project, "jst.ear"); //$NON-NLS-1$
+ } catch (CoreException e) {
+ return true;
+ }
+ }
+ if (resource.getType() == IResource.FOLDER) {
+ return resource.getName().equals(".settings"); //$NON-NLS-1$
+ }
+ if (resource.getType() == IResource.FILE
+ && resource.getName().equals("org.eclipse.wst.common.component")) { //$NON-NLS-1$
+ components.add(resource);
+ }
+ return true;
+ }
+ };
+ try {
+ delta.accept(visitor);
+ } catch (CoreException ignore) {
+ }
+ WorkspaceJob job = new WorkspaceJob(Messages.JBossServerCorePlugin_Fix_component_xml) {
+
+ @Override
+ public IStatus runInWorkspace(IProgressMonitor monitor)
+ throws CoreException {
+ fixComponents(components);
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule(100);
+ }
+ };
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ public Boolean isGalileoSR2() {
+ Bundle bundle = Platform.getBundle("org.eclipse.wst.common.modulecore"); //$NON-NLS-1$
+ if (bundle != null) {
+ Version version = bundle.getVersion();
+ if (version.toString().equals("1.1.301.v201001252130")) { //$NON-NLS-1$
+ return Boolean.TRUE;
+ }
+ }
+ return Boolean.FALSE;
+ }
/**
* This method is called when the plug-in is stopped
*/
@@ -71,8 +162,72 @@
UnitedServerListenerManager.getDefault().removeListener(ServerListener.getDefault());
UnitedServerListenerManager.getDefault().removeListener(XPathModel.getDefault());
FacetedProjectFramework.removeListener(JBoss4xEarFacetInstallListener.getDefault());
+ if (isGalileoSR2()) {
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);
+ }
}
+ private void fixComponents(final List<IResource> components) {
+ for(IResource resource:components) {
+ IStructuredModel model = null;
+ boolean saveNeeded = false;
+ try {
+ model = StructuredModelManager.getModelManager()
+ .getModelForEdit((IFile) resource);
+ if (model instanceof IDOMModel) {
+ IDOMModel xmlModel = (IDOMModel) model;
+ IDOMDocument document = xmlModel.getDocument();
+ Element root = document.getDocumentElement();
+ NodeList elements = root
+ .getElementsByTagName("dependent-module"); //$NON-NLS-1$
+ for (int i = 0; i < elements.getLength(); i++) {
+ Node element = elements.item(i);
+ NamedNodeMap attributes = element
+ .getAttributes();
+ boolean deployToLib = false;
+ String archiveName = null;
+ boolean isClasspath = false;
+ for (int j = 0; j < attributes.getLength(); j++) {
+ Attr attr = (Attr) attributes.item(j);
+ String name = attr.getName();
+ if ("deploy-path".equals(name)) { //$NON-NLS-1$
+ String value = attr.getValue();
+ if (value != null && "/lib".equals(value)) { //$NON-NLS-1$
+ deployToLib = true;
+ }
+ }
+ if ("archiveName".equals(name)) { //$NON-NLS-1$
+ archiveName = name;
+ }
+ if ("handle".equals(name)) { //$NON-NLS-1$
+ String value = attr.getValue();
+ if (value != null && value.startsWith("module:/classpath")) { //$NON-NLS-1$
+ isClasspath = true;
+ }
+ }
+ }
+ if (deployToLib && isClasspath && archiveName != null) {
+ attributes.removeNamedItem(archiveName);
+ saveNeeded = true;
+ }
+ }
+ if (saveNeeded) {
+ xmlModel.save();
+ }
+ }
+
+ } catch (Exception e) {
+ IStatus status = new Status(IStatus.WARNING, PLUGIN_ID, e.getLocalizedMessage(),e);
+ getDefault().getLog().log(status);
+ }
+ finally {
+ if (model != null) {
+ model.releaseFromEdit();
+ }
+ }
+ }
+ }
+
/**
* Returns the shared instance.
*/
Index: jbosscore/org/jboss/ide/eclipse/as/core/Messages.properties
===================================================================
--- jbosscore/org/jboss/ide/eclipse/as/core/Messages.properties (revision 20521)
+++ jbosscore/org/jboss/ide/eclipse/as/core/Messages.properties (working copy)
@@ -5,6 +5,7 @@
serverCountName={0} ({1})
runtime=Runtime
securityException=Security Exception: {0}
+JBossServerCorePlugin_Fix_component_xml=Fix component.xml
JMXPoller=JMX Poller
loadJMXClassesFailed=Could not load JMX classes for server {0}
PollingStartupSuccess=Server Startup Succeeded
> EAR deployment problems when variables are used in Eclipse 3.5.2/WTP 3.1.2
> --------------------------------------------------------------------------
>
> Key: JBDS-1155
> URL: https://jira.jboss.org/jira/browse/JBDS-1155
> Project: Developer Studio (JBoss Developer Studio)
> Issue Type: Bug
> Components: integration
> Affects Versions: 3.0.0.M4
> Reporter: Max Rydahl Andersen
> Assignee: Rob Stryker
> Priority: Critical
> Fix For: 3.0.0.GA
>
>
> https://issues.sonatype.org/browse/MNGECLIPSE-2150 and https://bugs.eclipse.org/bugs/show_bug.cgi?id=305306 indicates big regression bug in WTP EAR deployment that uses variables.
> What is the cause ? can we fix it ?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jbosstools-issues
mailing list