Author: rob.stryker(a)jboss.com
Date: 2011-08-01 05:18:46 -0400 (Mon, 01 Aug 2011)
New Revision: 33406
Added:
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/OSGiPublisher.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/OSGiModuleFactory.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/icons/osgi16.gif
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/AltMethodZippedJSTPublisher.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF
trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
Log:
JBIDE-9424 - surprisingly easy fix to add osgi modules.
Modified: trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF 2011-08-01
06:28:42 UTC (rev 33405)
+++
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF 2011-08-01
09:18:46 UTC (rev 33406)
@@ -28,7 +28,8 @@
org.jboss.ide.eclipse.as.wtp.ui,
org.eclipse.emf.common;bundle-version="2.7.0",
org.eclipse.emf.ecore;bundle-version="2.7.0",
- org.eclipse.wst.common.modulecore.ui;bundle-version="1.0.100"
+ org.eclipse.wst.common.modulecore.ui;bundle-version="1.0.100",
+ org.eclipse.pde.core;bundle-version="3.7.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.jboss.ide.eclipse.archives.webtools,
Modified: trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml 2011-08-01
06:28:42 UTC (rev 33405)
+++ trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml 2011-08-01
09:18:46 UTC (rev 33406)
@@ -121,6 +121,11 @@
priority="3"
zipDelegate="true">
</publisher>
+ <publisher
+
class="org.jboss.ide.eclipse.archives.webtools.modules.OSGiPublisher"
+ priority="20"
+ zipDelegate="false">
+ </publisher>
</extension>
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/AltMethodZippedJSTPublisher.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/AltMethodZippedJSTPublisher.java 2011-08-01
06:28:42 UTC (rev 33405)
+++
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/AltMethodZippedJSTPublisher.java 2011-08-01
09:18:46 UTC (rev 33406)
@@ -96,13 +96,8 @@
if (isDeployedExploded(destination)) {
removeRemoteDeployment(sourcePath, destination.removeLastSegments(1), name,
monitor);
}
- // Locally zip it up into the remote tmp folder
- result = super.publishModule(method, server, module, publishType, delta,
- AbstractServerToolsPublisher.getSubMon(monitor, 50));
- if( result.isOK() ) {
- result = remoteFullPublish(sourcePath, destination.removeLastSegments(1), name,
- AbstractServerToolsPublisher.getSubMon(monitor, 150));
- }
+
+ result = handleLocalZipAndRemotePublish(method, server, module, publishType, delta,
AbstractServerToolsPublisher.getSubMon(monitor, 50));
}
if( result == null ) {
@@ -114,6 +109,26 @@
monitor.done();
}
}
+
+ protected IStatus handleLocalZipAndRemotePublish(
+ IJBossServerPublishMethod method,
+ IServer server, IModule[] module,
+ int publishType, IModuleResourceDelta[] delta,
+ IProgressMonitor monitor) throws CoreException {
+ IDeployableServer server2 = ServerConverter.getDeployableServer(server);
+ String remoteTempDeployRoot = getDeployRoot(module,
ServerConverter.getDeployableServer(server));
+ IPath sourcePath = PublishUtil.getDeployPath(module, remoteTempDeployRoot, server2);
+ IPath destination = PublishUtil.getDeployPath(method, module, server2);
+ String name = sourcePath.lastSegment();
+
+ // Locally zip it up into the remote tmp folder
+ IStatus result = super.publishModule(method, server, module, publishType, delta,
monitor);
+ if( result.isOK() ) {
+ result = remoteFullPublish(sourcePath, destination.removeLastSegments(1), name,
+ AbstractServerToolsPublisher.getSubMon(monitor, 150));
+ }
+ return result;
+ }
private boolean isDeployedExploded(IPath destination) {
File file = destination.toFile();
@@ -122,7 +137,7 @@
&& file.isDirectory();
}
- private IStatus remoteFullPublish(IPath sourcePath,
+ protected IStatus remoteFullPublish(IPath sourcePath,
IPath destFolder, String name, IProgressMonitor monitor) {
// Now transfer the file to RSE
try {
Added:
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/OSGiPublisher.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/OSGiPublisher.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/modules/OSGiPublisher.java 2011-08-01
09:18:46 UTC (rev 33406)
@@ -0,0 +1,92 @@
+package org.jboss.ide.eclipse.archives.webtools.modules;
+
+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.pde.core.plugin.PluginRegistry;
+import org.eclipse.pde.internal.core.exports.FeatureExportInfo;
+import org.eclipse.pde.internal.core.exports.PluginExportOperation;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.model.IModuleResourceDelta;
+import org.jboss.ide.eclipse.as.core.modules.OSGiModuleFactory;
+import org.jboss.ide.eclipse.as.core.publishers.AbstractServerToolsPublisher;
+import org.jboss.ide.eclipse.as.core.publishers.PublishUtil;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerPublishMethod;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+
+public class OSGiPublisher extends AltMethodZippedJSTPublisher {
+ public boolean accepts(String method, IServer server, IModule[] module) {
+ if(
module[module.length-1].getModuleType().getId().equals(OSGiModuleFactory.MODULE_TYPE))
+ return true;
+ return false;
+ }
+
+ @Override
+ public int getPublishState() {
+ return IServer.PUBLISH_STATE_NONE;
+ }
+
+ protected IStatus handleLocalZipAndRemotePublish(
+ IJBossServerPublishMethod method,
+ IServer server, IModule[] module,
+ int publishType, IModuleResourceDelta[] delta,
+ IProgressMonitor monitor) throws CoreException {
+
+ IDeployableServer server2 = ServerConverter.getDeployableServer(server);
+ IPath destination = PublishUtil.getDeployPath(method, module, server2);
+ String remoteTempDeployRoot = getDeployRoot(module,
ServerConverter.getDeployableServer(server));
+ IPath presumedSourcePath = PublishUtil.getDeployPath(module, remoteTempDeployRoot,
server2);
+ String name = presumedSourcePath.lastSegment();
+ IPath realSourcePathFolder =
presumedSourcePath.removeLastSegments(1).append("plugins"); //$NON-NLS-1$
+ IProject project = module[module.length-1].getProject();
+ // Run the export job
+ IStatus result = scheduleExportJob(project, remoteTempDeployRoot, name, monitor);
+ if( result.isOK() ) {
+ String[] plugins = realSourcePathFolder.toFile().list();
+ if( plugins.length > 0 ) {
+ IPath src = realSourcePathFolder.append(plugins[0]);
+ result = remoteFullPublish(src, destination.removeLastSegments(1), name,
+ AbstractServerToolsPublisher.getSubMon(monitor, 150));
+ // Then cleanup this plugins folder >=[
+ src.toFile().delete();
+ }
+ }
+ return result;
+ }
+
+ protected IStatus scheduleExportJob(IProject project, String destFolder, String name,
IProgressMonitor monitor) {
+ final FeatureExportInfo info = new FeatureExportInfo();
+ info.toDirectory = true;
+ info.useJarFormat = true;
+ info.exportSource = false;
+ info.exportSourceBundle = true;
+ info.allowBinaryCycles = true;
+ info.useWorkspaceCompiledClasses = false;
+ info.destinationDirectory = destFolder;
+ info.zipFileName = name;
+ info.items = new Object[]{PluginRegistry.findModel(project)};
+ info.signingInfo = null; //fPage.useJARFormat() ? fPage.getSigningInfo() : null;
+ info.qualifier = null; //fPage.getQualifier();
+
+ final CustomPluginExportOperation job = new CustomPluginExportOperation(info,
"Exporting Plugin: " + project.getName()); //$NON-NLS-1$
+
+ IStatus s = job.run2(monitor);
+ return s;
+ }
+
+ private class CustomPluginExportOperation extends PluginExportOperation {
+ public CustomPluginExportOperation(FeatureExportInfo info, String name) {
+ super(info, name);
+ }
+
+ public IStatus run2(IProgressMonitor monitor) {
+ return super.run(monitor);
+ }
+ }
+
+
+}
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF 2011-08-01
06:28:42 UTC (rev 33405)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF 2011-08-01
09:18:46 UTC (rev 33406)
@@ -21,7 +21,8 @@
org.eclipse.wst.common.project.facet.core;bundle-version="1.4.200",
org.eclipse.wst.common.frameworks;bundle-version="1.2.0",
org.eclipse.jst.jee;bundle-version="1.0.401",
- org.eclipse.core.commands;bundle-version="3.6.0"
+ org.eclipse.core.commands;bundle-version="3.6.0",
+ org.eclipse.pde.core;bundle-version="3.7.0"
Bundle-ActivationPolicy: lazy
Export-Package: org.jboss.ide.eclipse.as.core,
org.jboss.ide.eclipse.as.core.extensions.descriptors,
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/OSGiModuleFactory.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/OSGiModuleFactory.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/OSGiModuleFactory.java 2011-08-01
09:18:46 UTC (rev 33406)
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.ide.eclipse.as.core.modules;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.pde.core.IModel;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.core.plugin.PluginRegistry;
+import org.eclipse.pde.internal.core.ICoreConstants;
+import org.eclipse.pde.internal.core.WorkspaceModelManager;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.model.IModuleResource;
+import org.eclipse.wst.server.core.model.ModuleDelegate;
+import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate;
+import org.jboss.ide.eclipse.as.wtp.core.modules.IJBTModule;
+
+public class OSGiModuleFactory extends ProjectModuleFactoryDelegate {
+
+ public static final String MODULE_TYPE = "jboss.osgi"; //$NON-NLS-1$
+ public static final String VERSION = "1.0"; //$NON-NLS-1$
+
+ public class OSGiModuleDelegate extends ModuleDelegate implements IJBTModule {
+ public IStatus validate() {
+ return null;
+ }
+ public IModule[] getChildModules() {
+ return new IModule[]{};
+ }
+ public IModuleResource[] members() throws CoreException {
+ return new IModuleResource[]{};
+ }
+ public IModule[] getModules() {
+ return getChildModules();
+ }
+ public String getURI(IModule module) {
+ return null;
+ }
+ public boolean isBinary() {
+ return true;
+ }
+ }
+
+ @Override
+ public ModuleDelegate getModuleDelegate(IModule module) {
+ return new OSGiModuleDelegate();
+ }
+
+ /**
+ * Creates the modules that are contained within a given project.
+ *
+ * @param project a project to create modules for
+ * @return a possibly-empty array of modules
+ */
+ protected IModule[] createModules(IProject project) {
+ if (!WorkspaceModelManager.isBinaryProject(project) &&
WorkspaceModelManager.isPluginProject(project)) {
+ IModel model = PluginRegistry.findModel(project);
+ if (model != null && isValidModel(model) &&
hasBuildProperties((IPluginModelBase) model)) {
+ IModule module = createModule(project.getName(), project.getName(),
+ MODULE_TYPE, VERSION, project);
+ return new IModule[] { module };
+ }
+ }
+ return null;
+ }
+
+ private boolean hasBuildProperties(IPluginModelBase model) {
+ File file = new File(model.getInstallLocation(),
ICoreConstants.BUILD_FILENAME_DESCRIPTOR);
+ return file.exists();
+ }
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.pde.internal.ui.wizards.exports.BaseExportWizardPage#isValidModel(org.eclipse.pde.core.IModel)
+ */
+ protected boolean isValidModel(IModel model) {
+ return model != null && model instanceof IPluginModelBase;
+ }
+
+ @Override
+ protected IPath[] getListenerPaths() {
+ return new IPath[] { new Path(".project"), // nature //$NON-NLS-1$
+ new Path("META-INF/MANIFEST.MF"), // manifest //$NON-NLS-1$
+ new Path(".settings/org.eclipse.pde.core.prefs") // pde prefs
//$NON-NLS-1$
+ };
+ }
+
+}
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2011-08-01 06:28:42 UTC (rev
33405)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2011-08-01 09:18:46 UTC (rev
33406)
@@ -478,6 +478,11 @@
types="bpel.module"
versions="1.1, 2.0">
</moduleType>
+ <moduleType
+ types="jboss.osgi"
+ versions="1.0">
+ </moduleType>
+
</runtimeType>
@@ -683,6 +688,15 @@
versions="1.0">
</moduleType>
</moduleFactory>
+ <moduleFactory
+ class="org.jboss.ide.eclipse.as.core.modules.OSGiModuleFactory"
+ id="org.jboss.ide.eclipse.as.core.osgiModuleFactory"
+ projects="true">
+ <moduleType
+ types="jboss.osgi"
+ versions="1.0">
+ </moduleType>
+ </moduleFactory>
</extension>
<extension
Added: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/icons/osgi16.gif
===================================================================
(Binary files differ)
Property changes on: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/icons/osgi16.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml 2011-08-01 06:28:42 UTC (rev
33405)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml 2011-08-01 09:18:46 UTC (rev
33406)
@@ -90,6 +90,11 @@
icon="$nl$/icons/file.gif"
id="org.jboss.ide.eclipse.as.ui.simplefile.image"
typeIds="jboss.singlefile"/>
+ <image
+ icon="icons/osgi16.gif"
+ id="org.jboss.ide.eclipse.as.ui.osgi.image"
+ typeIds="jboss.osgi">
+ </image>
</extension>