Author: rob.stryker(a)jboss.com
Date: 2010-09-15 01:44:17 -0400 (Wed, 15 Sep 2010)
New Revision: 24926
Added:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELFacetInstallDataModelProvider.java
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELDeployable.java
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/ui/wizards/BPELFacetInstallPage.java
Modified:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/plugin.xml
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/IBPELModuleFacetConstants.java
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELCoreFacetInstallDelegate.java
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELModuleFactoryDelegate.java
Log:
Changes from eclipse bpel, ported to our runtime plugin.
Modified: trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/plugin.xml
===================================================================
--- trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/plugin.xml 2010-09-15 01:22:15 UTC
(rev 24925)
+++ trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/plugin.xml 2010-09-15 05:44:17 UTC
(rev 24926)
@@ -31,6 +31,13 @@
</wizard>
</extension>
+ <extension
point="org.eclipse.wst.common.project.facet.ui.wizardPages">
+ <wizard-pages action="bpel.facet.core.install">
+ <page
class="org.jboss.tools.bpel.runtimes.ui.wizards.BPELFacetInstallPage"/>
+ </wizard-pages>
+ </extension>
+
+
<!--=========================================================================-->
<!-- BPEL ModuleType -->
<!--=========================================================================-->
@@ -72,10 +79,13 @@
<conflicts group="modules"/>
</and>
</constraint>
- <action type="install">
- <delegate
class="org.jboss.tools.bpel.runtimes.facets.BPELCoreFacetInstallDelegate"/>
- </action>
- </project-facet-version>
+ </project-facet-version>
+
+ <action facet="jbt.bpel.facet.core" version="2.0"
type="INSTALL" id="bpel.facet.core.install">
+ <delegate
class="org.jboss.tools.bpel.runtimes.facets.BPELCoreFacetInstallDelegate"/>
+ <config-factory
class="org.jboss.tools.bpel.runtimes.facets.BPELFacetInstallDataModelProvider"/>
+ </action>
+
<category id="bpel.category">
<label>%BPEL_FACET_CATEGORY_LABEL</label>
Modified:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/IBPELModuleFacetConstants.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/IBPELModuleFacetConstants.java 2010-09-15
01:22:15 UTC (rev 24925)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/IBPELModuleFacetConstants.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -16,7 +16,11 @@
* @author Bruno Wassermann, written Jun 29, 2006
*/
public interface IBPELModuleFacetConstants {
+
+ public final static String BPEL_CONTENT_FOLDER =
"BPELFacetInstallDataModelProvider.contentRoot";
+ public final static String BPEL_CONTENT_DEFAULT_FOLDER = "bpelContent";
+
// module types
public final static String BPEL_MODULE_TYPE = "jbt.bpel.module";
//$NON-NLS-1$
Modified:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELCoreFacetInstallDelegate.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELCoreFacetInstallDelegate.java 2010-09-15
01:22:15 UTC (rev 24925)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELCoreFacetInstallDelegate.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -25,6 +25,7 @@
import org.eclipse.jst.common.project.facet.WtpUtils;
import org.eclipse.wst.common.componentcore.internal.util.IComponentImplFactory;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IDelegate;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.jboss.ide.eclipse.as.wtp.core.util.VCFUtil;
@@ -60,12 +61,15 @@
IProgressMonitor progMon) throws CoreException {
progMon.beginTask("Configuring ...", 300); //$NON-NLS-1$
-
+ IDataModel model = (IDataModel)obj;
+ String contentRoot =
(String)model.getProperty(IBPELModuleFacetConstants.BPEL_CONTENT_FOLDER);
+ contentRoot = (contentRoot == null || "".equals(contentRoot)) ?
IBPELModuleFacetConstants.BPEL_CONTENT_DEFAULT_FOLDER : contentRoot;
+
// add natures
WtpUtils.addNatures(proj);
// Create the content folder
- IFolder bpelContent = proj.getFolder(IBPELModuleFacetConstants.BPEL_CONTENT);
+ IFolder bpelContent = proj.getFolder(contentRoot);
bpelContent.create(true,true, null);
// create the virtual component
@@ -75,17 +79,10 @@
progMon.worked(100);
// Add the resource mapping to bpelContent
- newComponent.getRootFolder().createLink(new Path("/" +
IBPELModuleFacetConstants.BPEL_CONTENT), 0, null);
-
- // Add an output folder mapping
- IVirtualComponent outputFoldersComponent = new OutputFoldersVirtualComponent(
- proj, newComponent);
- VCFUtil.addReference(outputFoldersComponent, newComponent, "/", null);
+ newComponent.getRootFolder().createLink(new Path("/" + contentRoot), 0,
null);
progMon.worked(100);
-
// Add builder
addBuilder(proj, new SubProgressMonitor(progMon, 100));
-
progMon.done();
}
Added:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELFacetInstallDataModelProvider.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELFacetInstallDataModelProvider.java
(rev 0)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/facets/BPELFacetInstallDataModelProvider.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -0,0 +1,29 @@
+package org.jboss.tools.bpel.runtimes.facets;
+
+import java.util.Set;
+
+import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+import
org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
+import org.eclipse.wst.common.project.facet.core.IActionConfigFactory;
+import org.jboss.tools.bpel.runtimes.IBPELModuleFacetConstants;
+
+public class BPELFacetInstallDataModelProvider extends
+ FacetInstallDataModelProvider implements IActionConfigFactory,
IFacetDataModelProperties, IBPELModuleFacetConstants {
+
+ @Override
+ public Set getPropertyNames() {
+ Set names = super.getPropertyNames();
+ names.add(FACET_PROJECT_NAME);
+ names.add(FACET_ID);
+ names.add(BPEL_CONTENT_FOLDER);
+ return names;
+ }
+
+ @Override
+ public Object getDefaultProperty(String propertyName) {
+ if (propertyName.equals(FACET_ID)) {
+ return IBPELModuleFacetConstants.BPEL_PROJECT_FACET;
+ }
+ return super.getDefaultProperty(propertyName);
+ }
+}
Added:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELDeployable.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELDeployable.java
(rev 0)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELDeployable.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -0,0 +1,37 @@
+package org.jboss.tools.bpel.runtimes.module;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.wst.common.componentcore.internal.flat.IFlattenParticipant;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.web.internal.deployables.FlatComponentDeployable;
+
+public class BPELDeployable extends FlatComponentDeployable {
+
+ public BPELDeployable(IProject project) {
+ super(project);
+ }
+
+ public BPELDeployable(IProject project, IVirtualComponent aComponent) {
+ super(project, aComponent);
+ }
+
+ @Override
+ public boolean shouldCache() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.bpel.runtimes.module.FlatComponentDeployable#getParticipants()
+ */
+ protected IFlattenParticipant[] getParticipants() {
+ /*
+ * No work really needs to be done here. The BPEL project
+ * doesn't need to map source in instead, it doesn't need to
+ * update a manifest file, it doesn't need to add in classpath dependencies, etc
etc
+ *
+ * Just standard traversals as of now.
+ */
+ return super.getParticipants();
+ }
+}
Modified:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELModuleFactoryDelegate.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELModuleFactoryDelegate.java 2010-09-15
01:22:15 UTC (rev 24925)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/module/BPELModuleFactoryDelegate.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -10,24 +10,164 @@
******************************************************************************/
package org.jboss.tools.bpel.runtimes.module;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
import org.eclipse.core.resources.IProject;
-import org.jboss.ide.eclipse.as.wtp.core.modules.JBTProjectModuleDelegate;
-import org.jboss.ide.eclipse.as.wtp.core.modules.JBTProjectModuleFactory;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.StructureEdit;
+import org.eclipse.wst.common.componentcore.internal.util.FacetedProjectUtilities;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.internal.ModuleFactory;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.core.model.ModuleDelegate;
+import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate;
+import org.eclipse.wst.web.internal.deployables.FlatComponentDeployable;
import org.jboss.tools.bpel.runtimes.IBPELModuleFacetConstants;
-public class BPELModuleFactoryDelegate extends JBTProjectModuleFactory {
+public class BPELModuleFactoryDelegate extends ProjectModuleFactoryDelegate implements
IResourceChangeListener {
+ protected Map <IModule, FlatComponentDeployable> moduleDelegates = new
HashMap<IModule, FlatComponentDeployable>(5);
+
public static final String FACTORY_ID =
"org.jboss.tools.bpel.runtimes.module.moduleFactory";
public static final String MODULE_TYPE = IBPELModuleFacetConstants.BPEL_MODULE_TYPE;
+ public static BPELModuleFactoryDelegate FACTORY;
+ public static BPELModuleFactoryDelegate factoryInstance() {
+ if( FACTORY == null ) {
+ ensureFactoryLoaded(FACTORY_ID);
+ }
+ return FACTORY;
+ }
+ public static void ensureFactoryLoaded(String factoryId) {
+ ModuleFactory[] factories = ServerPlugin.getModuleFactories();
+ for( int i = 0; i < factories.length; i++ ) {
+ if( factories[i].getId().equals(factoryId)) {
+ factories[i].getDelegate(new NullProgressMonitor());
+ }
+ }
+ }
+
+ public BPELModuleFactoryDelegate() {
+ super();
+ }
+ @Override
+ public void initialize() {
+ super.initialize();
+ if( getId().equals(FACTORY))
+ FACTORY = this;
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
+ }
+
+ @Override
+ protected IModule[] createModules(IProject project) {
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ if(component != null)
+ return createModuleDelegates(component);
+ return null;
+ }
- public String getFactoryId() {
- return FACTORY_ID;
+
+ @Override
+ public ModuleDelegate getModuleDelegate(IModule module) {
+ if (module == null)
+ return null;
+
+ ModuleDelegate md = moduleDelegates.get(module);
+// if( md == null &&
((Module)module).getInternalId().startsWith(BINARY_PREFIX))
+// return createDelegate(module);
+
+ if (md == null) {
+ createModules(module.getProject());
+ md = moduleDelegates.get(module);
+ }
+ return md;
}
- public BPELModuleFactoryDelegate() {
- super(MODULE_TYPE, IBPELModuleFacetConstants.BPEL_PROJECT_FACET);
+ protected boolean canHandleProject(IProject p) {
+ return FacetedProjectUtilities.isProjectOfType(p,
IBPELModuleFacetConstants.BPEL_PROJECT_FACET);
}
+
+ protected IModule[] createModuleDelegates(IVirtualComponent component) {
+ if(component == null){
+ return null;
+ }
+
+ List<IModule> projectModules = new ArrayList<IModule>();
+ try {
+ if (canHandleProject(component.getProject())) {
+ String type = IBPELModuleFacetConstants.BPEL_MODULE_TYPE;
+ String version = IBPELModuleFacetConstants.BPEL20_VERSION;
+ IModule module = createModule(component.getName(), component.getName(), type,
version, component.getProject());
+ FlatComponentDeployable moduleDelegate = createModuleDelegate(component.getProject(),
component);
+ moduleDelegates.put(module, moduleDelegate);
+ projectModules.add(module);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+// e.printStackTrace();
+// J2EEPlugin.logError(e);
+ }
+ return projectModules.toArray(new IModule[projectModules.size()]);
+ }
- protected JBTProjectModuleDelegate createDelegate(IProject project) {
- return new BPELModuleDelegate(project);
+ protected FlatComponentDeployable createModuleDelegate(IProject project,
IVirtualComponent component) {
+ return new BPELDeployable(project, component);
}
-}
+
+ /**
+ * Returns the list of resources that the module should listen to for state
+ * changes. The paths should be project relative paths. Subclasses can
+ * override this method to provide the paths.
+ *
+ * @return a possibly empty array of paths
+ */
+ @Override
+ protected IPath[] getListenerPaths() {
+ return new IPath[] { new Path(".project"), // nature //$NON-NLS-1$
+ new Path(StructureEdit.MODULE_META_FILE_NAME), // component
+ new Path(".settings/org.eclipse.wst.common.project.facet.core.xml") //
facets //$NON-NLS-1$
+ };
+ }
+
+ @Override
+ protected void clearCache(IProject project) {
+ super.clearCache(project);
+ List<IModule> modulesToRemove = null;
+ for (Iterator<IModule> iterator = moduleDelegates.keySet().iterator();
iterator.hasNext();) {
+ IModule module = iterator.next();
+ if (module.getProject().equals(project)) {
+ if (modulesToRemove == null) {
+ modulesToRemove = new ArrayList<IModule>();
+ }
+ modulesToRemove.add(module);
+ }
+ }
+ if (modulesToRemove != null) {
+ for (IModule module : modulesToRemove) {
+ moduleDelegates.remove(module);
+ }
+ }
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ cleanAllDelegates();
+ }
+
+ protected void cleanAllDelegates() {
+ Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
+ while(i.hasNext()) {
+ i.next().clearCache();
+ }
+ modulesChanged();
+ }
+}
\ No newline at end of file
Added:
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/ui/wizards/BPELFacetInstallPage.java
===================================================================
---
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/ui/wizards/BPELFacetInstallPage.java
(rev 0)
+++
trunk/bpel/plugins/org.jboss.tools.bpel.runtimes/src/org/jboss/tools/bpel/runtimes/ui/wizards/BPELFacetInstallPage.java 2010-09-15
05:44:17 UTC (rev 24926)
@@ -0,0 +1,46 @@
+package org.jboss.tools.bpel.runtimes.ui.wizards;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.common.project.facet.ui.IFacetWizardPage;
+import org.eclipse.wst.web.ui.internal.wizards.DataModelFacetInstallPage;
+import org.jboss.tools.bpel.runtimes.IBPELModuleFacetConstants;
+
+public class BPELFacetInstallPage extends DataModelFacetInstallPage implements
+ IFacetWizardPage {
+
+ private Label contentDirLabel;
+ private Text contentDir;
+ public BPELFacetInstallPage() {
+ super("Test BPEL");
+ setTitle("BPEL Title");
+ setDescription("BPEL Description");
+ }
+
+ @Override
+ protected String[] getValidationPropertyNames() {
+ return new String[]{IBPELModuleFacetConstants.BPEL_CONTENT_FOLDER};
+ }
+
+ @Override
+ protected Composite createTopLevelComposite(Composite parent) {
+ final Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2, false));
+ this.contentDirLabel = new Label(composite, SWT.NONE);
+ this.contentDirLabel.setText("Content Folder");
+ this.contentDirLabel.setLayoutData(new GridData());
+
+ this.contentDir = new Text(composite, SWT.BORDER);
+ this.contentDir.setLayoutData(gdhfill());
+ this.contentDir.setData("label", this.contentDirLabel); //$NON-NLS-1$
+ this.synchHelper.synchText(contentDir, IBPELModuleFacetConstants.BPEL_CONTENT_FOLDER,
null);
+ this.contentDir.setText(IBPELModuleFacetConstants.BPEL_CONTENT_DEFAULT_FOLDER);
+ new Label(composite, SWT.NONE); // pad
+ return composite;
+ }
+
+}