You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by sp...@apache.org on 2005/10/26 00:29:02 UTC
svn commit: r328491 - in
/geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core:
internal/GeronimoServerBehaviour.java
operations/AbstractGeronimoJ2EEComponentOperation.java
Author: sppatel
Date: Tue Oct 25 15:28:56 2005
New Revision: 328491
URL: http://svn.apache.org/viewcvs?rev=328491&view=rev
Log:
get IRuntime from ProjectFactetsManager
Modified:
geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/internal/GeronimoServerBehaviour.java
geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/operations/AbstractGeronimoJ2EEComponentOperation.java
Modified: geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/internal/GeronimoServerBehaviour.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/internal/GeronimoServerBehaviour.java?rev=328491&r1=328490&r2=328491&view=diff
==============================================================================
--- geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/internal/GeronimoServerBehaviour.java (original)
+++ geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/internal/GeronimoServerBehaviour.java Tue Oct 25 15:28:56 2005
@@ -56,7 +56,6 @@
import org.apache.geronimo.kernel.jmx.KernelDelegate;
import org.eclipse.core.resources.IProject;
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.Path;
@@ -68,483 +67,480 @@
public class GeronimoServerBehaviour extends GenericServerBehaviour {
- private final static String DEFAULT_URI = "deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector";
+ private final static String DEFAULT_URI = "deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector";
- private final static String J2EE_DEPLOYER_ID = "org/apache/geronimo/RuntimeDeployer";
+ private final static String J2EE_DEPLOYER_ID = "org/apache/geronimo/RuntimeDeployer";
- private static final int MAX_TRIES = 10;
+ private static final int MAX_TRIES = 10;
- private static final long TIMEOUT = 10000;
+ private static final long TIMEOUT = 10000;
- private DeploymentFactoryManager dfm = null;
-
- private DeploymentManager dm = null;
-
- private IProgressMonitor _monitor = null;
-
- private Kernel kernel = null;
-
- public GeronimoServerBehaviour() {
- super();
- }
-
- private void discoverDeploymentFactory() {
-
- try {
- JarFile deployerJar = new JarFile(getServer().getRuntime()
- .getLocation().append("/deployer.jar").toFile());
- java.util.jar.Manifest manifestFile = deployerJar.getManifest();
- Attributes attributes = manifestFile.getMainAttributes();
- String key = "J2EE-DeploymentFactory-Implementation-Class";
- String className = attributes.getValue(key);
- dfm = DeploymentFactoryManager.getInstance();
- Class deploymentFactory = Class.forName(className);
- DeploymentFactory deploymentFactoryInstance = (DeploymentFactory) deploymentFactory
- .newInstance();
- dfm.registerDeploymentFactory(deploymentFactoryInstance);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
-
- public DeploymentManager getDeploymentManager()
- throws DeploymentManagerCreationException {
-
- if (dm == null) {
- discoverDeploymentFactory();
- if (dfm != null) {
- dm = dfm.getDeploymentManager(DEFAULT_URI, getUserName(),
- getPassword());
- } else {
- DeploymentFactory df = new DeploymentFactoryImpl();
- dm = df.getDeploymentManager(DEFAULT_URI, getUserName(),
- getPassword());
- }
- }
- return dm;
- }
-
- private String getUserName() {
- GeronimoServer server = (GeronimoServer) getServer().getAdapter(
- GeronimoServer.class);
- return server.getAdminID();
- }
-
- private String getPassword() {
- GeronimoServer server = (GeronimoServer) getServer().getAdapter(
- GeronimoServer.class);
- return server.getAdminPassword();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#stop(boolean)
- */
- public void stop(boolean force) {
-
- if (getKernel() != null) {
- // lets shutdown the kernel so shutdown messages are displayed in
- // the console view
- kernel.shutdown();
- }
-
- dm = null;
- kernel = null;
-
- // kill the process
- super.stop(true);
- }
-
- private Kernel getKernel() {
-
- int tries = MAX_TRIES;
-
- if (kernel == null) {
-
- Map map = new HashMap();
- map.put("jmx.remote.credentials", new String[] { getUserName(),
- getPassword() });
- try {
- JMXServiceURL address = new JMXServiceURL(
- "service:jmx:rmi://localhost/jndi/rmi:/JMXConnector");
- do {
- try {
-
- JMXConnector jmxConnector = JMXConnectorFactory
- .connect(address, map);
- MBeanServerConnection mbServerConnection = jmxConnector
- .getMBeanServerConnection();
- kernel = new KernelDelegate(mbServerConnection);
- Trace.trace(Trace.INFO, "Connected to kernel.");
- break;
- } catch (Exception e) {
- Thread.sleep(3000);
- tries--;
- if (tries != 0) {
- Trace
- .trace(Trace.WARNING,
- "Couldn't connect to kernel. Trying again...");
- } else {
- Trace.trace(Trace.SEVERE,
- "Connection to Geronimo kernel failed.", e);
- }
- }
- } while (tries > 0);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
-
- return kernel;
- }
-
- protected void setServerStarted() {
-
- boolean started = false;
-
- try {
- ObjectName configName = Configuration
- .getConfigurationObjectName(new URI(J2EE_DEPLOYER_ID));
-
- for (int tries = MAX_TRIES; tries > 0 && !started; tries--) {
- try {
- if (getKernel() != null) {
- if (kernel.getGBeanState(configName) == 1) {
- started = true;
- setServerState(IServer.STATE_STARTED);
- Trace.trace(Trace.INFO,
- "RuntimeDeployer has started.");
- } else {
- Trace.trace(Trace.INFO,
- "RuntimeDeployer has not yet started.");
- }
- }
- } catch (InternalKernelException e) {
- } catch (GBeanNotFoundException e) {
- }
- Thread.sleep(2000);
- }
- } catch (MalformedObjectNameException e) {
- e.printStackTrace();
- } catch (URISyntaxException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- if (!started) {
- Trace.trace(Trace.SEVERE, "Runtime deployer failed to start.");
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#publishModule(int, int, org.eclipse.wst.server.core.IModule[], org.eclipse.core.runtime.IProgressMonitor)
- */
- public void publishModule(int kind, int deltaKind, IModule[] module,
- IProgressMonitor monitor) throws CoreException {
-
- Trace.trace(Trace.INFO, "publishModule()" + module + " "
- + module.length + " deltaKind=" + deltaKind);
-
- _monitor = monitor;
-
- if (deltaKind == NO_CHANGE) {
- Trace.trace(Trace.INFO,
- "deltaKind = NO_CHANGE, returning out of publishModule()");
- return;
- }
-
- if(module.length == 1) {
- invokeCommand(deltaKind, module[0]);
- }
- }
-
- class WaitForNotificationThread extends Thread {
- public void run() {
- try {
- sleep(TIMEOUT);
- Trace.trace(Trace.INFO, "Wait thread TIMEOUT!");
- } catch (InterruptedException e) {
- Trace.trace(Trace.INFO, "Wait thread interrupted");
- }
- }
- }
-
- class GeronimoDeploymentProgressListener implements ProgressListener {
-
- private Thread waitThread;
-
- private CommandType cmd = null;
-
- private IProject project = null;
-
- public String lastMessage = null;
-
- public GeronimoDeploymentProgressListener() {
- waitThread = new WaitForNotificationThread();
- }
-
- public void handleProgressEvent(ProgressEvent event) {
- String message = DeploymentStatusMessageTranslator
- .getTranslatedMessage(event, project);
- if (!message.equals(lastMessage)) {
- _monitor.setTaskName(message);
- Trace.trace(Trace.INFO, message);
- }
- lastMessage = message;
- DeploymentStatus status = event.getDeploymentStatus();
- if (status.getMessage() != null) {
- Trace.trace(Trace.INFO, "\t" + status.getMessage());
- _monitor.subTask(status.getMessage());
- }
-
- if (cmd == null || cmd == status.getCommand()) {
- if (status.isCompleted() || status.isFailed()) {
- waitThread.interrupt();
- }
- }
- }
-
- public void start() {
- waitThread.start();
- }
-
- public void setType(CommandType cmd) {
- this.cmd = cmd;
- }
-
- public Thread getWaitThread() {
- return waitThread;
- }
-
- public void setProject(IProject project) {
- this.project = project;
- }
- }
-
- private void waitForCompletion(ProgressObject po,
- GeronimoDeploymentProgressListener listener, CommandType cmd,
- IProject project) {
-
- listener.setType(cmd);
- listener.setProject(project);
-
- po.addProgressListener(listener);
-
- try {
- listener.getWaitThread().join();
- } catch (InterruptedException e) {
- } finally {
- po.removeProgressListener(listener);
- }
- }
-
- private void invokeCommand(int deltaKind, IModule module)
- throws CoreException {
-
- Trace.trace(Trace.INFO, "calling invokeComand()" + module);
-
- try {
- switch (deltaKind) {
- case ADDED: {
- Trace.trace(Trace.INFO, "calling doDeploy()");
- doDeploy(module);
- break;
- }
- case CHANGED: {
- Trace.trace(Trace.INFO, "calling doRedeploy()");
- doRedeploy(module);
- break;
- }
- case REMOVED: {
- Trace.trace(Trace.INFO, "calling doUndeploy()");
- doUndeploy(module);
- break;
- }
- default:
- throw new IllegalArgumentException();
- }
- } catch (DeploymentManagerCreationException e) {
- e.printStackTrace();
- throw new CoreException(new Status(IStatus.ERROR,
- GeronimoPlugin.PLUGIN_ID, 0, e.getMessage(), e));
- }
- }
-
- private void doDeploy(IModule module) throws CoreException,
- DeploymentManagerCreationException {
-
- J2EEFlexProjDeployable j2eeModule = (J2EEFlexProjDeployable) module.loadAdapter(
- J2EEFlexProjDeployable.class, null);
-
- Target[] targets = getDeploymentManager().getTargets();
- File jarFile = createJarFile(new Path(j2eeModule.getURI(module)));
-
- GeronimoDeploymentProgressListener listener = createAndStartListener();
-
- ProgressObject po = getDeploymentManager().distribute(targets, jarFile,
- null);
- waitForCompletion(po, listener, CommandType.DISTRIBUTE, module
- .getProject());
-
- if (po.getDeploymentStatus().isCompleted()) {
- listener = createAndStartListener();
-
- po = getDeploymentManager().start(po.getResultTargetModuleIDs());
- waitForCompletion(po, listener, CommandType.START, module
- .getProject());
-
- if (po.getDeploymentStatus().isCompleted()) {
- } else if (po.getDeploymentStatus().isFailed()) {
- // TODO handle fail
- }
- } else if (po.getDeploymentStatus().isFailed()) {
- IStatus status = new Status(
- IStatus.ERROR,
- GeronimoPlugin.PLUGIN_ID,
- 0,
- "Distribution of application failed. See .log for details.",
- new Exception(listener.lastMessage));
- throw new CoreException(status);
- }
- }
-
- private void doRedeploy(IModule module) throws CoreException,
- DeploymentManagerCreationException {
-
- J2EEFlexProjDeployable j2eeModule = (J2EEFlexProjDeployable) module.loadAdapter(
- J2EEFlexProjDeployable.class, null);
-
- TargetModuleID id = getTargetModuleID(module);
- if (id != null) {
- File jarFile = createJarFile(new Path(j2eeModule.getURI(module)));
- GeronimoDeploymentProgressListener listener = createAndStartListener();
- ProgressObject po = getDeploymentManager().redeploy(
- new TargetModuleID[] { id }, jarFile, null);
- waitForCompletion(po, listener, CommandType.REDEPLOY, module
- .getProject());
- if (po.getDeploymentStatus().isCompleted()) {
-
- } else if (po.getDeploymentStatus().isFailed()) {
- // TODO handle fail
- }
- }
- }
-
- private void doUndeploy(IModule module) throws CoreException,
- DeploymentManagerCreationException {
- TargetModuleID id = getTargetModuleID(module);
- if (id != null) {
- GeronimoDeploymentProgressListener listener = createAndStartListener();
- ProgressObject po = getDeploymentManager().undeploy(
- new TargetModuleID[] { id });
- waitForCompletion(po, listener, CommandType.UNDEPLOY, module
- .getProject());
- if (po.getDeploymentStatus().isCompleted()) {
- } else if (po.getDeploymentStatus().isFailed()) {
- // TODO handle fail
- }
- }
- }
-
- private GeronimoDeploymentProgressListener createAndStartListener() {
- GeronimoDeploymentProgressListener listener = new GeronimoDeploymentProgressListener();
- listener.start();
- return listener;
- }
-
- // TODO find a better way to get TargetModuleID for IModule
- private TargetModuleID getTargetModuleID(IModule module)
- throws DeploymentManagerCreationException {
- try {
- TargetModuleID ids[] = getDeploymentManager().getAvailableModules(
- GeronimoUtils.getJSR88ModuleType(module),
- getDeploymentManager().getTargets());
- if (ids != null) {
- for (int i = 0; i < ids.length; i++) {
- if (ids[i].getModuleID().equals(
- GeronimoUtils.getConfigId(module))) {
- return ids[i];
- }
- }
- }
- } catch (IllegalStateException e) {
- e.printStackTrace();
- } catch (TargetException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- private File createJarFile(IPath location) {
-
- try {
-
- String rootFilename = location.toOSString();
-
- File rootDir = new File(rootFilename);
- String zipFilePrefix = rootDir.getName();
- if (zipFilePrefix.length() < 3)
- zipFilePrefix += "123";
- File zipFile = File.createTempFile(zipFilePrefix, null);
-
- if (zipFile.exists())
- zipFile.delete();
-
- FileOutputStream fos = new FileOutputStream(zipFile);
- JarOutputStream jos = new JarOutputStream(fos);
-
- addToJar("", rootDir, jos);
-
- jos.close();
- fos.close();
-
- zipFile.deleteOnExit();
-
- return zipFile;
-
- } catch (IOException e) {
- Trace.trace(Trace.SEVERE, "Error creating zip file", e);
- return null;
- }
- }
-
- private void addToJar(String namePrefix, File dir, JarOutputStream jos)
- throws IOException {
- File[] contents = dir.listFiles();
- for (int i = 0; i < contents.length; i++) {
- File f = contents[i];
- if (f.isDirectory()) {
- // Recurse into the directory
- addToJar(namePrefix + f.getName() + "/", f, jos);
- } else {
- JarEntry entry = new JarEntry(namePrefix + f.getName());
- jos.putNextEntry(entry);
-
- byte[] buffer = new byte[10000];
- FileInputStream fis = new FileInputStream(f);
- int bytesRead = 0;
- while (bytesRead != -1) {
- bytesRead = fis.read(buffer);
- if (bytesRead > 0)
- jos.write(buffer, 0, bytesRead);
- }
- }
- }
- }
-
- public Map getServerInstanceProperties() {
- return getRuntimeDelegate().getServerInstanceProperties();
- }
+ private DeploymentFactoryManager dfm = null;
+
+ private DeploymentManager dm = null;
+
+ private IProgressMonitor _monitor = null;
+
+ private Kernel kernel = null;
+
+ public GeronimoServerBehaviour() {
+ super();
+ }
+
+ private void discoverDeploymentFactory() {
+
+ try {
+ JarFile deployerJar = new JarFile(getServer().getRuntime()
+ .getLocation().append("/deployer.jar").toFile());
+ java.util.jar.Manifest manifestFile = deployerJar.getManifest();
+ Attributes attributes = manifestFile.getMainAttributes();
+ String key = "J2EE-DeploymentFactory-Implementation-Class";
+ String className = attributes.getValue(key);
+ dfm = DeploymentFactoryManager.getInstance();
+ Class deploymentFactory = Class.forName(className);
+ DeploymentFactory deploymentFactoryInstance = (DeploymentFactory) deploymentFactory
+ .newInstance();
+ dfm.registerDeploymentFactory(deploymentFactoryInstance);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public DeploymentManager getDeploymentManager()
+ throws DeploymentManagerCreationException {
+
+ if (dm == null) {
+ discoverDeploymentFactory();
+ if (dfm != null) {
+ dm = dfm.getDeploymentManager(DEFAULT_URI, getUserName(),
+ getPassword());
+ } else {
+ DeploymentFactory df = new DeploymentFactoryImpl();
+ dm = df.getDeploymentManager(DEFAULT_URI, getUserName(),
+ getPassword());
+ }
+ }
+ return dm;
+ }
+
+ private String getUserName() {
+ GeronimoServer server = (GeronimoServer) getServer().getAdapter(
+ GeronimoServer.class);
+ return server.getAdminID();
+ }
+
+ private String getPassword() {
+ GeronimoServer server = (GeronimoServer) getServer().getAdapter(
+ GeronimoServer.class);
+ return server.getAdminPassword();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#stop(boolean)
+ */
+ public void stop(boolean force) {
+
+ if (getKernel() != null) {
+ // lets shutdown the kernel so shutdown messages are displayed in
+ // the console view
+ kernel.shutdown();
+ }
+
+ dm = null;
+ kernel = null;
+
+ // kill the process
+ super.stop(true);
+ }
+
+ private Kernel getKernel() {
+
+ int tries = MAX_TRIES;
+
+ if (kernel == null) {
+
+ Map map = new HashMap();
+ map.put("jmx.remote.credentials", new String[] { getUserName(),
+ getPassword() });
+ try {
+ JMXServiceURL address = new JMXServiceURL(
+ "service:jmx:rmi://localhost/jndi/rmi:/JMXConnector");
+ do {
+ try {
+
+ JMXConnector jmxConnector = JMXConnectorFactory
+ .connect(address, map);
+ MBeanServerConnection mbServerConnection = jmxConnector
+ .getMBeanServerConnection();
+ kernel = new KernelDelegate(mbServerConnection);
+ Trace.trace(Trace.INFO, "Connected to kernel.");
+ break;
+ } catch (Exception e) {
+ Thread.sleep(3000);
+ tries--;
+ if (tries != 0) {
+ Trace
+ .trace(Trace.WARNING,
+ "Couldn't connect to kernel. Trying again...");
+ } else {
+ Trace.trace(Trace.SEVERE,
+ "Connection to Geronimo kernel failed.", e);
+ }
+ }
+ } while (tries > 0);
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return kernel;
+ }
+
+ protected void setServerStarted() {
+
+ boolean started = false;
+
+ try {
+ ObjectName configName = Configuration
+ .getConfigurationObjectName(new URI(J2EE_DEPLOYER_ID));
+
+ for (int tries = MAX_TRIES; tries > 0 && !started; tries--) {
+ try {
+ if (getKernel() != null) {
+ if (kernel.getGBeanState(configName) == 1) {
+ started = true;
+ setServerState(IServer.STATE_STARTED);
+ Trace.trace(Trace.INFO,
+ "RuntimeDeployer has started.");
+ } else {
+ Trace.trace(Trace.INFO,
+ "RuntimeDeployer has not yet started.");
+ }
+ }
+ } catch (InternalKernelException e) {
+ } catch (GBeanNotFoundException e) {
+ }
+ Thread.sleep(2000);
+ }
+ } catch (MalformedObjectNameException e) {
+ e.printStackTrace();
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ if (!started) {
+ Trace.trace(Trace.SEVERE, "Runtime deployer failed to start.");
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#publishModule(int,
+ * int, org.eclipse.wst.server.core.IModule[],
+ * org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void publishModule(int kind, int deltaKind, IModule[] module,
+ IProgressMonitor monitor) throws CoreException {
+
+ Trace.trace(Trace.INFO, "publishModule()" + module + " "
+ + module.length + " deltaKind=" + deltaKind);
+
+ _monitor = monitor;
+
+ if (deltaKind == NO_CHANGE) {
+ Trace.trace(Trace.INFO,
+ "deltaKind = NO_CHANGE, returning out of publishModule()");
+ return;
+ }
+
+ if (module.length == 1) {
+ invokeCommand(deltaKind, module[0]);
+ }
+ }
+
+ class WaitForNotificationThread extends Thread {
+ public void run() {
+ try {
+ sleep(TIMEOUT);
+ Trace.trace(Trace.INFO, "Wait thread TIMEOUT!");
+ } catch (InterruptedException e) {
+ Trace.trace(Trace.INFO, "Wait thread interrupted");
+ }
+ }
+ }
+
+ class GeronimoDeploymentProgressListener implements ProgressListener {
+
+ private Thread waitThread;
+
+ private CommandType cmd = null;
+
+ private IProject project = null;
+
+ public String lastMessage = null;
+
+ public GeronimoDeploymentProgressListener() {
+ waitThread = new WaitForNotificationThread();
+ }
+
+ public void handleProgressEvent(ProgressEvent event) {
+ String message = DeploymentStatusMessageTranslator
+ .getTranslatedMessage(event, project);
+ if (!message.equals(lastMessage)) {
+ _monitor.setTaskName(message);
+ Trace.trace(Trace.INFO, message);
+ }
+ lastMessage = message;
+ DeploymentStatus status = event.getDeploymentStatus();
+ if (status.getMessage() != null) {
+ Trace.trace(Trace.INFO, "\t" + status.getMessage());
+ _monitor.subTask(status.getMessage());
+ }
+
+ if (cmd == null || cmd == status.getCommand()) {
+ if (status.isCompleted() || status.isFailed()) {
+ waitThread.interrupt();
+ }
+ }
+ }
+
+ public void start() {
+ waitThread.start();
+ }
+
+ public void setType(CommandType cmd) {
+ this.cmd = cmd;
+ }
+
+ public Thread getWaitThread() {
+ return waitThread;
+ }
+
+ public void setProject(IProject project) {
+ this.project = project;
+ }
+ }
+
+ private void waitForCompletion(ProgressObject po,
+ GeronimoDeploymentProgressListener listener, CommandType cmd,
+ IProject project) {
+
+ listener.setType(cmd);
+ listener.setProject(project);
+
+ po.addProgressListener(listener);
+
+ try {
+ listener.getWaitThread().join();
+ } catch (InterruptedException e) {
+ } finally {
+ po.removeProgressListener(listener);
+ }
+ }
+
+ private void invokeCommand(int deltaKind, IModule module)
+ throws CoreException {
+
+ Trace.trace(Trace.INFO, "calling invokeComand()" + module);
+
+ try {
+ switch (deltaKind) {
+ case ADDED: {
+ Trace.trace(Trace.INFO, "calling doDeploy()");
+ doDeploy(module);
+ break;
+ }
+ case CHANGED: {
+ Trace.trace(Trace.INFO, "calling doRedeploy()");
+ doRedeploy(module);
+ break;
+ }
+ case REMOVED: {
+ Trace.trace(Trace.INFO, "calling doUndeploy()");
+ doUndeploy(module);
+ break;
+ }
+ default:
+ throw new IllegalArgumentException();
+ }
+ } catch (DeploymentManagerCreationException e) {
+ e.printStackTrace();
+ throw new CoreException(new Status(IStatus.ERROR,
+ GeronimoPlugin.PLUGIN_ID, 0, e.getMessage(), e));
+ }
+ }
+
+ private void doDeploy(IModule module) throws CoreException,
+ DeploymentManagerCreationException {
+
+ Target[] targets = getDeploymentManager().getTargets();
+ GeronimoDeploymentProgressListener listener = createAndStartListener();
+ File jarFile = createJarFile(module);
+ ProgressObject po = getDeploymentManager().distribute(targets, jarFile,
+ null);
+ waitForCompletion(po, listener, CommandType.DISTRIBUTE, module
+ .getProject());
+
+ if (po.getDeploymentStatus().isCompleted()) {
+ listener = createAndStartListener();
+ po = getDeploymentManager().start(po.getResultTargetModuleIDs());
+ waitForCompletion(po, listener, CommandType.START, module
+ .getProject());
+ if (po.getDeploymentStatus().isCompleted()) {
+ //TODO
+ } else if (po.getDeploymentStatus().isFailed()) {
+ //TODO
+ }
+ } else if (po.getDeploymentStatus().isFailed()) {
+ IStatus status = new Status(
+ IStatus.ERROR,
+ GeronimoPlugin.PLUGIN_ID,
+ 0,
+ "Distribution of application failed. See .log for details.",
+ new Exception(listener.lastMessage));
+ throw new CoreException(status);
+ }
+ }
+
+ private void doRedeploy(IModule module) throws CoreException,
+ DeploymentManagerCreationException {
+
+ TargetModuleID id = getTargetModuleID(module);
+ if (id != null) {
+ File jarFile = createJarFile(module);
+ GeronimoDeploymentProgressListener listener = createAndStartListener();
+ ProgressObject po = getDeploymentManager().redeploy(
+ new TargetModuleID[] { id }, jarFile, null);
+ waitForCompletion(po, listener, CommandType.REDEPLOY, module
+ .getProject());
+ if (po.getDeploymentStatus().isCompleted()) {
+ //TODO
+ } else if (po.getDeploymentStatus().isFailed()) {
+ //TODO
+ }
+ }
+ }
+
+ private void doUndeploy(IModule module) throws CoreException,
+ DeploymentManagerCreationException {
+ TargetModuleID id = getTargetModuleID(module);
+ if (id != null) {
+ GeronimoDeploymentProgressListener listener = createAndStartListener();
+ ProgressObject po = getDeploymentManager().undeploy(
+ new TargetModuleID[] { id });
+ waitForCompletion(po, listener, CommandType.UNDEPLOY, module
+ .getProject());
+ if (po.getDeploymentStatus().isCompleted()) {
+ //TODO
+ } else if (po.getDeploymentStatus().isFailed()) {
+ //TODO
+ }
+ }
+ }
+
+ private GeronimoDeploymentProgressListener createAndStartListener() {
+ GeronimoDeploymentProgressListener listener = new GeronimoDeploymentProgressListener();
+ listener.start();
+ return listener;
+ }
+
+ // TODO find a better way to get TargetModuleID for IModule
+ private TargetModuleID getTargetModuleID(IModule module)
+ throws DeploymentManagerCreationException {
+ try {
+ TargetModuleID ids[] = getDeploymentManager().getAvailableModules(
+ GeronimoUtils.getJSR88ModuleType(module),
+ getDeploymentManager().getTargets());
+ if (ids != null) {
+ for (int i = 0; i < ids.length; i++) {
+ if (ids[i].getModuleID().equals(
+ GeronimoUtils.getConfigId(module))) {
+ return ids[i];
+ }
+ }
+ }
+ } catch (IllegalStateException e) {
+ e.printStackTrace();
+ } catch (TargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private File createJarFile(IModule module) {
+ J2EEFlexProjDeployable j2eeModule = (J2EEFlexProjDeployable) module
+ .loadAdapter(J2EEFlexProjDeployable.class, null);
+
+ Path path = new Path(j2eeModule.getURI(module));
+
+ try {
+ File rootDir = new File(path.toOSString());
+ String zipFilePrefix = rootDir.getName();
+ if (zipFilePrefix.length() < 3)
+ zipFilePrefix += "123";
+ File zipFile = File.createTempFile(zipFilePrefix, null);
+
+ if (zipFile.exists())
+ zipFile.delete();
+
+ FileOutputStream fos = new FileOutputStream(zipFile);
+ JarOutputStream jos = new JarOutputStream(fos);
+
+ addToJar("", rootDir, jos);
+
+ jos.close();
+ fos.close();
+
+ zipFile.deleteOnExit();
+
+ return zipFile;
+
+ } catch (IOException e) {
+ Trace.trace(Trace.SEVERE, "Error creating zip file", e);
+ return null;
+ }
+ }
+
+ private void addToJar(String namePrefix, File dir, JarOutputStream jos)
+ throws IOException {
+ File[] contents = dir.listFiles();
+ for (int i = 0; i < contents.length; i++) {
+ File f = contents[i];
+ if (f.isDirectory()) {
+ // Recurse into the directory
+ addToJar(namePrefix + f.getName() + "/", f, jos);
+ } else {
+ JarEntry entry = new JarEntry(namePrefix + f.getName());
+ jos.putNextEntry(entry);
+
+ byte[] buffer = new byte[10000];
+ FileInputStream fis = new FileInputStream(f);
+ int bytesRead = 0;
+ while (bytesRead != -1) {
+ bytesRead = fis.read(buffer);
+ if (bytesRead > 0)
+ jos.write(buffer, 0, bytesRead);
+ }
+ }
+ }
+ }
+
+ public Map getServerInstanceProperties() {
+ return getRuntimeDelegate().getServerInstanceProperties();
+ }
}
Modified: geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/operations/AbstractGeronimoJ2EEComponentOperation.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/operations/AbstractGeronimoJ2EEComponentOperation.java?rev=328491&r1=328490&r2=328491&view=diff
==============================================================================
--- geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/operations/AbstractGeronimoJ2EEComponentOperation.java (original)
+++ geronimo/devtools/trunk/modules/eclipse-plugin/plugins/org.apache.geronimo.devtools.eclipse.core/src/org/apache/geronimo/core/operations/AbstractGeronimoJ2EEComponentOperation.java Tue Oct 25 15:28:56 2005
@@ -18,13 +18,17 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.j2ee.project.facet.IFacetProjectCreationDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IComponentCreationDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFlexibleProjectCreationDataModelProperties;
import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.ServerCore;
@@ -68,11 +72,13 @@
}
public boolean isGeronimoRuntimeTarget() {
-
- IRuntime runtime = ServerCore.getProjectProperties(getProject())
- .getRuntimeTarget();
- return runtime.getName().startsWith("Apache Geronimo");
-
+ try {
+ IFacetedProject p = ProjectFacetsManager.create(getProject());
+ return p.getRuntime().getName().startsWith("Apache Geronimo");
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ return false;
}
public String getComponentName() {