[125721] NPE during publish of external jars
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
index 6c72803..89e2075 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
@@ -9,6 +9,7 @@
**************************************************************************************************/
package org.eclipse.jst.server.generic.core.internal.publishers;
+import java.io.File;
import java.io.IOException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
@@ -106,7 +107,7 @@
return module.getName()+".jar";
}
-
+
private void doPackModule(IModuleResource resource, ModulePackager packager) throws CoreException, IOException{
if (resource instanceof IModuleFolder) {
IModuleFolder mFolder = (IModuleFolder)resource;
@@ -118,12 +119,17 @@
doPackModule(resources[i], packager);
}
} else {
- IFile file = (IFile) resource.getAdapter(IFile.class);
String destination = resource.getModuleRelativePath().append(resource.getName()).toPortableString();
- packager.write(file, destination);
+ IFile file = (IFile) resource.getAdapter(IFile.class);
+ if (file != null)
+ packager.write(file, destination);
+ else {
+ File file2 = (File) resource.getAdapter(File.class);
+ packager.write(file2, destination);
+ }
}
}
-
+
protected IPath copyModule(IModule module,IProgressMonitor monitor)throws CoreException{
ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, monitor);
IPath to = getProjectWorkingLocation().append(pm.getId());
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
index 2777d14..5d7cb89 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
@@ -46,7 +46,6 @@
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IModuleArtifact;
import org.eclipse.wst.server.core.internal.ServerPlugin;
-import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
import org.osgi.framework.Bundle;
/**
* Ant based publisher.
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
index bf1842d..9dbfd03 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
@@ -11,6 +11,7 @@
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -112,6 +113,27 @@
}
}
+ /**
+ * Write the passed resource to the current archive
+ *
+ * @param resource
+ * java.io.IFile
+ * @param destinationPath
+ * java.lang.String
+ * @exception java.io.IOException
+ * @exception org.eclipse.core.runtime.CoreException
+ */
+ public void write(File resource, String destinationPath) throws IOException, CoreException {
+ InputStream contentStream = null;
+ try {
+ contentStream = new FileInputStream(resource);
+ write(contentStream, destinationPath);
+ } finally {
+ if (contentStream != null)
+ contentStream.close();
+ }
+ }
+
public void write(InputStream contentStream, String destinationPath) throws IOException, CoreException {
ByteArrayOutputStream output = null;