You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2011/04/07 22:02:14 UTC
svn commit: r1089967 - in
/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core:
./ src/main/java/org/apache/geronimo/st/v30/core/
src/main/java/org/apache/geronimo/st/v30/core/commands/
src/main/java/org/apache/geronimo/st/v3...
Author: gawor
Date: Thu Apr 7 20:01:45 2011
New Revision: 1089967
URL: http://svn.apache.org/viewvc?rev=1089967&view=rev
Log:
GERONIMODEVTOOLS-733, GERONIMODEVTOOLS-734: Better error handling when module fails to export and support for OSGi fragment bundles
Modified:
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/DeploymentUtils.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoUtils.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/commands/DeployCommand.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/AriesHelper.java
geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/OsgiConstants.java
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml Thu Apr 7 20:01:45 2011
@@ -43,6 +43,7 @@
<moduleType types="jst.appclient" versions="1.2, 1.3, 1.4, 5.0, 6.0"/>
<moduleType types="osgi.app" versions="1.0"/>
<moduleType types="osgi.bundle" versions="1.0"/>
+ <moduleType types="osgi.fragment" versions="1.0"/>
<moduleType types="osgi.comp" versions="1.0"/>
</runtimeType>
</extension>
@@ -146,6 +147,7 @@
<runtime-component id="org.apache.geronimo.runtime.osgi" version="3.0"/>
<facet id="osgi.app" version="1.0"/>
<facet id="osgi.bundle" version="1.0"/>
+ <facet id="osgi.fragment" version="1.0"/>
<facet id="osgi.comp" version="1.0"/>
</supported>
</extension>
@@ -450,6 +452,8 @@
class="com.ibm.etools.aries.internal.core.datatransfer.exportmodel.ApplicationExportDataModelProvider"/>
<DataModelProvider id="osgi.bundle.datamodelprovider"
class="com.ibm.etools.aries.internal.core.datatransfer.exportmodel.BundleExportDataModelProvider"/>
+ <DataModelProvider id="osgi.fragment.datamodelprovider"
+ class="com.ibm.etools.aries.internal.core.datatransfer.exportmodel.BundleExportDataModelProvider"/>
</extension>
</plugin>
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/DeploymentUtils.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/DeploymentUtils.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/DeploymentUtils.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/DeploymentUtils.java Thu Apr 7 20:01:45 2011
@@ -118,41 +118,55 @@ public class DeploymentUtils {
return null;
}
+ public static File getTargetFile(IServer server, IModule module) {
+ File file = null;
+ IGeronimoServer gs = (IGeronimoServer) server.getAdapter(IGeronimoServer.class);
+ if (gs.isRunFromWorkspace()) {
+ //TODO Re-enable after DeployableModule supported in G
+ //file = generateRunFromWorkspaceConfig(getModule());
+ } else {
+ IPath outputDir = DeploymentUtils.STATE_LOC.append("server_" + server.getId());
+ outputDir.toFile().mkdirs();
+ file = DeploymentUtils.createJarFile(module, outputDir);
+ }
+ return file;
+ }
private static String getModuleExtension(IModule module) {
Trace.tracePoint("Entry", "DeploymentUtils.getModuleExtension", module);
+ String extension = null;
+
if (GeronimoUtils.isEarModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", ".ear");
- return ".ear";
+ extension = ".ear";
}
else if (GeronimoUtils.isWebModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", ".war");
- return ".war";
+ extension = ".war";
}
else if (GeronimoUtils.isRARModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", ".rar");
- return ".rar";
+ extension = ".rar";
}
else if (GeronimoUtils.isAppClientModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", ".car");
- return ".car";
+ extension = ".car";
}
else if (GeronimoUtils.isEBAModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", OsgiConstants.APPLICATION_EXTENSION);
- return OsgiConstants.APPLICATION_EXTENSION;
+ extension = OsgiConstants.APPLICATION_EXTENSION;
}
else if (GeronimoUtils.isCBAModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", OsgiConstants.COMPOSITE_BUNDLE_EXTENSION);
- return OsgiConstants.COMPOSITE_BUNDLE_EXTENSION;
+ extension = OsgiConstants.COMPOSITE_BUNDLE_EXTENSION;
}
else if (GeronimoUtils.isBundleModule(module)) {
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", OsgiConstants.BUNDLE_EXTENSION);
- return OsgiConstants.BUNDLE_EXTENSION;
+ extension = OsgiConstants.BUNDLE_EXTENSION;
+ }
+ else if (GeronimoUtils.isFragmentBundleModule(module)) {
+ extension = OsgiConstants.FRAGMENT_BUNDLE_EXTENSION;
+ }
+ else {
+ extension = ".jar";
}
- Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", ".jar");
- return ".jar";
+ Trace.tracePoint("Exit ", "DeploymentUtils.getModuleExtension", extension);
+ return extension;
}
@@ -160,7 +174,8 @@ public class DeploymentUtils {
Trace.tracePoint("Entry", "DeploymentUtils.createJarFile", module, outputPath);
IDataModel model = getExportDataModel(module);
-
+ File exportedFile = null;
+
if (model != null) {
IVirtualComponent comp = ComponentCore.createComponent(module.getProject());
@@ -177,19 +192,16 @@ public class DeploymentUtils {
model.setBooleanProperty(J2EEComponentExportDataModelProvider.OVERWRITE_EXISTING, true);
model.setBooleanProperty(J2EEComponentExportDataModelProvider.RUN_BUILD, false);
- if (model != null) {
- try {
- model.getDefaultOperation().execute(null, null);
- Trace.tracePoint("Exit ", "DeploymentUtils.createJarFile",new File(model.getStringProperty(J2EEComponentExportDataModelProvider.ARCHIVE_DESTINATION)));
- return new File(model.getStringProperty(J2EEComponentExportDataModelProvider.ARCHIVE_DESTINATION));
- } catch (ExecutionException e) {
- e.printStackTrace();
- }
- }
+ try {
+ model.getDefaultOperation().execute(null, null);
+ exportedFile = new File(model.getStringProperty(J2EEComponentExportDataModelProvider.ARCHIVE_DESTINATION));
+ } catch (ExecutionException e) {
+ Trace.trace(Trace.SEVERE, "Error exporting module", e);
+ }
}
- Trace.tracePoint("Exit ", "DeploymentUtils.createJarFile", null);
- return null;
+ Trace.tracePoint("Exit ", "DeploymentUtils.createJarFile", exportedFile);
+ return exportedFile;
}
@@ -219,6 +231,9 @@ public class DeploymentUtils {
else if (OsgiConstants.BUNDLE.equals(type)) {
return DataModelFactory.createDataModel(OsgiConstants.BUNDLE_DATAMODEL_PROVIDER_ID);
}
+ else if (OsgiConstants.FRAGMENT_BUNDLE.equals(type)) {
+ return DataModelFactory.createDataModel(OsgiConstants.FRAGMENT_BUNDLE_DATAMODEL_PROVIDER_ID);
+ }
}
Trace.tracePoint("Exit ", "DeploymentUtils.getExportDataModel", (Object) null);
@@ -291,7 +306,7 @@ public class DeploymentUtils {
} catch (TargetModuleIdNotFoundException e) {
Trace.trace(Trace.INFO, e.getMessage());
}
-
+
if(query != currentId) {
try {
getTargetModuleID(dm, currentId);
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java Thu Apr 7 20:01:45 2011
@@ -418,7 +418,10 @@ abstract public class GeronimoServerBeha
Messages.REFRESH_NO_CONFIGURATION_FAIL, ebaModule.getProject().getName()));
}
AbstractName abstractName = dm.getApplicationGBeanName(Artifact.create(configId));
- File file = getTargetFile(bundleModule);
+ File file = DeploymentUtils.getTargetFile(getServer(), bundleModule);
+ if (file == null) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.bind(Messages.moduleExportError, bundleModule.getProject().getName()));
+ }
String bundleId = ModuleArtifactMapper.getInstance().resolveBundle(getServer(), ebaModule, bundleModule);
if (bundleId != null) {
dm.updateEBAContent(abstractName, Long.parseLong(bundleId), file);
@@ -432,25 +435,6 @@ abstract public class GeronimoServerBeha
return Status.OK_STATUS;
}
-
-
- // copied from org.apache.geronimo.st.v30.core.commands.DeployCommand.java
- private File getTargetFile(IModule module) {
-
- File file = null;
- IGeronimoServer gs = getGeronimoServer();
- if (gs.isRunFromWorkspace()) {
- //TODO Re-enable after DeployableModule supported in G
- //file = generateRunFromWorkspaceConfig(getModule());
- }
- else {
- IPath outputDir = DeploymentUtils.STATE_LOC.append("server_" + getServer().getId());
- outputDir.toFile().mkdirs();
- file = DeploymentUtils.createJarFile(module, outputDir);
- }
-
- return file;
- }
private static class ModuleList {
private final IModule rootModule;
@@ -1403,7 +1387,12 @@ abstract public class GeronimoServerBeha
Trace.tracePoint("Entry", "GeronimoServerBehaviourDelegate.canControlModule", Arrays.asList(module));
// Enable start/stop for top-level modules only
if (module.length == 1) {
- return true;
+ if (GeronimoUtils.isFragmentBundleModule(module[0])) {
+ // fragment bundles cannot be started/stopped
+ return false;
+ } else {
+ return true;
+ }
} else {
return false;
}
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoUtils.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoUtils.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoUtils.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoUtils.java Thu Apr 7 20:01:45 2011
@@ -16,7 +16,6 @@
*/
package org.apache.geronimo.st.v30.core;
-import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.jar.Manifest;
@@ -101,6 +100,10 @@ public class GeronimoUtils {
return OsgiConstants.BUNDLE.equals(module.getModuleType().getId());
}
+ public static boolean isFragmentBundleModule(IModule module) {
+ return OsgiConstants.FRAGMENT_BUNDLE.equals(module.getModuleType().getId());
+ }
+
public static ModuleType getJSR88ModuleType(IModule module) {
if (isWebModule(module)) {
return ModuleType.WAR;
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/commands/DeployCommand.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/commands/DeployCommand.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/commands/DeployCommand.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/commands/DeployCommand.java Thu Apr 7 20:01:45 2011
@@ -18,10 +18,13 @@ package org.apache.geronimo.st.v30.core.
import java.io.File;
+import org.apache.geronimo.st.v30.core.Activator;
import org.apache.geronimo.st.v30.core.DeploymentUtils;
-import org.apache.geronimo.st.v30.core.IGeronimoServer;
+import org.apache.geronimo.st.v30.core.internal.Messages;
import org.apache.geronimo.st.v30.core.internal.Trace;
-import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
@@ -48,19 +51,15 @@ abstract public class DeployCommand exte
*
* @return A File representation of the zipped/jar file
*/
- public File getTargetFile() {
+ public File getTargetFile() throws CoreException {
Trace.tracePoint("Entry", "DeployCommand.getTargetFile");
- File file = null;
- IGeronimoServer gs = getGeronimoServer();
- if (gs.isRunFromWorkspace()) {
- //TODO Re-enable after DeployableModule supported in G
- //file = generateRunFromWorkspaceConfig(getModule());
- }
- else {
- IPath outputDir = DeploymentUtils.STATE_LOC.append("server_" + getServer().getId());
- outputDir.toFile().mkdirs();
- file = DeploymentUtils.createJarFile(getModule(), outputDir);
+ IModule module = getModule();
+ File file = DeploymentUtils.getTargetFile(getServer(), module);
+
+ if (file == null) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+ Messages.bind(Messages.moduleExportError, module.getProject().getName())));
}
Trace.tracePoint("Exit ", "DeployCommand.getTargetFile", file);
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.java Thu Apr 7 20:01:45 2011
@@ -73,4 +73,6 @@ public class Messages extends NLS {
public static String moduleModified;
+ public static String moduleExportError;
+
}
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/internal/Messages.properties Thu Apr 7 20:01:45 2011
@@ -58,3 +58,4 @@ configSizeMismatch=A plugin configuratio
noDefaultServer=Invalid setup, no default server instance registered.
moduleModified=Modified
+moduleExportError=Module {0} failed to export.
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/AriesHelper.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/AriesHelper.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/AriesHelper.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/AriesHelper.java Thu Apr 7 20:01:45 2011
@@ -17,9 +17,7 @@
package org.apache.geronimo.st.v30.core.osgi;
import org.apache.geronimo.st.v30.core.internal.Trace;
-import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.server.core.IModule;
import org.osgi.framework.Bundle;
/**
Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/OsgiConstants.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/OsgiConstants.java?rev=1089967&r1=1089966&r2=1089967&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/OsgiConstants.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/osgi/OsgiConstants.java Thu Apr 7 20:01:45 2011
@@ -25,6 +25,10 @@ public final class OsgiConstants {
public final static String BUNDLE = "osgi.bundle";
public final static String BUNDLE_EXTENSION = ".jar";
public final static String BUNDLE_DATAMODEL_PROVIDER_ID = "osgi.bundle.datamodelprovider";
+
+ public final static String FRAGMENT_BUNDLE = "osgi.fragment";
+ public final static String FRAGMENT_BUNDLE_EXTENSION = ".jar";
+ public final static String FRAGMENT_BUNDLE_DATAMODEL_PROVIDER_ID = "osgi.fragment.datamodelprovider";
public final static String COMPOSITE_BUNDLE = "osgi.comp";
public final static String COMPOSITE_BUNDLE_EXTENSION = ".cba";