Merge branch 'develop'
diff --git a/plugins/org.eclipse.bpel.apache.ode.runtime/src/org/eclipse/bpel/apache/ode/runtime/OdeBPELPublisher.java b/plugins/org.eclipse.bpel.apache.ode.runtime/src/org/eclipse/bpel/apache/ode/runtime/OdeBPELPublisher.java
index eb9f571..e600baa 100644
--- a/plugins/org.eclipse.bpel.apache.ode.runtime/src/org/eclipse/bpel/apache/ode/runtime/OdeBPELPublisher.java
+++ b/plugins/org.eclipse.bpel.apache.ode.runtime/src/org/eclipse/bpel/apache/ode/runtime/OdeBPELPublisher.java
@@ -1,95 +1,103 @@
-package org.eclipse.bpel.apache.ode.runtime;

-

-/*******************************************************************************

- * Copyright (c) 2008, 2012 IBM Corporation, University of Stuttgart (IAAS) and others.

- * All rights reserved. This program and the accompanying materials

- * are 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:

- *     IBM Corporation, University of Stuttgart (IAAS) - initial API and implementation

- *******************************************************************************/

-

-import java.io.File;

-

-import org.eclipse.bpel.runtimes.publishers.GenericBPELPublisher;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IPath;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.jst.server.core.PublishUtil;

-import org.eclipse.wst.server.core.IModule;

-import org.eclipse.wst.server.core.IModuleArtifact;

-import org.eclipse.wst.server.core.IRuntime;

-import org.eclipse.wst.server.core.model.IModuleResource;

-import org.eclipse.wst.server.core.model.ModuleDelegate;

-

-/**

- * BPEL publisher for Apache ODE.

- * 

- * @author Tammo van Lessen (IAAS)

- * @author Simon Moser (IBM)

- */

-public class OdeBPELPublisher extends GenericBPELPublisher {

-

-	public OdeBPELPublisher() {

-		super();

-	}

-

-	@Override

-	public IStatus[] publish(IModuleArtifact[] artifacts, IProgressMonitor monitor) {

-		// resources will always be null for some weird reason :(

-		// therefore we generate a BPELModuleArtifact

-		// the module id value enables us to get BPEL file path relative to its project

-		IModule[] modules = super.getModule();

-		

-		try {

-			IModule last = modules[modules.length-1];

-			IPath root = createDeploymentDestination(last);

-			ModuleDelegate delegate = (ModuleDelegate)last.loadAdapter(ModuleDelegate.class, new NullProgressMonitor());

-			IModuleResource[] resources = delegate.members();

-			PublishUtil.publishFull(resources, root, monitor);

-		} catch(  CoreException ce ) {

-			// TODO return bad status

-		}

-		return new IStatus[]{Status.OK_STATUS};

-

-	}

-

-	@Override

-	public IStatus[] unpublish(IProgressMonitor monitor) {

-		IModule[] modules = super.getModule();

-		IModule last = modules[modules.length - 1];

-		IStatus[] result = new Status[modules.length];

-		IPath root = createDeploymentDestination(last);

-		PublishUtil.deleteDirectory(root.toFile(), monitor);

-		return result;

-	}

-

-	/**

-	 * This method will create a folder inside the WEB-INF\processes subfolder

-	 * of the ODE installation

-	 */

-	protected IPath createDeploymentDestination(IModule module) {

-		String moduleName = module.getName();

-		String deployAppName = moduleName;

-

-		// get TOMCAT_HOME

-		IRuntime serverDef = getServerRuntime().getRuntime();

-		IPath tomcatHome = serverDef.getLocation();

-

-		// append ODE's Process target Dir tomcatHome

-		IPath deployTarget = tomcatHome.append("webapps").append("ode")

-				.append("WEB-INF").append("processes").append(deployAppName);

-

-		File f = deployTarget.toFile();

-		if (!f.exists()) {

-			f.mkdir();

-		}

-

-		return deployTarget;

-	}

-}

+package org.eclipse.bpel.apache.ode.runtime;
+
+/*******************************************************************************
+ * Copyright (c) 2008, 2012 IBM Corporation, University of Stuttgart (IAAS) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ *     IBM Corporation, University of Stuttgart (IAAS) - initial API and implementation
+ *******************************************************************************/
+
+import java.io.File;
+
+import org.eclipse.bpel.runtimes.publishers.GenericBPELPublisher;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jst.server.core.PublishUtil;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleArtifact;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.model.IModuleResource;
+import org.eclipse.wst.server.core.model.ModuleDelegate;
+
+/**
+ * BPEL publisher for Apache ODE.
+ * 
+ * @author Tammo van Lessen (IAAS)
+ * @author Simon Moser (IBM)
+ */
+public class OdeBPELPublisher extends GenericBPELPublisher {
+
+	public OdeBPELPublisher() {
+		super();
+	}
+
+	@Override
+	public IStatus[] publish(IModuleArtifact[] artifacts, IProgressMonitor monitor) {
+		// resources will always be null for some weird reason :(
+		// therefore we generate a BPELModuleArtifact
+		// the module id value enables us to get BPEL file path relative to its project
+		IModule[] modules = super.getModule();
+		
+		try {
+			IModule last = modules[modules.length-1];
+			IPath root = createDeploymentDestination(last);
+			ModuleDelegate delegate = (ModuleDelegate)last.loadAdapter(ModuleDelegate.class, new NullProgressMonitor());
+			IModuleResource[] resources = delegate.members();
+			PublishUtil.publishFull(resources, root, monitor);
+
+			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=379613
+			// remove the "*.deployed" file, so Ode knows to reload the changes
+			File f = root.addFileExtension("deployed").toFile();
+			if (f.exists()) {
+				f.delete();
+			}
+			
+		} catch(  CoreException ce ) {
+			// TODO return bad status
+		}
+		return new IStatus[]{Status.OK_STATUS};
+
+	}
+
+	@Override
+	public IStatus[] unpublish(IProgressMonitor monitor) {
+		IModule[] modules = super.getModule();
+		IModule last = modules[modules.length - 1];
+		IStatus[] result = new Status[modules.length];
+		IPath root = createDeploymentDestination(last);
+		PublishUtil.deleteDirectory(root.toFile(), monitor);
+		return result;
+	}
+
+	/**
+	 * This method will create a folder inside the WEB-INF\processes subfolder
+	 * of the ODE installation
+	 */
+	protected IPath createDeploymentDestination(IModule module) {
+		String moduleName = module.getName();
+		String deployAppName = moduleName;
+
+		// get TOMCAT_HOME
+		IRuntime serverDef = getServerRuntime().getRuntime();
+		IPath tomcatHome = serverDef.getLocation();
+
+		// append ODE's Process target Dir tomcatHome
+		IPath deployTarget = tomcatHome.append("webapps").append("ode")
+				.append("WEB-INF").append("processes").append(deployAppName);
+
+		File f = deployTarget.toFile();
+		if (!f.exists()) {
+			f.mkdir();
+		}
+
+		return deployTarget;
+	}
+}