Author: jgallimore
Date: Sun Aug  3 11:25:09 2008
New Revision: 682198

URL: http://svn.apache.org/viewvc?rev=682198&view=rev
Log:
OPENEJB-869, OPENEJB-876 Changed server plugin to use WTP EJB export and fixed 
threading issue

Modified:
    
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/META-INF/MANIFEST.MF
    
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeDelegate.java
    
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/META-INF/MANIFEST.MF?rev=682198&r1=682197&r2=682198&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/META-INF/MANIFEST.MF
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/META-INF/MANIFEST.MF
 Sun Aug  3 11:25:09 2008
@@ -29,7 +29,10 @@
  org.eclipse.wst.server.core,
  org.eclipse.debug.core,
  org.eclipse.debug.ui,
- org.eclipse.jdt.debug.ui
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.jst.j2ee.ejb,
+ org.eclipse.jst.j2ee
 Bundle-ClassPath: target/classes/,
  .
 Bundle-Activator: org.apache.openejb.eclipse.server.Activator

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeDelegate.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeDelegate.java?rev=682198&r1=682197&r2=682198&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeDelegate.java
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeDelegate.java
 Sun Aug  3 11:25:09 2008
@@ -62,7 +62,7 @@
        }
 
        private File getFileWithPrefix(String prefix, String suffix) {
-               File libFolder = new 
File(this.getRuntimeWorkingCopy().getLocation().toString() + File.separator + 
"lib");
+               File libFolder = new 
File(this.getRuntime().getLocation().toString() + File.separator + "lib");
                if (! (libFolder.exists() && libFolder.isDirectory())) {
                        return null;
                }

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java?rev=682198&r1=682197&r2=682198&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
 Sun Aug  3 11:25:09 2008
@@ -18,21 +18,14 @@
 
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
 
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -45,13 +38,13 @@
 import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
 import org.eclipse.jdt.launching.IVMInstall;
 import org.eclipse.jdt.launching.JavaRuntime;
+import 
org.eclipse.jst.j2ee.ejb.datamodel.properties.IEJBComponentExportDataModelProperties;
+import 
org.eclipse.jst.j2ee.internal.ejb.project.operations.EJBComponentExportDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.model.IModuleFile;
-import org.eclipse.wst.server.core.model.IModuleFolder;
-import org.eclipse.wst.server.core.model.IModuleResource;
 import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
-import org.eclipse.wst.server.core.util.ProjectModule;
 
 public class OpenEJBServerBehaviour extends ServerBehaviourDelegate {
 
@@ -102,6 +95,7 @@
                                        setServerState(IServer.STATE_STOPPED);
                                        running = false;
                                        cleanup();
+                                       throw new ServerStoppedException();
                                }
                                // server might not be started yet
                        }
@@ -211,7 +205,7 @@
                // if module already published, try an undeploy first, and 
cleanup temp file
                String jarFile = publishedModules.get(module);
                if (jarFile != null) {
-                       serverDeployer.undeploy(jarFile);
+                       boolean undeployed = serverDeployer.undeploy(jarFile);
                        new File(jarFile).delete();
                        publishedModules.remove(module);
                }
@@ -256,74 +250,17 @@
 
        protected String exportModule(IModule module) {
                try {
-                       ProjectModule projectModule = (ProjectModule) 
module.loadAdapter(ProjectModule.class, null);
-                       if (projectModule == null) {
-                               return null;
-                       }
-                       
-                       IModuleResource[] members = projectModule.members();
-
                        File tempJarFile = File.createTempFile("oejb", ".jar");
-                       ZipOutputStream zos = new ZipOutputStream(new 
FileOutputStream(tempJarFile));
-                       
-                       for (IModuleResource resource : members) {
-                               IPath projectLocation = 
module.getProject().getLocation();
-                               writeResourceToZipStream(zos, resource, 
projectLocation);
-                       }
-                       
-                       zos.close();
-                       
-                       return tempJarFile.getAbsolutePath();
-               } catch (Exception e) {
-                       return null;
-               }
-       }
-       
-       private void writeResourceToZipStream(ZipOutputStream zipStream, 
IModuleResource resource, IPath projectLocation) throws IOException, 
FileNotFoundException {
-               byte[] buffer = new byte[8192];
-               if (resource instanceof IModuleFile) {
-                       IPath relativePath = 
resource.getModuleRelativePath().append("/" + resource.getName());
 
-                       try {
-                               Field fileField = null;
-                               try {
-                                       fileField = 
resource.getClass().getDeclaredField("file");
-                               } catch (Exception e) {
-                               }
+                       IDataModel model = DataModelFactory.createDataModel(new 
EJBComponentExportDataModelProvider());
 
-                               if (fileField == null) {
-                                       try {
-                                               fileField = 
resource.getClass().getSuperclass().getDeclaredField("file");
-                                       } catch (Exception e) {
-                                       }
-                               }
-                               
-                               if (fileField == null) {
-                                       return;
-                               }
-                               
-                               fileField.setAccessible(true);
-                               IFile obj = (IFile) fileField.get(resource);
-                               InputStream is = obj.getContents();
-
-                               ZipEntry zipEntry = new 
ZipEntry(relativePath.toString());
-                               zipStream.putNextEntry(zipEntry);
-
-                               int bytesRead = -1;
-                               while ((bytesRead = is.read(buffer)) > 0) {
-                                       zipStream.write(buffer, 0, bytesRead);
-                               }
+                       
model.setProperty(IEJBComponentExportDataModelProperties.PROJECT_NAME, 
module.getProject().getName());
+                       
model.setProperty(IEJBComponentExportDataModelProperties.ARCHIVE_DESTINATION, 
tempJarFile.getAbsolutePath());
+                       model.getDefaultOperation().execute(null, null);
 
-                               is.close();
-                               zipStream.closeEntry();
-                       } catch (Exception e) {
-                               e.printStackTrace();
-                       }
-               } else if (resource instanceof IModuleFolder) {
-                       IModuleResource[] resources = ((IModuleFolder) 
resource).members();
-                       for (IModuleResource childResource : resources) {
-                               writeResourceToZipStream(zipStream, 
childResource, projectLocation);
-                       }
+                       return tempJarFile.getAbsolutePath();
+               } catch (Exception e) {
+                       return null;
                }
        }
 }


Reply via email to