Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 127371 Details for
Bug 242635
Remove unnecessary UI dependencies from org.eclipse.jst.ws.consumption
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
proposed patch
242635.patch (text/plain), 37.69 KB, created by
Mark Hutchinson
on 2009-03-03 14:51:38 EST
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Mark Hutchinson
Created:
2009-03-03 14:51:38 EST
Size:
37.69 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jst.ws.consumption >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/webtools/webservices/plugins/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF,v >retrieving revision 1.53 >diff -u -r1.53 MANIFEST.MF >--- META-INF/MANIFEST.MF 26 Jan 2009 16:45:40 -0000 1.53 >+++ META-INF/MANIFEST.MF 3 Mar 2009 19:22:46 -0000 >@@ -40,7 +40,6 @@ > org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)", > org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)", > org.eclipse.jem.workbench;bundle-version="[2.0.0,3.0.0)", >- org.eclipse.jface;bundle-version="[3.2.0,4.0.0)", > org.eclipse.wst.ws;bundle-version="[1.0.100,1.2.0)", > org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)", > org.eclipse.wst.server.core;bundle-version="[1.0.102,2.0.0)", >@@ -56,8 +55,8 @@ > org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)", > org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,2.0.0)", > org.eclipse.jst.server.core;bundle-version="[1.0.102,2.0.0)", >- org.eclipse.ui;bundle-version="[3.2.0,4.0.0)";resolution:=optional, >- org.eclipse.emf.codegen;bundle-version="[2.2.0,3.0.0)" >+ org.eclipse.emf.codegen;bundle-version="[2.2.0,3.0.0)", >+ org.eclipse.core.commands;bundle-version="[3.5.0,3.6.0)" > Eclipse-LazyStart: true > Bundle-RequiredExecutionEnvironment: J2SE-1.4 > Bundle-ActivationPolicy: lazy >Index: src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java >=================================================================== >RCS file: /cvsroot/webtools/webservices/plugins/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java,v >retrieving revision 1.25 >diff -u -r1.25 FacetUtils.java >--- src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java 14 May 2008 03:21:28 -0000 1.25 >+++ src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java 3 Mar 2009 19:22:46 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2007, 2008 IBM Corporation and others. >+ * Copyright (c) 2007, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -15,11 +15,11 @@ > * 20080325 222473 makandre@ca.ibm.com - Andrew Mak, Create EAR version based on the version of modules to be added > * 20080429 213730 trungha@ca.ibm.com - Trung Ha > * 20080507 229532 kathy@ca.ibm.com - Kathy Chan >+ * 20090303 242635 mahutch@ca.ibm.com - Mark Hutchinson, Remove unnecessary UI dependencies from org.eclipse.jst.ws.consumption > *******************************************************************************/ > > package org.eclipse.jst.ws.internal.consumption.common; > >-import java.lang.reflect.InvocationTargetException; > import java.util.ArrayList; > import java.util.Collections; > import java.util.HashSet; >@@ -30,6 +30,10 @@ > import org.eclipse.core.resources.IProject; > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.IExtension; >+import org.eclipse.core.runtime.IExtensionPoint; >+import org.eclipse.core.runtime.IExtensionRegistry; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Platform; >@@ -37,7 +41,6 @@ > import org.eclipse.jdt.core.IJavaProject; > import org.eclipse.jdt.core.JavaCore; > import org.eclipse.jem.util.emf.workbench.ProjectUtilities; >-import org.eclipse.jface.operation.IRunnableWithProgress; > import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil; > import org.eclipse.jst.j2ee.internal.ejb.project.operations.EjbFacetInstallDataModelProvider; > import org.eclipse.jst.j2ee.internal.ejb.project.operations.IEjbFacetInstallDataModelProperties; >@@ -54,8 +57,6 @@ > import org.eclipse.jst.ws.internal.common.ResourceUtils; > import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages; > import org.eclipse.osgi.util.NLS; >-import org.eclipse.swt.widgets.Display; >-import org.eclipse.ui.PlatformUI; > import org.eclipse.wst.command.internal.env.core.common.StatusUtils; > import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants; > import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; >@@ -70,7 +71,6 @@ > import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action.Type; > import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; > import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager; >-import org.osgi.framework.Bundle; > > import com.ibm.icu.util.StringTokenizer; > >@@ -92,6 +92,8 @@ > public class FacetUtils > { > >+ private static IFacetOperationDelegate delegate; //if a delegate is plugged in, delegate some operations to it >+ private static boolean failedToLoadDelegate = false; > /** > * Returns an array of valid projects. Valid projects include projects with the facets nature or > * projects with the Java nature. >@@ -768,34 +770,9 @@ > status[0] = Status.OK_STATUS; > final Set actions = getInstallActions(projectFacetVersions); > >- // Create a runnable that applies the install actions to the faceted project >- IRunnableWithProgress runnable = new IRunnableWithProgress() >- { >- public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException >- { >- try >- { >- fproject.modify(actions, shellMonitor); >- } catch (CoreException e) >- { >- status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, e); >- } >- } >- }; >- >- // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >- if (displayPresent()) >- { >- try >- { >- PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >- } catch (InvocationTargetException ite) >- { >- status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ite); >- } catch (InterruptedException ie) >- { >- status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ie); >- } >+ if (isExtensionPresent()) >+ { >+ status[0] = delegate.addFacetsToProject(fproject, projectFacetVersions); > } > else > { >@@ -857,57 +834,29 @@ > final IStatus[] status = new IStatus[1]; > status[0] = Status.OK_STATUS; > IProject project = ProjectUtilities.getProject(projectName); >+ > if (!project.exists()) > { >- // Create a runnable that creates a new faceted project. >- IRunnableWithProgress runnable = new IRunnableWithProgress() >- { >- public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException >- { >- try >- { >- IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, shellMonitor); >- if (fProject == null) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName })); >- } >- } catch (CoreException e) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e); >- } >- } >- }; >- >- // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >- try >- { >- if (displayPresent()) >- { >- PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >- } >- else >- { >- try >- { >- IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, null); >- if (fProject == null) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName })); >- } >- } catch (CoreException e) >+ if (isExtensionPresent()) >+ { >+ status[0] = delegate.createNewFacetedProject(projectName); >+ } >+ else >+ { >+ try >+ { >+ IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, null); >+ if (fProject == null) > { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e); >- } >- } >- } catch (InvocationTargetException ite) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), ite); >- } catch (InterruptedException ie) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), ie); >- } >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName })); >+ } >+ } >+ catch (CoreException e) >+ { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e); >+ } >+ } > } >- > return status[0]; > } > >@@ -927,34 +876,9 @@ > final IStatus[] status = new IStatus[1]; > status[0] = Status.OK_STATUS; > >- //Create a runnable that sets the fixed facets on the faceted project >- IRunnableWithProgress runnable = new IRunnableWithProgress() >+ if (isExtensionPresent()) > { >- public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException >- { >- try >- { >- fProject.setFixedProjectFacets(fixedFacets); >- } catch (CoreException e) >- { >- status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, e); >- } >- } >- }; >- >- // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >- if (displayPresent()) >- { >- try >- { >- PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >- } catch (InvocationTargetException ite) >- { >- status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ite); >- } catch (InterruptedException ie) >- { >- status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ie); >- } >+ status[0] = delegate.setFixedFacetsOnProject(fProject, fixedFacets); > } > else > { >@@ -1008,34 +932,9 @@ > final IStatus[] status = new IStatus[1]; > status[0] = Status.OK_STATUS; > >- //Create a runnable that sets the facet runtime on the faceted project >- IRunnableWithProgress runnable = new IRunnableWithProgress() >- { >- public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException >- { >- try >- { >- fProject.setTargetedRuntimes(Collections.singleton(fRuntime), shellMonitor); >- } catch (CoreException e) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), e); >- } >- } >- }; >- >- // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >- if (displayPresent()) >+ if (isExtensionPresent()) > { >- try >- { >- PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >- } catch (InvocationTargetException ite) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ite); >- } catch (InterruptedException ie) >- { >- status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ie); >- } >+ status[0] = delegate.setFacetRuntimeOnProject(fProject, fRuntime); > } > else > { >@@ -1046,9 +945,7 @@ > { > status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), e); > } >- } >- >- >+ } > return status[0]; > } > >@@ -1471,26 +1368,34 @@ > return rfv; > } > >- // Check to see if SWT is active and the Display is present or not >- private static boolean displayPresent() { >- Bundle b = Platform.getBundle("org.eclipse.swt"); >- if (b==null) { >- return false; >- } >- if ((b.getState() != Bundle.RESOLVED && b.getState() != Bundle.ACTIVE) ) { >- return false; >- } >- try { >- if (Display.getCurrent() == null) { >- return false; >- } else { >- return true; >- } >- } catch (NoClassDefFoundError e1) { >- return false; >- } catch (Exception e) { // if the Display class cannot be loaded for whatever reason >- return false; >- >- } >+ private static boolean isExtensionPresent() { >+ >+ if (failedToLoadDelegate) { >+ return false; >+ } if (delegate != null) { >+ return true; >+ } >+ IExtensionRegistry registry = Platform.getExtensionRegistry(); >+ IExtensionPoint point = registry.getExtensionPoint("org.eclipse.jst.ws.consumption.internalFacetOperationDelegate"); >+ if (point == null) { >+ failedToLoadDelegate = true; >+ return false; >+ } >+ IExtension[] extensions = point.getExtensions(); >+ >+ //this extension point is internal, we know there will only be zero or one plugged in >+ if (extensions.length > 0 && extensions[0] != null) { >+ IConfigurationElement[] elements = extensions[0].getConfigurationElements(); >+ if (elements.length > 0 && elements[0] != null) { >+ try { >+ delegate = (IFacetOperationDelegate)elements[0].createExecutableExtension("class"); >+ return true; >+ } catch (CoreException e) { >+ //do nothing, just report that we failed to load the extension >+ } >+ } >+ } >+ failedToLoadDelegate = true;//set this so we don't try to load it again >+ return false; > } > } >Index: plugin.properties >=================================================================== >RCS file: /cvsroot/webtools/webservices/plugins/org.eclipse.jst.ws.consumption/plugin.properties,v >retrieving revision 1.3 >diff -u -r1.3 plugin.properties >--- plugin.properties 23 Apr 2007 18:04:24 -0000 1.3 >+++ plugin.properties 3 Mar 2009 19:22:46 -0000 >@@ -1,12 +1,15 @@ > ############################################################################### >-# Copyright (c) 2000, 2005 IBM Corporation and others. >+# Copyright (c) 2000, 2009 IBM Corporation and others. > # All rights reserved. This program and the accompanying materials > # are 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: >-# IBM Corporation - initial API and implementation >+# IBM Corporation - initial API and implementation >+# yyyymmdd bug Email and other contact information >+# -------- -------- ----------------------------------------------------------- >+# 20090302 242635 mahutch@ca.ibm.com - Mark Hutchinson, Remove unnecessary UI dependencies from org.eclipse.jst.ws.consumption > ############################################################################### > > # >@@ -17,3 +20,4 @@ > XP_WSFINDER=org.eclipse.jst.ws.internal.consumption.wsfinder > XP_WEB_SERVICE_START_SERVER_TYPE=WebServiceStartServerType > XP_SERVER_DEFAULTER=Server Defaulter >+XP_FACET_OP_DELEGATE=Facet Operation Delegate >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/webtools/webservices/plugins/org.eclipse.jst.ws.consumption/plugin.xml,v >retrieving revision 1.15 >diff -u -r1.15 plugin.xml >--- plugin.xml 30 Nov 2005 18:39:37 -0000 1.15 >+++ plugin.xml 3 Mar 2009 19:22:46 -0000 >@@ -17,6 +17,11 @@ > <extension-point > id="serverDefaulter" > name="%XP_SERVER_DEFAULTER"/> >+ >+ <!-- The following extension point is internal and likely to be removed in a future release. --> >+ <extension-point id="internalFacetOperationDelegate" >+ name="%XP_FACET_OP_DELEGATE" >+ schema="schema/facetOperationDelegate.exsd"/> > > > <extension >Index: schema/facetOperationDelegate.exsd >=================================================================== >RCS file: schema/facetOperationDelegate.exsd >diff -N schema/facetOperationDelegate.exsd >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ schema/facetOperationDelegate.exsd 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+<?xml version='1.0' encoding='UTF-8'?> >+<!-- Schema file written by PDE --> >+<schema targetNamespace="org.eclipse.jst.ws.consumption" xmlns="http://www.w3.org/2001/XMLSchema"> >+<annotation> >+ <appinfo> >+ <meta.schema plugin="org.eclipse.jst.ws.consumption" id="internalFacetOperationDelegate" name="Facet Operation Delegate"/> >+ </appinfo> >+ <documentation> >+ <b>Internal Extension Point:</b> This internal extension point allows an IFacetOperationDelegate to be plugged in that is delegated some facet operations. <b>Do not use this extension point.</b> >+ </documentation> >+ </annotation> >+ >+ <element name="extension"> >+ <annotation> >+ <appinfo> >+ <meta.element internal="true" /> >+ </appinfo> >+ </annotation> >+ <complexType> >+ <sequence> >+ <element ref="FacetOperationDelegate"/> >+ </sequence> >+ <attribute name="point" type="string" use="required"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="id" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="name" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appinfo> >+ <meta.attribute translatable="true"/> >+ </appinfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <element name="FacetOperationDelegate"> >+ <annotation> >+ <documentation> >+ This element specifies the FacetOperationDelegate >+ </documentation> >+ </annotation> >+ <complexType> >+ <attribute name="class" type="string" use="required"> >+ <annotation> >+ <documentation> >+ Class that provides the implementation of IFacetOperationDelegate >+ </documentation> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <annotation> >+ <appinfo> >+ <meta.section type="since"/> >+ </appinfo> >+ <documentation> >+ WTP 3.1 >+ </documentation> >+ </annotation> >+ >+ >+ >+ >+ >+</schema> >Index: src/org/eclipse/jst/ws/internal/consumption/common/IFacetOperationDelegate.java >=================================================================== >RCS file: src/org/eclipse/jst/ws/internal/consumption/common/IFacetOperationDelegate.java >diff -N src/org/eclipse/jst/ws/internal/consumption/common/IFacetOperationDelegate.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jst/ws/internal/consumption/common/IFacetOperationDelegate.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,72 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are 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: >+ * IBM Corporation - initial API and implementation >+ * yyyymmdd bug Email and other contact information >+ * -------- -------- ----------------------------------------------------------- >+ * 20090303 242635 mahutch@ca.ibm.com - Mark Hutchinson, Remove unnecessary UI dependencies from org.eclipse.jst.ws.consumption >+ *******************************************************************************/ >+package org.eclipse.jst.ws.internal.consumption.common; >+ >+import java.util.Set; >+ >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.wst.common.project.facet.core.IFacetedProject; >+import org.eclipse.wst.common.project.facet.core.IProjectFacet; >+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; >+import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; >+ >+public interface IFacetOperationDelegate { >+ >+ /** >+ * Adds the provided set of facet versions to the provided faceted project >+ * >+ * @param fproject A faceted project which exists in the workspace >+ * @param projectFacetVersions A set containing elements of type {@link IProjectFacetVersion} >+ * @return An IStatus with a severity of IStatus.OK if the facet >+ * versions were added successfully. Otherwise, an IStatus with a severity of >+ * IStatus.ERROR. >+ */ >+ public IStatus addFacetsToProject(final IFacetedProject fproject, final Set projectFacetVersions); >+ >+ /** >+ * Creates a new faceted project with the provided name >+ * >+ * @param projectName A String containing the name of the project to be created >+ * @return An IStatus with a severity of IStatus.OK if the faceted project >+ * was created successfully or if a project of the provided name already >+ * exists in the workspace. Otherwise, an IStatus with severity of >+ * IStatus.ERROR. >+ */ >+ public IStatus createNewFacetedProject(final String projectName); >+ >+ /** >+ * Sets the provided set of facets as fixed on the faceted project >+ * >+ * @param fProject A faceted project which exists in the workspace >+ * @param fixedFacets A set containing elements of type {@link IProjectFacet} >+ * @return An IStatus with a severity of IStatus.OK if the facets >+ * were successfully set as fixed facets on the faceted project. >+ * Otherwise, an IStatus with a severity of IStatus.ERROR. >+ * >+ * @see IFacetedProject#setFixedProjectFacets >+ */ >+ public IStatus setFixedFacetsOnProject(final IFacetedProject fProject, final Set fixedFacets); >+ >+ /** >+ * Binds the faceted project to the facet runtime >+ * >+ * @param fProject A faceted project which exists in the workspace >+ * @param fRuntime A facet runtime >+ * @return An IStatus with a severity of IStatus.OK if the faceted project >+ * was bound to the facet runtime successfully. Otherwise, an IStatus with severity of >+ * IStatus.ERROR. >+ */ >+ public IStatus setFacetRuntimeOnProject(final IFacetedProject fProject, final IRuntime fRuntime); >+ >+} >#P org.eclipse.jst.ws.consumption.ui >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/webtools/webservices/plugins/org.eclipse.jst.ws.consumption.ui/plugin.xml,v >retrieving revision 1.62 >diff -u -r1.62 plugin.xml >--- plugin.xml 26 Mar 2008 20:11:10 -0000 1.62 >+++ plugin.xml 3 Mar 2009 19:22:46 -0000 >@@ -759,5 +759,10 @@ > property="ListServers" > transform="org.eclipse.wst.command.internal.env.ant.String2BooleanTransformer" > /> >- </extension> >+ </extension> >+ >+ <extension >+ point="org.eclipse.jst.ws.consumption.internalFacetOperationDelegate"> >+ <FacetOperationDelegate class="org.eclipse.jst.ws.internal.consumption.ui.common.FacetOperationDelegate" /> >+ </extension> > </plugin> >Index: src/org/eclipse/jst/ws/internal/consumption/ui/common/FacetOperationDelegate.java >=================================================================== >RCS file: src/org/eclipse/jst/ws/internal/consumption/ui/common/FacetOperationDelegate.java >diff -N src/org/eclipse/jst/ws/internal/consumption/ui/common/FacetOperationDelegate.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/jst/ws/internal/consumption/ui/common/FacetOperationDelegate.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,307 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are 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: >+ * IBM Corporation - initial API and implementation >+ * yyyymmdd bug Email and other contact information >+ * -------- -------- ----------------------------------------------------------- >+ * 20090303 242635 mahutch@ca.ibm.com - Mark Hutchinson, Remove unnecessary UI dependencies from org.eclipse.jst.ws.consumption >+ *******************************************************************************/ >+package org.eclipse.jst.ws.internal.consumption.ui.common; >+ >+import java.lang.reflect.InvocationTargetException; >+import java.util.Collections; >+import java.util.HashSet; >+import java.util.Iterator; >+import java.util.Set; >+ >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.core.runtime.Status; >+import org.eclipse.jem.util.emf.workbench.ProjectUtilities; >+import org.eclipse.jface.operation.IRunnableWithProgress; >+import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages; >+import org.eclipse.jst.ws.internal.consumption.common.FacetUtils; >+import org.eclipse.jst.ws.internal.consumption.common.IFacetOperationDelegate; >+import org.eclipse.osgi.util.NLS; >+import org.eclipse.swt.widgets.Display; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.wst.command.internal.env.core.common.StatusUtils; >+import org.eclipse.wst.common.project.facet.core.IFacetedProject; >+import org.eclipse.wst.common.project.facet.core.IProjectFacet; >+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; >+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; >+import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; >+import org.osgi.framework.Bundle; >+ >+public class FacetOperationDelegate implements IFacetOperationDelegate { >+ >+ public IStatus addFacetsToProject(final IFacetedProject fproject, final Set projectFacetVersions) { >+ final IStatus[] status = new IStatus[1]; >+ status[0] = Status.OK_STATUS; >+ final Set actions = FacetUtils.getInstallActions(projectFacetVersions); >+ >+ // Create a runnable that applies the install actions to the faceted project >+ IRunnableWithProgress runnable = new IRunnableWithProgress() { >+ public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException { >+ try { >+ fproject.modify(actions, shellMonitor); >+ } catch (CoreException e) { >+ status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, e); >+ } >+ } >+ }; >+ >+ // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >+ if (displayPresent()) { >+ try { >+ PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >+ } catch (InvocationTargetException ite) { >+ status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ite); >+ } catch (InterruptedException ie) { >+ status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ie); >+ } >+ } else { >+ try { >+ fproject.modify(actions, null); >+ } catch (CoreException e) { >+ status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, e); >+ } >+ } >+ >+ return status[0]; >+ } >+ >+ public IStatus createNewFacetedProject(final String projectName) { >+ final IStatus[] status = new IStatus[1]; >+ status[0] = Status.OK_STATUS; >+ IProject project = ProjectUtilities.getProject(projectName); >+ if (!project.exists()) { >+ // Create a runnable that creates a new faceted project. >+ IRunnableWithProgress runnable = new IRunnableWithProgress() { >+ public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException { >+ try { >+ IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, shellMonitor); >+ if (fProject == null) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName })); >+ } >+ } catch (CoreException e) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e); >+ } >+ } >+ }; >+ >+ // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >+ try { >+ if (displayPresent()) { >+ PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >+ } else { >+ try { >+ IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, null); >+ if (fProject == null) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName })); >+ } >+ } catch (CoreException e) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e); >+ } >+ } >+ } catch (InvocationTargetException ite) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), ite); >+ } catch (InterruptedException ie) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), ie); >+ } >+ } >+ >+ return status[0]; >+ } >+ >+ public IStatus setFacetRuntimeOnProject(final IFacetedProject fProject, final IRuntime fRuntime) { >+ final IStatus[] status = new IStatus[1]; >+ status[0] = Status.OK_STATUS; >+ >+ // Create a runnable that sets the facet runtime on the faceted project >+ IRunnableWithProgress runnable = new IRunnableWithProgress() { >+ public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException { >+ try { >+ fProject.setTargetedRuntimes(Collections.singleton(fRuntime), shellMonitor); >+ } catch (CoreException e) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), e); >+ } >+ } >+ }; >+ >+ // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >+ if (displayPresent()) { >+ try { >+ PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >+ } catch (InvocationTargetException ite) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ite); >+ } catch (InterruptedException ie) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ie); >+ } >+ } else { >+ try { >+ fProject.setTargetedRuntimes(Collections.singleton(fRuntime), null); >+ >+ } catch (CoreException e) { >+ status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), e); >+ } >+ } >+ >+ return status[0]; >+ } >+ >+ public IStatus setFixedFacetsOnProject(final IFacetedProject fProject, final Set fixedFacets) { >+ final IStatus[] status = new IStatus[1]; >+ status[0] = Status.OK_STATUS; >+ >+ // Create a runnable that sets the fixed facets on the faceted project >+ IRunnableWithProgress runnable = new IRunnableWithProgress() { >+ public void run(IProgressMonitor shellMonitor) throws InvocationTargetException, InterruptedException { >+ try { >+ fProject.setFixedProjectFacets(fixedFacets); >+ } catch (CoreException e) { >+ status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, e); >+ } >+ } >+ }; >+ >+ // Run the runnable in another thread unless there is no UI thread (Ant scenarios) >+ if (displayPresent()) { >+ try { >+ PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); >+ } catch (InvocationTargetException ite) { >+ status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ite); >+ } catch (InterruptedException ie) { >+ status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ie); >+ } >+ } else { >+ try { >+ fProject.setFixedProjectFacets(fixedFacets); >+ } catch (CoreException e) { >+ status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, e); >+ } >+ } >+ >+ return status[0]; >+ } >+ >+ // Check to see if SWT is active and the Display is present or not >+ private static boolean displayPresent() { >+ Bundle b = Platform.getBundle("org.eclipse.swt"); >+ if (b == null) { >+ return false; >+ } >+ if ((b.getState() != Bundle.RESOLVED && b.getState() != Bundle.ACTIVE)) { >+ return false; >+ } >+ try { >+ if (Display.getCurrent() == null) { >+ return false; >+ } else { >+ return true; >+ } >+ } catch (NoClassDefFoundError e1) { >+ return false; >+ } catch (Exception e) { >+ // if the Display class cannot be loaded for whatever reason >+ return false; >+ >+ } >+ } >+ >+ // the following private methods had to be copied from FacetUtils >+ /** >+ * Returns a translatable delimited list of facet labels derived from the >+ * provided set of facets >+ * >+ * @param facets >+ * a set containing elements of type {@link IProjectFacet} >+ * @return String a delimited list of facet labels >+ */ >+ private static String getFacetListMessageString(Set facets) { >+ String facetListMessage = ""; >+ int size = facets.size(); >+ if (size > 0) { >+ Iterator itr = facets.iterator(); >+ IProjectFacet firstProjectFacet = (IProjectFacet) itr.next(); >+ facetListMessage = firstProjectFacet.getLabel(); >+ >+ // Continue appending to facetListMessage until all the facet labels >+ // are in the list. >+ while (itr.hasNext()) { >+ IProjectFacet projectFacet = (IProjectFacet) itr.next(); >+ String pfLabel = projectFacet.getLabel(); >+ facetListMessage = NLS.bind(ConsumptionMessages.MSG_FACETS, new String[] { facetListMessage, pfLabel }); >+ } >+ } >+ >+ return facetListMessage; >+ } >+ >+ /** >+ * Returns an error status indicating that the facets could not be set as >+ * fixed facets on the faceted project >+ * >+ * @param projectName >+ * a project name to insert in the error message in the IStatus >+ * @param facets >+ * a set containing elements of type {@link IProjectFacet}. The >+ * facets in this set will be listed in the error message in the >+ * IStatus. >+ * @param t >+ * a Throwable which will be inserted in the IStatus >+ * @return an IStatus with severity IStatus.ERROR >+ */ >+ private static IStatus getErrorStatusForSettingFixedFacets(String projectName, Set facets, Throwable t) { >+ IStatus status = Status.OK_STATUS; >+ int size = facets.size(); >+ if (size > 0) { >+ String facetList = getFacetListMessageString(facets); >+ status = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_FIXED_FACETS, new String[] { projectName, facetList }), t); >+ } >+ >+ return status; >+ } >+ >+ /** >+ * Returns an error status indicating that the facet versions could not be >+ * added to the faceted project >+ * >+ * @param projectName >+ * a project name to insert in the error message in the IStatus >+ * @param projectFacetVersions >+ * a set containing elements of type {@link IProjectFacetVersion} >+ * . The facets in this set will be listed in the error message >+ * in the IStatus. >+ * @param t >+ * a Throwable which will be inserted in the IStatus >+ * @return an IStatus with severity IStatus.ERROR >+ */ >+ private static IStatus getErrorStatusForAddingFacets(String projectName, Set projectFacetVersions, Throwable t) { >+ IStatus status = Status.OK_STATUS; >+ int size = projectFacetVersions.size(); >+ if (size > 0) { >+ Set facets = new HashSet(); >+ // Iterate over projectFacetVersions to form a set of IProjectFacets >+ Iterator itr = projectFacetVersions.iterator(); >+ while (itr.hasNext()) { >+ IProjectFacetVersion projectFacet = (IProjectFacetVersion) itr.next(); >+ IProjectFacet facet = projectFacet.getProjectFacet(); >+ facets.add(facet); >+ } >+ String facetList = getFacetListMessageString(facets); >+ status = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_ADDING_FACETS_TO_PROJECT, new String[] { projectName, facetList }), t); >+ } >+ >+ return status; >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 242635
: 127371