Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbridgha2005-02-11 18:32:49 +0000
committercbridgha2005-02-11 18:32:49 +0000
commit3bdfa13469f13f88f3255a95c86d00504116b057 (patch)
tree0487a0fa3107f31d612b7d22242278e52a9671b2 /plugins
parent12aa27475f30579d8b7795ffce2c6297a3c3a147 (diff)
downloadwebtools.javaee-3bdfa13469f13f88f3255a95c86d00504116b057.tar.gz
webtools.javaee-3bdfa13469f13f88f3255a95c86d00504116b057.tar.xz
webtools.javaee-3bdfa13469f13f88f3255a95c86d00504116b057.zip
web services added to M3: committed for JL
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.jst.j2ee.navigator.ui/plugin.xml3
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java99
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/J2EEWebAppItemProvider.java172
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/WebReferencesGroupItemProvider.java21
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/OpenExternalWSDLAction.java60
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceAdapterFactory.java61
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceFilesContribution.java77
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroup.java63
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroupType.java133
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceUIResourceHandler.java65
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorContentProvider.java279
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorGroupOpenListener.java70
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorLabelProvider.java187
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorSynchronizer.java111
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WsdlResourceAdapterFactory.java59
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/plugin.xml33
-rw-r--r--plugins/org.eclipse.jst.j2ee.ui/plugin.xml.tmp920
-rw-r--r--plugins/org.eclipse.jst.j2ee.web/webedit/org/eclipse/jst/j2ee/internal/web/providers/WebAppItemProvider.java8
-rw-r--r--plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/J2EEWebNatureRuntime.java16
-rw-r--r--plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/applicationclient/creation/ApplicationClientNatureRuntime.java24
-rw-r--r--plugins/org.eclipse.jst.j2ee/applicationedit/org/eclipse/jst/j2ee/internal/provider/ApplicationClientItemProvider.java7
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/AppClientProjectWebServiceEditModelFactory.java52
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/EjbProjectWebServiceEditModelFactory.java52
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WSDLHelper.java365
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebProjectWebServiceEditModelFactory.java52
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceClientGenerator.java56
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModel.java170
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModelFactory.java55
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataHelper.java78
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataRegistry.java87
-rw-r--r--plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java919
-rw-r--r--plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/project/J2EEModuleNature.java30
-rw-r--r--plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ReferenceDataModel.java43
-rw-r--r--plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceCreationOperation.java250
-rw-r--r--plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceDataModel.java318
-rw-r--r--plugins/org.eclipse.jst.j2ee/plugin.xml54
36 files changed, 4828 insertions, 221 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.navigator.ui/plugin.xml b/plugins/org.eclipse.jst.j2ee.navigator.ui/plugin.xml
index c015ad324..5c132d81e 100644
--- a/plugins/org.eclipse.jst.j2ee.navigator.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee.navigator.ui/plugin.xml
@@ -459,9 +459,6 @@
<package uri="jca.xmi" />
<package uri="webapplication.xmi" />
<package uri="jsp.xmi" />
- <package uri="wsdd.xmi" />
- <package uri="webservice_client.xmi" />
- <package uri="wscommon.xmi" />
</emfEnablement>
</navigatorContent>
</extension>
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java
index e02aca4fa..cdb6085fd 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java
@@ -11,6 +11,8 @@
package org.eclipse.jst.j2ee.internal.actions;
+import java.util.List;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -42,7 +44,9 @@ import org.eclipse.jst.j2ee.webapplication.WebApp;
import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
import org.eclipse.jst.j2ee.webservice.wsdd.BeanLink;
import org.eclipse.jst.j2ee.webservice.wsdd.EJBLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.Handler;
import org.eclipse.jst.j2ee.webservice.wsdd.ServletLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServices;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
@@ -51,6 +55,9 @@ import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.part.ISetSelectionTarget;
import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
import com.ibm.wtp.emf.workbench.ProjectUtilities;
@@ -174,20 +181,18 @@ public class OpenJ2EEResourceAction extends AbstractOpenAction {
}
// Handle wsdl case, non emf object
- // TODO WebServices for M3
- // if (srcObject instanceof WSDLResourceImpl || isWsdlInstance(srcObject)) {
- // openWsdlEditor();
- // return;
- // }
+ if (srcObject instanceof WSDLResourceImpl || isWsdlInstance(srcObject)) {
+ openWsdlEditor();
+ return;
+ }
EObject ro = (EObject) srcObject;
IProject p = ProjectUtilities.getProject(ro);
J2EENature nature = J2EENature.getRegisteredRuntime(p);
- // TODO WebServices for M3
- // if (ro instanceof Definition || ro instanceof Service || ro instanceof Handler)
- // r = getWebService(p); else
- if (ro instanceof BeanLink) {
+ if (ro instanceof Definition || ro instanceof Service || ro instanceof Handler)
+ r = getWebService(p);
+ else if (ro instanceof BeanLink) {
openBeanLinkInJavaEditor((BeanLink) ro, p);
return;
} else if (nature instanceof J2EEModuleNature && ((J2EEModuleNature) nature).isBinaryProject())
@@ -198,18 +203,17 @@ public class OpenJ2EEResourceAction extends AbstractOpenAction {
openAppropriateEditor(r);
}
- // TODO WebServices for M3
- // private void openWsdlEditor() {
- // WSDLResourceImpl wsdl = null;
- // if (srcObject instanceof WSDLResourceImpl)
- // wsdl = (WSDLResourceImpl) srcObject;
- // else if (srcObject instanceof Service)
- // wsdl = (WSDLResourceImpl) ((Service) srcObject).eResource();
- // if (wsdl != null) {
- // IResource r = WorkbenchResourceHelper.getFile(wsdl);
- // openAppropriateEditor(r);
- // }
- // }
+ private void openWsdlEditor() {
+ WSDLResourceImpl wsdl = null;
+ if (srcObject instanceof WSDLResourceImpl)
+ wsdl = (WSDLResourceImpl) srcObject;
+ else if (srcObject instanceof Service)
+ wsdl = (WSDLResourceImpl) ((Service) srcObject).eResource();
+ if (wsdl != null) {
+ IResource r = WorkbenchResourceHelper.getFile(wsdl);
+ openAppropriateEditor(r);
+ }
+ }
/**
* Get file from the J2EE EditModel for root object
@@ -294,16 +298,15 @@ public class OpenJ2EEResourceAction extends AbstractOpenAction {
/**
* Return the web service file
*/
- //TODO webservices remove for M3
-// private IResource getWebService(IProject p) {
-// List files = ProjectUtilities.getAllProjectFiles(p);
-// for (int i = 0; i < files.size(); i++) {
-// IFile file = (IFile) files.get(i);
-// if (file.getFullPath().toString().endsWith("webservices.xml")) //$NON-NLS-1$
-// return file;
-// }
-// return null;
-// }
+ private IResource getWebService(IProject p) {
+ List files = ProjectUtilities.getAllProjectFiles(p);
+ for (int i = 0; i < files.size(); i++) {
+ IFile file = (IFile) files.get(i);
+ if (file.getFullPath().toString().endsWith("webservices.xml")) //$NON-NLS-1$
+ return file;
+ }
+ return null;
+ }
/**
* The structured selection has changed in the workbench. Subclasses should override this method
@@ -340,11 +343,10 @@ public class OpenJ2EEResourceAction extends AbstractOpenAction {
// currentDescriptor = getEjbMapEditorDescriptor();
else if (obj instanceof BeanLink)
currentDescriptor = getBaseJavaEditorDescriptor();
- // TODO WebServices for M3
- // else if (isWsdlInstance(obj))
- // currentDescriptor = getWsdlDescriptor();
- // else if (isWebserviceInstance(obj))
- // currentDescriptor = getWebServiceDescriptor();
+ else if (isWsdlInstance(obj))
+ currentDescriptor = getWsdlDescriptor();
+ else if (isWebserviceInstance(obj))
+ currentDescriptor = getWebServiceDescriptor();
else {
currentDescriptor = null;
return false;
@@ -392,18 +394,19 @@ public class OpenJ2EEResourceAction extends AbstractOpenAction {
* @param Object
* obj - The object to check instanceof.
*/
- // TODO WebServices for M3
- // protected boolean isWebserviceInstance(Object obj) {
- // EObject root = getRootObject(obj);
- // return (root instanceof Definition || root instanceof WebServices);
- // }
- // TODO WebServices for M3
- // protected boolean isWsdlInstance(Object obj) {
- // EObject root = getRootObject(obj);
- // IProject p = ProjectUtilities.getProject(root);
- // Object ws = getWebService(p);
- // return (obj instanceof WSDLResourceImpl) || (root instanceof Definition && ws == null);
- // }
+
+ protected boolean isWebserviceInstance(Object obj) {
+ EObject root = getRootObject(obj);
+ return (root instanceof Definition || root instanceof WebServices);
+ }
+
+ protected boolean isWsdlInstance(Object obj) {
+ EObject root = getRootObject(obj);
+ IProject p = ProjectUtilities.getProject(root);
+ Object ws = getWebService(p);
+ return (obj instanceof WSDLResourceImpl) || (root instanceof Definition && ws == null);
+ }
+
protected boolean is13ServiceRefForNature(String natureId, EObject root) {
try {
if (root instanceof WebServicesClient) {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/J2EEWebAppItemProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/J2EEWebAppItemProvider.java
index 0dcb7f252..a22a4c116 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/J2EEWebAppItemProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/J2EEWebAppItemProvider.java
@@ -23,15 +23,24 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationWrapper;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.jst.j2ee.internal.web.providers.WebAppItemProvider;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceEditModel;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
import org.eclipse.jst.j2ee.webapplication.WebApp;
import org.eclipse.jst.j2ee.webapplication.WebapplicationPackage;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
+import org.eclipse.jst.j2ee.webservice.wsclient.Webservice_clientPackage;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
/**
* @author jlanuti
*
- * To change the template for this generated type comment go to Window - Preferences - Java - Code
- * Generation - Code and Comments
+ * To change the template for this generated type comment go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
*/
public class J2EEWebAppItemProvider extends WebAppItemProvider {
@@ -42,84 +51,76 @@ public class J2EEWebAppItemProvider extends WebAppItemProvider {
private WebFilterMappingGroupItemProvider webFilterMappingGroup;
private WebReferencesGroupItemProvider webRefsGroup;
private WebSecurityGroupItemProvider webSecurityGroup;
- // TODO WebServices for M3
- // private J2EEWebServiceClientDDManager clientMgr;
+ private J2EEWebServiceClientDDManager clientMgr;
private WebListenerGroupItemProvider webListenerGroup;
/**
* Listen and fire updates for 1.3 web service clients
*/
- // TODO WebServices for M3
- // private class J2EEWebServiceClientDDManager extends AdapterImpl implements EditModelListener
- // {
- // private WebApp webApp;
- // private WebServicesManager webServiceMgr = WebServicesManager.getInstance();
- // WebServiceEditModel editModel;
- // WebServicesClient client;
- //
- // public J2EEWebServiceClientDDManager(WebApp webApp) {
- // this.webApp = webApp;
- // init();
- // }
- //
- // public void setWebApp(WebApp webApp) {
- // this.webApp = webApp;
- // }
- //
- // public void init() {
- // editModel = webServiceMgr.getWSEditModel(ProjectUtilities.getProject(webApp));
- // if (editModel != null) {
- // editModel.addListener(this);
- // if (editModel.get13WebServicesClientResource() != null) {
- // client = editModel.get13WebServicesClientResource().getWebServicesClient();
- // if (client != null)
- // client.eAdapters().add(this);
- // }
- // }
- // }
- //
- // /*
- // * (non-Javadoc)
- // *
- // * @see
- // org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent)
- // */
- // public void editModelChanged(EditModelEvent anEvent) {
- // if (editModel == null)
- // init();
- // }
- //
- // /*
- // * (non-Javadoc)
- // *
- // * @see
- // org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
- // */
- // public void notifyChanged(Notification notification) {
- // if (notification.getEventType() == Notification.ADD || notification.getEventType() ==
- // Notification.ADD_MANY || notification.getEventType() == Notification.REMOVE ||
- // notification.getEventType() == Notification.REMOVE_MANY) {
- // if (notification.getFeatureID(WebServicesClient.class) ==
- // Webservice_clientPackage.WEB_SERVICES_CLIENT__SERVICE_REFS) {
- // NotificationWrapper notificationWrapper = new NotificationWrapper(webRefsGroup,
- // notification);
- // fireNotifyChanged(notificationWrapper);
- // }
- // }
- // super.notifyChanged(notification);
- // }
- //
- // public void dispose() {
- // if (editModel != null) {
- // editModel.removeListener(this);
- // if (editModel.get13WebServicesClientResource() != null) {
- // client = editModel.get13WebServicesClientResource().getWebServicesClient();
- // if (client != null)
- // client.eAdapters().remove(this);
- // }
- // }
- // }
- // }
+ private class J2EEWebServiceClientDDManager extends AdapterImpl implements EditModelListener {
+ private WebApp webApp;
+ private WebServicesManager webServiceMgr = WebServicesManager.getInstance();
+ WebServiceEditModel editModel;
+ WebServicesClient client;
+
+ public J2EEWebServiceClientDDManager(WebApp webApp) {
+ this.webApp = webApp;
+ init();
+ }
+
+ public void setWebApp(WebApp webApp) {
+ this.webApp = webApp;
+ }
+
+ public void init() {
+ editModel = webServiceMgr.getWSEditModel(ProjectUtilities.getProject(webApp));
+ if (editModel != null) {
+ editModel.addListener(this);
+ if (editModel.get13WebServicesClientResource() != null) {
+ client = editModel.get13WebServicesClientResource().getWebServicesClient();
+ if (client != null)
+ client.eAdapters().add(this);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent)
+ */
+ public void editModelChanged(EditModelEvent anEvent) {
+ if (editModel == null)
+ init();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ public void notifyChanged(Notification notification) {
+ if (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.ADD_MANY || notification.getEventType() == Notification.REMOVE
+ || notification.getEventType() == Notification.REMOVE_MANY) {
+ if (notification.getFeatureID(WebServicesClient.class) == Webservice_clientPackage.WEB_SERVICES_CLIENT__SERVICE_REFS) {
+ NotificationWrapper notificationWrapper = new NotificationWrapper(webRefsGroup, notification);
+ fireNotifyChanged(notificationWrapper);
+ }
+ }
+ super.notifyChanged(notification);
+ }
+
+ public void dispose() {
+ if (editModel != null) {
+ editModel.removeListener(this);
+ if (editModel.get13WebServicesClientResource() != null) {
+ client = editModel.get13WebServicesClientResource().getWebServicesClient();
+ if (client != null)
+ client.eAdapters().remove(this);
+ }
+ }
+ }
+ }
/**
* Default constructor
*/
@@ -131,9 +132,8 @@ public class J2EEWebAppItemProvider extends WebAppItemProvider {
* initilaize list of children
*/
private void initChildren(WebApp webApp) {
- // TODO WebServices for M3
- // if (clientMgr == null)
- // clientMgr = new J2EEWebServiceClientDDManager(webApp);
+ if (clientMgr == null)
+ clientMgr = new J2EEWebServiceClientDDManager(webApp);
children.add(webServletGroup = new WebServletGroupItemProvider(adapterFactory, webApp));
children.add(webServletMappingGroup = new WebServletMappingGroupItemProvider(adapterFactory, webApp));
children.add(webFiltersGroup = new WebFiltersGroupItemProvider(adapterFactory, webApp));
@@ -168,9 +168,8 @@ public class J2EEWebAppItemProvider extends WebAppItemProvider {
provider.setWebApp(app);
}
}
- // TODO WebServices for M3
- // if (clientMgr != null)
- // clientMgr.setWebApp(app);
+ if (clientMgr != null)
+ clientMgr.setWebApp(app);
}
/*
@@ -188,8 +187,10 @@ public class J2EEWebAppItemProvider extends WebAppItemProvider {
* @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
*/
public void notifyChanged(Notification notification) {
- // We only care about adds and removes for the different item provider groups
- if (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.ADD_MANY || notification.getEventType() == Notification.REMOVE || notification.getEventType() == Notification.REMOVE_MANY) {
+ // We only care about adds and removes for the different item provider
+ // groups
+ if (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.ADD_MANY || notification.getEventType() == Notification.REMOVE
+ || notification.getEventType() == Notification.REMOVE_MANY) {
Object notifier = null;
switch (notification.getFeatureID(WebApp.class)) {
case WebapplicationPackage.WEB_APP__SERVLETS :
@@ -234,9 +235,8 @@ public class J2EEWebAppItemProvider extends WebAppItemProvider {
* @see org.eclipse.emf.edit.provider.IDisposable#dispose()
*/
public void dispose() {
- // TODO WebServices for M3
- // if (clientMgr != null)
- // clientMgr.dispose();
+ if (clientMgr != null)
+ clientMgr.dispose();
super.dispose();
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/WebReferencesGroupItemProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/WebReferencesGroupItemProvider.java
index 9aa636c4a..5347332e1 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/WebReferencesGroupItemProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/war/ui/util/WebReferencesGroupItemProvider.java
@@ -18,11 +18,13 @@ package org.eclipse.jst.j2ee.internal.war.ui.util;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.web.providers.WebAppEditResourceHandler;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
import org.eclipse.jst.j2ee.webapplication.WebApp;
/**
@@ -67,16 +69,15 @@ public class WebReferencesGroupItemProvider extends WebGroupItemProvider {
if (!webApp.getMessageDestinationRefs().isEmpty())
result.addAll(webApp.getMessageDestinationRefs());
- // TODO WebServices for M3
- // Collection serviceRefs = null;
- // try {
- // serviceRefs = WebServicesManager.getInstance().getServiceRefs(webApp);
- // } catch (RuntimeException re) {
- // serviceRefs = Collections.EMPTY_LIST;
- // }
- //
- // if (!serviceRefs.isEmpty())
- // result.addAll(serviceRefs);
+ Collection serviceRefs = null;
+ try {
+ serviceRefs = WebServicesManager.getInstance().getServiceRefs(webApp);
+ } catch (RuntimeException re) {
+ serviceRefs = Collections.EMPTY_LIST;
+ }
+
+ if (!serviceRefs.isEmpty())
+ result.addAll(serviceRefs);
return result;
}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/OpenExternalWSDLAction.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/OpenExternalWSDLAction.java
new file mode 100644
index 000000000..961484004
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/OpenExternalWSDLAction.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Apr 29, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import java.net.URL;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jst.j2ee.internal.actions.AbstractOpenAction;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.wst.internet.webbrowser.WebBrowser;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class OpenExternalWSDLAction extends AbstractOpenAction {
+
+ String uri = ""; //$NON-NLS-1$
+
+ /**
+ * @param text
+ */
+ public OpenExternalWSDLAction(String text) {
+ super(text);
+ this.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(J2EEUIPlugin.PLUGIN_ID, "icons/web_type.gif")); //$NON-NLS-1$
+ }
+
+ public void run() {
+ try {
+ WebBrowser.openURL(new URL(uri), WebBrowser.LOCATION_BAR | WebBrowser.BUTTON_BAR, null);
+ } catch (Exception e) {
+ //Ignore
+ }
+ }
+
+ public boolean updateSelection(IStructuredSelection s) {
+ Object obj = s.getFirstElement();
+ if (obj instanceof WSDLResourceImpl)
+ uri = ((WSDLResourceImpl) obj).getURI().toString();
+ return super.updateSelection(s);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceAdapterFactory.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceAdapterFactory.java
new file mode 100644
index 000000000..937748a19
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceAdapterFactory.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Mar 4, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
+import org.eclipse.jst.j2ee.webservice.wsdd.WsddResource;
+import org.eclipse.wst.common.internal.emfworkbench.EMFAdapterFactory;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.wsdl.Service;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceAdapterFactory extends EMFAdapterFactory {
+
+ /**
+ * Default constructor
+ */
+ public WebServiceAdapterFactory() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+ */
+ public Object getAdapter(Object adaptableObject, Class adapterType) {
+ WsddResource res = null;
+ if (adaptableObject instanceof Service)
+ res = WebServicesManager.getInstance().getWsddResource((Service) adaptableObject);
+
+ if (res != null && adapterType == EMFAdapterFactory.IFILE_CLASS)
+ return WorkbenchResourceHelper.getFile(res);
+ else if (res != null && adapterType == EMFAdapterFactory.IRESOURCE_CLASS)
+ return WorkbenchResourceHelper.getFile(res);
+ else if (res != null && adapterType == EMFAdapterFactory.IPROJECT_CLASS)
+ return ProjectUtilities.getProject(res);
+ else
+ return super.getAdapter(adaptableObject, adapterType);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceFilesContribution.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceFilesContribution.java
new file mode 100644
index 000000000..cc6a61c78
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceFilesContribution.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Jan 23, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceFilesContribution {
+
+ protected WebServiceDescription webService;
+ protected List allFiles = null;
+
+ /**
+ * Constructor
+ */
+ public WebServiceFilesContribution(WebServiceDescription webService) {
+ super();
+ this.webService = webService;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return WebServiceUIResourceHandler.getString("WebServiceFilesContribution_UI_0"); //$NON-NLS-1$
+ }
+
+ public String getWSDLFile() {
+ return webService.getWsdlFile();
+ }
+
+ public String getMappingFile() {
+ return webService.getJaxrpcMappingFile();
+ }
+
+ public List getAllFiles() {
+ if (allFiles == null) {
+ allFiles = new ArrayList();
+ allFiles.add(getWSDLFile());
+ allFiles.add(getMappingFile());
+ }
+ return allFiles;
+ }
+
+ /**
+ * @return Returns the webService.
+ */
+ public WebServiceDescription getWebService() {
+ return webService;
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroup.java
new file mode 100644
index 000000000..e206c59cc
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroup.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Jan 20, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.core.internal.resources.WorkspaceRoot;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceNavigatorGroup {
+
+ private String label = WebServiceUIResourceHandler.getString("WebServiceNavigatorGroup_UI_0"); //$NON-NLS-1$
+ private WorkspaceRoot root;
+
+ /**
+ * Default constructor
+ */
+ public WebServiceNavigatorGroup(WorkspaceRoot wsRoot) {
+ super();
+ root = wsRoot;
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return label;
+ }
+
+ /**
+ * @return Returns the root.
+ */
+ public WorkspaceRoot getRoot() {
+ return root;
+ }
+
+ /**
+ * @param root
+ * The root to set.
+ */
+ public void setRoot(WorkspaceRoot root) {
+ this.root = root;
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroupType.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroupType.java
new file mode 100644
index 000000000..edc9f9037
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceNavigatorGroupType.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 25, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.ui.IActionFilter;
+import org.eclipse.wst.wsdl.Service;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceNavigatorGroupType implements IActionFilter {
+
+ public static final int SERVICES = 0;
+ public static final int CLIENTS = 2;
+ public static final int HANDLERS = 3;
+
+ public static final String SERVICES_UI = WebServiceUIResourceHandler.getString("WebServiceNavigatorGroupType_UI_0"); //$NON-NLS-1$
+ public static final String CLIENTS_UI = WebServiceUIResourceHandler.getString("WebServiceNavigatorGroupType_UI_1"); //$NON-NLS-1$
+ public static final String HANDLERS_UI = WebServiceUIResourceHandler.getString("WebServiceNavigatorGroupType_UI_2"); //$NON-NLS-1$
+
+ private int TYPE;
+ private Service wsdlService = null;
+ private ServiceRef serviceRef = null;
+
+ /**
+ * Create a specific type of web service navigator grouping
+ */
+ public WebServiceNavigatorGroupType(int groupType) {
+ super();
+ TYPE = groupType;
+ }
+
+ /**
+ * Create a specific type of web service navigator grouping
+ */
+ public WebServiceNavigatorGroupType(int groupType, Service wsdlService) {
+ super();
+ TYPE = groupType;
+ this.wsdlService = wsdlService;
+ }
+
+ /**
+ * Create a specific type of web service navigator grouping
+ */
+ public WebServiceNavigatorGroupType(int groupType, ServiceRef serviceRef) {
+ super();
+ TYPE = groupType;
+ this.serviceRef = serviceRef;
+ }
+
+ /**
+ * @return Returns the TYPE.
+ */
+ public int getGroupType() {
+ return TYPE;
+ }
+
+ public boolean isServices() {
+ return getGroupType() == SERVICES;
+ }
+
+ public boolean isClients() {
+ return getGroupType() == CLIENTS;
+ }
+
+ public boolean isHandlers() {
+ return getGroupType() == HANDLERS;
+ }
+
+ public Service getWsdlService() {
+ return wsdlService;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ if (isServices())
+ return SERVICES_UI;
+ else if (isClients())
+ return CLIENTS_UI;
+ else if (isHandlers())
+ return HANDLERS_UI;
+ else
+ return super.toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionFilter#testAttribute(java.lang.Object, java.lang.String,
+ * java.lang.String)
+ */
+ public boolean testAttribute(Object target, String name, String value) {
+ if (target != null && target instanceof WebServiceNavigatorGroupType && value != null) {
+ WebServiceNavigatorGroupType group = (WebServiceNavigatorGroupType) target;
+ if (group.isClients() && value.equals(CLIENTS_UI))
+ return true;
+ else if (group.isServices() && value.equals(SERVICES_UI))
+ return true;
+ else if (group.isHandlers() && value.equals(HANDLERS_UI))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @return Returns the serviceRef.
+ */
+ public ServiceRef getServiceRef() {
+ return serviceRef;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceUIResourceHandler.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceUIResourceHandler.java
new file mode 100644
index 000000000..8cc1ca346
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServiceUIResourceHandler.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 27, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * @author jialin
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceUIResourceHandler {
+
+ private static ResourceBundle fgResourceBundle;
+
+ /**
+ * Returns the resource bundle used by all classes in this Project
+ */
+ public static ResourceBundle getResourceBundle() {
+ try {
+ return ResourceBundle.getBundle("webserviceui");//$NON-NLS-1$
+ } catch (MissingResourceException e) {
+ // does nothing - this method will return null and
+ // getString(String, String) will return the key
+ // it was called with
+ }
+ return null;
+ }
+
+ public static String getString(String key) {
+ if (fgResourceBundle == null) {
+ fgResourceBundle = getResourceBundle();
+ }
+
+ if (fgResourceBundle != null) {
+ try {
+ return fgResourceBundle.getString(key);
+ } catch (MissingResourceException e) {
+ return "!" + key + "!";//$NON-NLS-2$//$NON-NLS-1$
+ }
+ }
+ return "!" + key + "!";//$NON-NLS-2$//$NON-NLS-1$
+ }
+
+ public static void nlsConcatenationFinder() {
+ // used to tag methods which have concatenated strings
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorContentProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorContentProvider.java
new file mode 100644
index 000000000..968971190
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorContentProvider.java
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Jan 19, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.internal.resources.WorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jst.common.navigator.internal.providers.CommonAdapterFactoryContentProvider;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsdd.Handler;
+import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
+import org.eclipse.wst.common.internal.emfworkbench.integration.DynamicAdapterFactory;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener;
+import org.eclipse.wst.common.navigator.views.INavigatorContentProvider;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServicesNavigatorContentProvider extends CommonAdapterFactoryContentProvider implements INavigatorContentProvider, EditModelListener {
+
+ private WebServicesManager webServicesManager = null;
+ private boolean activityEnabled = false;
+ private WebServiceNavigatorGroup webServiceNavigatorGroup;
+ private WebServiceNavigatorGroupType SERVICES = null;
+ private WebServiceNavigatorGroupType CLIENTS = null;
+ private HashMap HANDLERS = new HashMap();
+ private final static String VIEWER_ID = "org.eclipse.wst.navigator.ui.WTPCommonNavigator";//$NON-NLS-1$
+
+ private TreeViewer viewer = null;
+
+ public WebServicesNavigatorContentProvider() {
+ super(createAdapterFactory());
+ WebServicesManager.getInstance().addListener(this);
+ // create the default synchronizer for any web service editor to use with view due
+ // to the usage of seperate edit models.
+ WebServicesNavigatorSynchronizer.createInstance(createAdapterFactory(), this);
+
+ }
+
+ /**
+ * Configure and return a composite adapter factory for our contents
+ */
+ public static AdapterFactory createAdapterFactory() {
+ return new DynamicAdapterFactory(VIEWER_ID);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+// if (!NavigatorActivityHelper.isActivityEnabled(getContainingExtension())) {
+// activityEnabled = false;
+// return super.getChildren(parentElement);
+// }
+// activityEnabled = true;
+
+ if (parentElement instanceof WorkspaceRoot) {
+ return new Object[]{getWebServicesNavigatorGroup(parentElement)};
+ } else if (parentElement instanceof WebServiceNavigatorGroup) {
+ return new Object[]{getServicesGroup(), getClientsGroup()};
+ } else if (parentElement instanceof WebServiceNavigatorGroupType && ((WebServiceNavigatorGroupType) parentElement).isServices()) {
+ List result = new ArrayList();
+ result.addAll(getWebServicesManager().getInternalWSDLServices());
+ result.addAll(getWebServicesManager().getExternalWSDLServices());
+ return result.toArray();
+ } else if (parentElement instanceof WebServiceNavigatorGroupType && ((WebServiceNavigatorGroupType) parentElement).isClients()) {
+ return getWebServicesManager().getAllWorkspaceServiceRefs().toArray();
+ } else if (parentElement instanceof Service) {
+ return getServiceLevelNodes(parentElement).toArray();
+ } else if (parentElement instanceof WebServiceNavigatorGroupType && ((WebServiceNavigatorGroupType) parentElement).isHandlers()) {
+ return getHandlerChildren(parentElement).toArray();
+ } else if (parentElement instanceof ServiceRef) {
+ Collection result = new ArrayList();
+ result.add(getHandlersGroup(parentElement));
+ return result.toArray();
+ } else if (parentElement instanceof Handler) {
+ return new ArrayList().toArray();
+ } else if (parentElement instanceof WSDLResourceImpl)
+ return new ArrayList().toArray();
+ else
+ return super.getChildren(parentElement);
+ }
+
+ private List getServiceLevelNodes(Object parentElement) {
+ List result = new ArrayList();
+ // add service classes
+ if (getWebServicesManager().isServiceInternal((Service) parentElement) && getWebServicesManager().getServiceImplBean((Service) parentElement) != null)
+ result.add(getWebServicesManager().getServiceImplBean((Service) parentElement));
+ // Add handlers
+ if (getWebServicesManager().isServiceInternal((Service) parentElement))
+ result.add(getHandlersGroup(parentElement));
+ //add wsdl file
+ WSDLResourceImpl wsdl = getWebServicesManager().getWSDLResource((Service) parentElement);
+ if (wsdl != null)
+ result.add(wsdl);
+ return result;
+ }
+
+ private List getHandlerChildren(Object parentElement) {
+ List result = new ArrayList();
+ WebServiceNavigatorGroupType handlersGroup = (WebServiceNavigatorGroupType) parentElement;
+ // handle web service handlers case
+ if (handlersGroup.getWsdlService() != null) {
+ PortComponent port = WebServicesManager.getInstance().getPortComponent(handlersGroup.getWsdlService());
+ if (port != null && port.getHandlers() != null && !port.getHandlers().isEmpty())
+ result.addAll(port.getHandlers());
+ }
+ // handle service ref case
+ else if (handlersGroup.getServiceRef() != null) {
+ result.addAll(handlersGroup.getServiceRef().getHandlers());
+ }
+ return result;
+ }
+
+ /**
+ * @param parentElement
+ * @return
+ */
+ protected WebServiceNavigatorGroup getWebServicesNavigatorGroup(Object parentElement) {
+ if (webServiceNavigatorGroup == null)
+ webServiceNavigatorGroup = new WebServiceNavigatorGroup((WorkspaceRoot) parentElement);
+ return webServiceNavigatorGroup;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if (element instanceof WorkspaceRoot)
+ return null;
+ else if (element instanceof WebServiceNavigatorGroup)
+ return ((WebServiceNavigatorGroup) element).getRoot();
+ else
+ return super.getParent(element);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
+ // TODO handle change events
+ if (aViewer !=null && aViewer instanceof TreeViewer)
+ viewer = (TreeViewer)aViewer;
+ super.inputChanged(aViewer,oldInput,newInput);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ super.dispose();
+ WebServicesManager.getInstance().removeListener(this);
+ // dispose current instance of web service editor/explorer synchronizer
+ WebServicesNavigatorSynchronizer.disposeInstance();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent)
+ */
+ public void editModelChanged(EditModelEvent anEvent) {
+ //this.getExtensionSite().notifyElementReplaced(this, ((WebServicesNavigatorContentProvider) getContentProvider()).getNavigatorGroup());
+ notifyChanged(new NotificationImpl(anEvent.getEventCode(),getNavigatorGroup(),getNavigatorGroup()));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /**
+ * @return Returns the navigatorGroup.
+ */
+ public WebServiceNavigatorGroup getNavigatorGroup() {
+ if (null == webServiceNavigatorGroup) {
+ webServiceNavigatorGroup = new WebServiceNavigatorGroup((WorkspaceRoot) ResourcesPlugin.getWorkspace().getRoot());
+ }
+ return webServiceNavigatorGroup;
+ }
+
+ protected WebServicesManager getWebServicesManager() {
+ if (webServicesManager == null)
+ webServicesManager = WebServicesManager.getInstance();
+ return webServicesManager;
+ }
+
+ /**
+ * @return Returns the activityEnabled.
+ */
+ public boolean isActivityEnabled() {
+ return activityEnabled;
+ }
+
+ private WebServiceNavigatorGroupType getServicesGroup() {
+ if (SERVICES == null)
+ SERVICES = new WebServiceNavigatorGroupType(WebServiceNavigatorGroupType.SERVICES);
+ return SERVICES;
+ }
+
+ private WebServiceNavigatorGroupType getClientsGroup() {
+ if (CLIENTS == null)
+ CLIENTS = new WebServiceNavigatorGroupType(WebServiceNavigatorGroupType.CLIENTS);
+ return CLIENTS;
+ }
+
+ private WebServiceNavigatorGroupType getHandlersGroup(Object key) {
+ if (key == null)
+ return null;
+ WebServiceNavigatorGroupType handler = null;
+ handler = (WebServiceNavigatorGroupType) HANDLERS.get(key);
+ if (handler == null) {
+ if (key instanceof Service)
+ handler = new WebServiceNavigatorGroupType(WebServiceNavigatorGroupType.HANDLERS, (Service) key);
+ else if (key instanceof ServiceRef)
+ handler = new WebServiceNavigatorGroupType(WebServiceNavigatorGroupType.HANDLERS, (ServiceRef) key);
+ if (handler != null)
+ HANDLERS.put(key, handler);
+ }
+ return handler;
+ }
+ /**
+ * @return Returns the viewer.
+ */
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorGroupOpenListener.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorGroupOpenListener.java
new file mode 100644
index 000000000..d8f729c69
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorGroupOpenListener.java
@@ -0,0 +1,70 @@
+/*
+ * Created on Feb 10, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.IOpenListener;
+import org.eclipse.jface.viewers.OpenEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.actions.OpenJ2EEResourceAction;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+/**
+ * @author jlanuti
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WebServicesNavigatorGroupOpenListener implements IOpenListener {
+
+ private OpenExternalWSDLAction openExternalWSDLAction = new OpenExternalWSDLAction(WebServiceUIResourceHandler.getString("WebServiceGroupContentExtension_UI_1")); //$NON-NLS-1$
+ private OpenJ2EEResourceAction openAction = new OpenJ2EEResourceAction();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IOpenListener#open(org.eclipse.jface.viewers.OpenEvent)
+ */
+ public void open(OpenEvent event) {
+ StructuredSelection selection = (StructuredSelection)event.getSelection();
+ Object selectedObject = selection.getFirstElement();
+ if (selectedObject == null)
+ return;
+ else if (selectedObject instanceof ServiceImplBean)
+ return;
+ else if (selectedObject instanceof WSDLResourceImpl) {
+ WSDLResourceImpl wsdl = (WSDLResourceImpl) selectedObject;
+ IFile wsdlFile = WorkbenchResourceHelper.getFile(wsdl);
+ if (wsdlFile == null && !wsdlFile.exists()) {
+ openExternalWSDLAction.selectionChanged(selection);
+ openExternalWSDLAction.run();
+ return;
+ }
+ }
+ else {
+ openAction.selectionChanged(selection);
+ openAction.run();
+ }
+ }
+ //TODO fill open with menu for web services group
+
+// return new CommonEditActionGroup(getExtensionSite()) {
+// public void fillOpenWithMenu(IMenuManager menu) {
+// if ((getExtensionSite().getSelection().getFirstElement() instanceof BeanLink)) {
+// openAction.selectionChanged(getExtensionSite().getSelection());
+// menu.insertAfter(ICommonMenuConstants.COMMON_MENU_TOP, openAction);
+// } else if ((getExtensionSite().getSelection().getFirstElement() instanceof WSDLResourceImpl)) {
+// WSDLResourceImpl wsdl = (WSDLResourceImpl) getExtensionSite().getSelection().getFirstElement();
+// IFile wsdlFile = WorkbenchResourceHelper.getFile(wsdl);
+// if (wsdlFile == null || !wsdlFile.exists()) {
+// openExternalWSDLAction.selectionChanged(getExtensionSite().getSelection());
+// menu.insertAfter(ICommonMenuConstants.COMMON_MENU_TOP, openExternalWSDLAction);
+// }
+// }
+// }
+
+}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorLabelProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorLabelProvider.java
new file mode 100644
index 000000000..2b2fa5421
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorLabelProvider.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Jan 19, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jst.j2ee.ejb.Session;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsdd.EJBLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.Handler;
+import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServletLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.WSDLPort;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.common.internal.emfworkbench.integration.DynamicAdapterFactory;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServicesNavigatorLabelProvider extends AdapterFactoryLabelProvider implements ILabelProvider {
+
+ private final static String VIEWER_ID = "org.eclipse.wst.navigator.ui.WTPCommonNavigator";//$NON-NLS-1$
+
+ public WebServicesNavigatorLabelProvider() {
+ super(createAdapterFactory());
+ }
+
+ /**
+ * Configure and return a composite adapter factory for our contents
+ */
+ public static AdapterFactory createAdapterFactory() {
+ return new DynamicAdapterFactory(VIEWER_ID);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object element) {
+ if (element instanceof WebServiceNavigatorGroup)
+ return J2EEUIPlugin.getDefault().getImage("webServicesFolder_obj"); //$NON-NLS-1$
+ else if (element instanceof String)
+ return J2EEUIPlugin.getDefault().getImage("wsdl"); //$NON-NLS-1$
+ else if (element instanceof WebServiceNavigatorGroupType)
+ return J2EEUIPlugin.getDefault().getImage("folder"); //$NON-NLS-1$
+ else if (element instanceof Service) {
+ if (WebServicesManager.getInstance().isServiceInternal((Service) element))
+ return J2EEUIPlugin.getDefault().getImage("webServiceItemProvider_obj"); //$NON-NLS-1$
+ return J2EEUIPlugin.getDefault().getImage("extwebserviceitemprovider_obj"); //$NON-NLS-1$
+ } else if (element instanceof WSDLResourceImpl)
+ return J2EEUIPlugin.getDefault().getImage("wsdl"); //$NON-NLS-1$
+ else
+ return super.getImage(element);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element) {
+ String space = " "; //$NON-NLS-1$
+ if (element instanceof WebServiceDescription)
+ return getWebServiceDescriptionText((WebServiceDescription) element);
+ else if (element instanceof PortComponent)
+ return WebServiceUIResourceHandler.getString("PORT_UI_") + space + super.getText(element); //$NON-NLS-1$
+ else if (element instanceof Handler)
+ return WebServiceUIResourceHandler.getString("HANDLER_UI_") + space + super.getText(element); //$NON-NLS-1$
+ else if (element instanceof WSDLPort)
+ return WebServiceUIResourceHandler.getString("WSDL_PORT_UI_") + space + super.getText(element); //$NON-NLS-1$
+ else if (element instanceof ServiceImplBean)
+ return WebServiceUIResourceHandler.getString("SERVICE_CLASSES_UI_"); //$NON-NLS-1$
+ else if (element instanceof EJBLink)
+ return WebServiceUIResourceHandler.getString("SERVICE_IMPL_UI_") + space + super.getText(element); //$NON-NLS-1$
+ else if (element instanceof ServletLink)
+ return WebServiceUIResourceHandler.getString("SERVICE_IMPL_UI_") + space + super.getText(element); //$NON-NLS-1$
+ else if (element instanceof Service)
+ return ((Service) element).getQName().getLocalPart();
+ else if (element instanceof WSDLResourceImpl) {
+ String result = ""; //$NON-NLS-1$
+ IFile file = WorkbenchResourceHelper.getFile((WSDLResourceImpl) element);
+ if (file != null && file.exists())
+ result = file.getFullPath().toString();
+ else
+ result = ((WSDLResourceImpl) element).getURI().toString();
+ return WebServiceUIResourceHandler.getString("WSDL_UI_") + space + result; //$NON-NLS-1$
+ } else if (element instanceof ServiceRef) {
+ String beanName14 = ""; //$NON-NLS-1$
+ if (WebServicesManager.getInstance().isJ2EE14((ServiceRef) element)) {
+ if (((ServiceRef) element).eContainer() instanceof Session)
+ beanName14 = ((Session) ((ServiceRef) element).eContainer()).getName() + ": "; //$NON-NLS-1$
+ }
+
+ return ProjectUtilities.getProject((ServiceRef) element).getName() + ": " + beanName14 //$NON-NLS-1$
+ + ((ServiceRef) element).getServiceRefName();
+ } else
+ return super.getText(element);
+ }
+
+ /**
+ * get text for web service
+ */
+ private String getWebServiceDescriptionText(WebServiceDescription description) {
+ Resource res = description.eResource();
+ IProject project = null;
+ String projString = ""; //$NON-NLS-1$
+ if (res != null)
+ project = WorkbenchResourceHelper.getProject(res);
+ if (project != null)
+ projString = project.getName() + ": "; //$NON-NLS-1$
+ return projString + super.getText(description);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener) {
+ // TODO add any listeners?
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose() {
+ // TODO handle dispose
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
+ * java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ // TODO do something smart here?
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener) {
+ // TODO how do we remove listeners?
+
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorSynchronizer.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorSynchronizer.java
new file mode 100644
index 000000000..661cafb73
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WebServicesNavigatorSynchronizer.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Jun 10, 2004
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jst.common.navigator.internal.providers.CommonAdapterFactoryContentProvider;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServices;
+import org.eclipse.wst.wsdl.Service;
+
+/**
+ * @author jlanuti
+ */
+public class WebServicesNavigatorSynchronizer extends CommonAdapterFactoryContentProvider implements Adapter {
+
+
+ private static WebServicesNavigatorSynchronizer INSTANCE = null;
+ protected Notifier target = null;
+ private WebServicesNavigatorContentProvider contentProvider = null;
+
+ /**
+ * Constructor
+ */
+ public WebServicesNavigatorSynchronizer(AdapterFactory adapterFactory, WebServicesNavigatorContentProvider provider) {
+ super(adapterFactory);
+ contentProvider = provider;
+ }
+
+ public static WebServicesNavigatorSynchronizer getInstance() {
+ return INSTANCE;
+ }
+
+ public static WebServicesNavigatorSynchronizer createInstance(AdapterFactory adapterFactory, WebServicesNavigatorContentProvider provider) {
+ INSTANCE = new WebServicesNavigatorSynchronizer(adapterFactory, provider);
+ return INSTANCE;
+ }
+
+ public static void disposeInstance() {
+ INSTANCE = null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#getTarget()
+ */
+ public Notifier getTarget() {
+ return target;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object)
+ */
+ public boolean isAdapterForType(Object type) {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#setTarget(org.eclipse.emf.common.notify.Notifier)
+ */
+ public void setTarget(Notifier newTarget) {
+ target = newTarget;
+ }
+
+ public void notifyChanged(final Notification notification) {
+ EObject notifier = (EObject) notification.getNotifier();
+
+ if (notifier instanceof WebServices)
+ return;
+
+ if (notifier instanceof ServiceRef) {
+ contentProvider.inputChanged(contentProvider.getViewer(),notification.getOldValue(),notification.getNewValue());
+ return;
+ }
+
+ while (!(notifier instanceof WebServiceDescription) && notifier != null)
+ notifier = notifier.eContainer();
+
+ if (notifier == null) {
+ //site.notifyElementReplaced(getContainingExtension(), null);
+ return;
+ }
+
+ Service wsdl = WebServicesManager.getInstance().getWSDLServiceForWebService((WebServiceDescription) notifier);
+ Service oldWsdl = WebServicesManager.getInstance().getWSDLServiceForWebService((WebServiceDescription) notification.getOldValue());
+ contentProvider.inputChanged(contentProvider.getViewer(), oldWsdl,wsdl);
+
+ super.notifyChanged(notification);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WsdlResourceAdapterFactory.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WsdlResourceAdapterFactory.java
new file mode 100644
index 000000000..8882992e3
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/webservice/WsdlResourceAdapterFactory.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Mar 5, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservice;
+
+import org.eclipse.wst.common.internal.emfworkbench.EMFAdapterFactory;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WsdlResourceAdapterFactory extends EMFAdapterFactory {
+
+ /**
+ * Default constructor
+ */
+ public WsdlResourceAdapterFactory() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
+ */
+ public Object getAdapter(Object adaptableObject, Class adapterType) {
+ WSDLResourceImpl res = null;
+ if (adaptableObject instanceof WSDLResourceImpl)
+ res = (WSDLResourceImpl) adaptableObject;
+
+ if (res != null && adapterType == EMFAdapterFactory.IFILE_CLASS)
+ return WorkbenchResourceHelper.getFile(res) != null ? WorkbenchResourceHelper.getFile(res) : null;
+ else if (res != null && adapterType == EMFAdapterFactory.IRESOURCE_CLASS)
+ return WorkbenchResourceHelper.getFile(res);
+ else if (res != null && adapterType == EMFAdapterFactory.IPROJECT_CLASS)
+ return ProjectUtilities.getProject(res);
+ else
+ return super.getAdapter(adaptableObject, adapterType);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/plugin.xml b/plugins/org.eclipse.jst.j2ee.ui/plugin.xml
index aaab50af2..405c3a22c 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee.ui/plugin.xml
@@ -50,6 +50,7 @@
<import plugin="org.eclipse.debug.ui"/>
<import plugin="org.eclipse.wst.sse.core"/>
<import plugin="org.eclipse.wst.xml.core"/>
+ <import plugin="org.eclipse.wst.wsdl"/>
</requires>
@@ -352,40 +353,54 @@
</adapterFactory>
</extension>
-<!-- TODO WebServices for M3
+
<extension
point="org.eclipse.wst.common.navigator.views.navigatorContent">
<navigatorContent
name="Web Services"
priority="30"
icon="icons/webgroup_obj.gif"
- class="org.eclipse.jst.internal.webservice.WebServiceGroupContentExtension"
+ contentProvider="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorContentProvider"
+ labelProvider="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorLabelProvider"
+ openListener="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorGroupOpenListener"
id="org.eclipse.wst.common.frameworks.internal.navigator.webservice"
rootLabel="Web Services" >
<enables>
<or>
<objectClass
- name="org.eclipse.jst.internal.webservice.WebServiceNavigatorGroup">
+ name="org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroup">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroupType">
</objectClass>
<objectClass
- name="org.eclipse.jst.internal.webservice.wsdd.WebServiceDescription">
+ name="org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl">
</objectClass>
</or>
</enables>
+ <emfEnablement>
+ <package uri="wsdd.xmi" />
+ <package uri="webservice_client.xmi" />
+ <package uri="wscommon.xmi" />
+ <package uri="http://www.ibm.com/wsdl/2003/WSDL"/>
+ </emfEnablement>
</navigatorContent>
</extension>
- -->
+
<!-- J2EE View Web Services contribution -->
- <!-- TODO WebServices for M3 -->
-<!-- <extension
+
+ <extension
point="org.eclipse.wst.common.navigator.views.navigatorViewer">
<navigatorViewer
- rootContentExtensionId="org.eclipse.wst.common.frameworks.navigator.webservice"
+ rootContentExtensionId="org.eclipse.wst.common.frameworks.internal.navigator.webservice"
viewerId="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
</navigatorViewer>
</extension>
- -->
+
<!-- Navigator Object Contributions -->
<!-- EAR Group Contributions
<extension
diff --git a/plugins/org.eclipse.jst.j2ee.ui/plugin.xml.tmp b/plugins/org.eclipse.jst.j2ee.ui/plugin.xml.tmp
new file mode 100644
index 000000000..92b6e42a6
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/plugin.xml.tmp
@@ -0,0 +1,920 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+ id="org.eclipse.jst.j2ee.ui"
+ name="WTP J2EE UI Plug-in"
+ version="1.0.0"
+ provider-name="IBM"
+ description="This plugin contains J2EE project creation, import, and export wizards for Applications and EJB, AppClients, Web and Connector modules. Related actions are contributed to the Project Explorer. J2EE Migration and some Web Service support are also defined here. This plugin offers no extension-points."
+ class="org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin">
+
+ <runtime>
+ <library name="j2ee_ui.jar">
+ <export name="*"/>
+ </library>
+ </runtime>
+ <requires>
+ <import plugin="org.eclipse.ui.ide"/>
+ <import plugin="org.eclipse.wst.common.navigator.views"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.wst.common.frameworks.ui"/>
+ <import plugin="org.eclipse.jst.j2ee"/>
+ <import plugin="org.eclipse.jst.j2ee.ejb"/>
+ <import plugin="org.eclipse.jst.j2ee.jca"/>
+ <import plugin="org.eclipse.jst.j2ee.web"/>
+ <import plugin="org.eclipse.emf.edit.ui"/>
+ <import plugin="org.eclipse.jdt.ui"/>
+ <import plugin="org.eclipse.wst.validation"/>
+ <import plugin="org.eclipse.jst.j2ee.core"/>
+ <import plugin="com.ibm.wtp.emf.workbench"/>
+ <import plugin="org.eclipse.wst.common.emfworkbench.integration"/>
+ <import plugin="org.eclipse.ui.workbench"/>
+ <import plugin="org.eclipse.jem.workbench"/>
+ <import plugin="org.eclipse.jem"/>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.wst.common.frameworks"/>
+ <import plugin="org.eclipse.jdt.core"/>
+ <import plugin="org.eclipse.wst.server.core"/>
+ <import plugin="org.eclipse.wst.server.ui"/>
+ <import plugin="org.eclipse.wst.common.emf"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.wst.common.migration"/>
+ <import plugin="org.eclipse.ltk.core.refactoring"/>
+ <import plugin="org.eclipse.wst.internet.webbrowser"/>
+ <import plugin="org.eclipse.jface.text"/>
+ <import plugin="org.eclipse.jst.common.annotations.controller"/>
+ <import plugin="org.eclipse.jst.common.navigator.java"/>
+ <import plugin="org.eclipse.wst.web"/>
+ <import plugin="org.eclipse.wst.common.navigator.workbench"/>
+ <import plugin="org.eclipse.debug.ui"/>
+ <import plugin="org.eclipse.wst.sse.core"/>
+ <import plugin="org.eclipse.wst.xml.core"/>
+ <import plugin="org.eclipse.wst.wsdl"/>
+
+ </requires>
+
+
+<!--================================-->
+<!-- Project Wizard Contributions -->
+<!--================================-->
+ <extension
+ id="J2EEUIProjectWizards"
+ point="org.eclipse.ui.newWizards">
+ <category
+ name="%j2ee.category_ui_"
+ id="org.eclipse.jst.j2ee.internal">
+ </category>
+<!-- Application Project Wizard -->
+ <wizard
+ name="%ear.project_ui_"
+ icon="icons/full/ctool16/newear_wiz.gif"
+ category="org.eclipse.jst.j2ee.internal"
+ class="org.eclipse.jst.j2ee.ui.EnterpriseApplicationCreationWizard"
+ project="true"
+ finalPerspective="org.eclipse.jst.j2ee.J2EEPerspective"
+ id="org.eclipse.jst.j2ee.ui.EnterpriseApplicationCreationWizard"
+ >
+ <description>
+ %new.ear.project.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+<!-- Application Client Project Wizard -->
+ <wizard
+ name="%appclient.project_ui_"
+ icon="icons/full/ctool16/newappclient_wiz.gif"
+ category="org.eclipse.jst.j2ee.internal"
+ class="org.eclipse.jst.j2ee.ui.AppClientModuleCreationWizard"
+ project="true"
+ finalPerspective="org.eclipse.jst.j2ee.J2EEPerspective"
+ id="org.eclipse.jst.j2ee.ui.AppClientModuleCreationWizard">
+ <description>
+ %new.appclient.project.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+
+
+ </extension>
+<!--================================-->
+<!-- Import Wizard Contributions -->
+<!--================================-->
+ <extension
+ point="org.eclipse.ui.importWizards">
+ <wizard
+ name="%client.jar.file_ui_"
+ icon="icons/full/ctool16/appclient_import_wiz.gif"
+ class="org.eclipse.jst.j2ee.ui.AppClientModuleImportWizard"
+ id="org.eclipse.jst.j2ee.ui.AppClientModuleImportWizard">
+ <description>
+ %client.import.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ <wizard
+ name="%ear.file_ui_"
+ icon="icons/full/ctool16/import_ear.gif"
+ class="org.eclipse.jst.j2ee.ui.EnterpriseApplicationImportWizard"
+ id="org.eclipse.jst.j2ee.ui.EnterpriseApplicationImportWizard">
+ <description>
+ %ear.import.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ <wizard
+ class="org.eclipse.jst.j2ee.ui.J2EEUtilityJarImportWizard"
+ icon="icons/jar_obj.gif"
+ name="%utility_jar_import_wizard"
+ id="org.eclipse.jst.j2ee.ui.J2EEUtilityJarImportWizard">
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ <wizard
+ name="%Import_Classes"
+ icon=""
+ class="org.eclipse.jst.j2ee.internal.wizard.ClassesImportWizard"
+ id="org.eclipse.jst.j2ee.internal.wizard.ClassesImportWizard">
+
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ </extension>
+<!--================================-->
+<!-- Export Wizard Contributions -->
+<!--================================-->
+ <extension
+ point="org.eclipse.ui.exportWizards">
+ <wizard
+ name="%client.jar.file_ui_"
+ icon="icons/full/ctool16/appclient_export.gif"
+ class="org.eclipse.jst.j2ee.ui.AppClientModuleExportWizard"
+ id="org.eclipse.jst.j2ee.ui.AppClientModuleExportWizard">
+ <description>
+ %client.export.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ <wizard
+ name="%ear.file_ui_"
+ icon="icons/full/ctool16/export_ear.gif"
+ class="org.eclipse.jst.j2ee.ui.EnterpriseApplicationExportWizard"
+ id="org.eclipse.jst.j2ee.ui.EnterpriseApplicationExportWizard">
+ <description>
+ %ear.export.description_ui_
+ </description>
+ <selection
+ class="org.eclipse.core.resources.IResource">
+ </selection>
+ </wizard>
+ </extension>
+<!-- ====================================================== -->
+<!-- Extension point: org.eclipse.ui.projectNatureImages -->
+<!-- Purpose: Attach icon overlays for J2EE project natures -->
+<!-- ====================================================== -->
+ <extension
+ point="org.eclipse.ui.ide.projectNatureImages">
+ <image
+ icon="icons/full/ovr16/ejb_module_ovr.gif"
+ natureId="org.eclipse.jst.j2ee.ejb.EJBNature"
+ id="org.eclipse.ui.ejbProjectNatureImage">
+ </image>
+ <image
+ icon="icons/full/ovr16/enterprise_app_ovr.gif"
+ natureId="org.eclipse.jst.j2ee.EARNature"
+ id="org.eclipse.ui.earProjectNatureImage">
+ </image>
+ <image
+ icon="icons/full/ovr16/client_app_ovr.gif"
+ natureId="org.eclipse.jst.j2ee.ApplicationClientNature"
+ id="org.eclipse.ui.appClientModProjectNatureImage">
+ </image>
+ <image
+ icon="icons/full/ovr16/connector_ovr.gif"
+ natureId="org.eclipse.jst.j2ee.jca.ConnectorNature"
+ id="org.eclipse.ui.ConnectorModProjectNatureImage">
+ </image>
+ <image
+ icon="icons/full/ovr16/web_module_ovr.gif"
+ natureId="org.eclipse.jst.j2ee.web.WebNature"
+ id="org.eclipse.ui.webProjectNatureImage">
+ </image>
+ </extension>
+
+<!-- Navigator Object Contributions -->
+<!-- EAR Group Contributions
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.earNewProjectActions">
+ <action
+ label="%ear.project_ui_"
+ icon="icons/full/ctool16/newear_wiz.gif"
+ class="org.eclipse.jst.j2ee.internal.actions.NewEARProjectAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.new.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.newEARAction">
+ </action>
+ <visibility>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </visibility>
+ </objectContribution>
+ </extension>
+ -->
+<!-- Navigator Object Contributions -->
+<!-- Application Client Group Contributions
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.appClientNewProjectActions">
+ <action
+ label="%appclient.project_ui_"
+ icon="icons/full/ctool16/newappclient_wiz.gif"
+ class="org.eclipse.jst.j2ee.internal.actions.NewApplClientProjectAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.new.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.newAppClientAction">
+ </action>
+ <visibility>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </visibility>
+ </objectContribution>
+ </extension>
+ -->
+<!-- Navigator Object Contributions -->
+
+ <extension
+ point="org.eclipse.wst.common.frameworks.ui.wtpuiAction">
+ <masterOperation
+ description="Delete the dependent J2EE modules"
+ extendedGenericId="org.eclipse.wst.common.generic.Delete"
+ populatorClass="org.eclipse.jst.j2ee.internal.ui.actions.J2EEDeleteModuleActionPopulator"
+ operationClass="org.eclipse.wst.common.frameworks.internal.operation.extension.ui.IActionWTPOperation"
+ name="Delete J2EE Dependent Modules"
+ alwaysExecute="true"
+ overrideId="org.eclipse.wst.common.actions.Java.delete">
+ <selectionEnablement>
+ <or>
+ <and>
+ <objectClass name="org.eclipse.core.resources.IProject"
+ adaptable="true" />
+ <or>
+ <objectState
+ value="org.eclipse.jst.j2ee.EARNature"
+ name="projectNature" />
+ <objectState
+ value="org.eclipse.jst.j2ee.ApplicationClientNature"
+ name="projectNature" />
+ <objectState
+ value="org.eclipse.jst.j2ee.jca.ConnectorNature"
+ name="projectNature" />
+ <objectState
+ value="org.eclipse.jst.j2ee.ejb.EJBNature"
+ name="projectNature" />
+ <objectState
+ value="org.eclipse.jst.j2ee.web.WebNature"
+ name="projectNature" />
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.application.Application">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.client.ApplicationClient">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.jca.Connector">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.ejb.EJBJar">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.webapplication.WebApp">
+ </objectClass>
+ </or>
+ </selectionEnablement>
+ </masterOperation>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.emfworkbench.integration.adapterFactory">
+ <adapterFactory
+ className="org.eclipse.jst.j2ee.internal.ejb.provider.J2EEEjbItemProviderAdapterFactory"
+ packageURI="ejb.xmi"
+ id="org.eclipse.jst.j2ee.internal.ejb.provider.J2EEEjbItemProviderAdapterFactory">
+ <view
+ id="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
+ </view>
+ </adapterFactory>
+ <adapterFactory
+ className="org.eclipse.jst.j2ee.internal.war.ui.util.J2EEWebItemProviderAdapterFactory"
+ packageURI="webapplication.xmi"
+ id="org.eclipse.jst.j2ee.internal.war.ui.util.J2EEWebItemProviderAdapterFactory">
+ <view
+ id="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
+ </view>
+ </adapterFactory>
+ <adapterFactory
+ className="org.eclipse.jst.j2ee.internal.provider.J2EEApplicationItemProviderAdapterFactory"
+ packageURI="application.xmi"
+ id="org.eclipse.jst.j2ee.internal.provider.J2EEApplicationItemProviderAdapterFactory">
+ <view
+ id="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
+ </view>
+ </adapterFactory>
+ <adapterFactory
+ className="org.eclipse.jst.j2ee.internal.provider.J2EEModulemapItemProviderAdapterFactory"
+ packageURI="modulemap.xmi"
+ id="org.eclipse.jst.j2ee.internal.provider.J2EEModulemapItemProviderAdapterFactory">
+ <view
+ id="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
+ </view>
+ </adapterFactory>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.navigator.views.navigatorContent">
+ <navigatorContent
+ name="Web Services"
+ priority="30"
+ icon="icons/webgroup_obj.gif"
+ contentProvider="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorContentProvider"
+ labelProvider="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorLabelProvider"
+ openListener="org.eclipse.jst.j2ee.internal.webservice.WebServicesNavigatorGroupOpenListener"
+ id="org.eclipse.wst.common.frameworks.internal.navigator.webservice"
+ rootLabel="Web Services" >
+ <enables>
+ <or>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroup">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroupType">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl">
+ </objectClass>
+ </or>
+ </enables>
+ <emfEnablement>
+ <package uri="wsdd.xmi" />
+ <package uri="webservice_client.xmi" />
+ <package uri="wscommon.xmi" />
+ <package uri="http://www.ibm.com/wsdl/2003/WSDL"/>
+ </emfEnablement>
+ </navigatorContent>
+ </extension>
+
+
+ <!-- J2EE View Web Services contribution -->
+
+ <extension
+ point="org.eclipse.wst.common.navigator.views.navigatorViewer">
+ <navigatorViewer
+ rootContentExtensionId="org.eclipse.wst.common.frameworks.internal.navigator.webservice"
+ viewerId="org.eclipse.wst.navigator.ui.WTPCommonNavigator">
+ </navigatorViewer>
+ </extension>
+
+<!-- Navigator Object Contributions -->
+<!-- EAR Group Contributions
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.earProjectActions">
+ <action
+ label="%ear.file_ui_"
+ icon="icons/full/ctool16/import_ear.gif"
+ class="org.eclipse.jst.j2ee.internal.ear.actions.ImportEARAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.import.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.importEARAction">
+ </action>
+ <action
+ label="%ear.file_ui_"
+ icon="icons/full/ctool16/export_ear.gif"
+ class="org.eclipse.jst.j2ee.internal.ear.actions.ExportEARAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.export.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.exportEARAction">
+ </action>
+ <visibility>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </visibility>
+ </objectContribution>
+ </extension>
+ -->
+<!-- Navigator Object Contributions -->
+<!-- Application Client Group Contributions
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.appClientProjectActions">
+ <action
+ label="%client.jar.file_ui_"
+ icon="icons/full/ctool16/appclient_import_wiz.gif"
+ class="org.eclipse.jst.j2ee.internal.client.actions.ImportApplicationClientAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.import.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.importAppClientAction">
+ </action>
+ <action
+ label="%client.jar.file_ui_"
+ icon="icons/full/ctool16/appclient_export.gif"
+ class="org.eclipse.jst.j2ee.internal.client.actions.ExportApplicationClientAction"
+ menubarPath="org.eclipse.wst.common.frameworks.internal.navigator.export.menu/additions"
+ enablesFor="1"
+ id="org.eclipse.jst.j2ee.internal.ui.navigator.exportAppClientAction">
+ </action>
+ <visibility>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </visibility>
+ </objectContribution>
+ </extension>
+ -->
+<!-- Navigator Object Contributions -->
+<!-- ================================================== -->
+<!-- DEPLOY EXTENSIONS -->
+<!-- ================================================== -->
+<!-- <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="java.lang.Object"
+ nameFilter="*"
+ id="org.eclipse.jst.j2ee.internal.ui.deploy">
+ <action
+ label="%deploy_ui_"
+ icon="icons/full/ctool16/re_execute.gif"
+ class="org.eclipse.jst.j2ee.internal.actions.J2EEDeployAction"
+ menubarPath="additions"
+ id="deployAction">
+ </action>
+ <visibility>
+ <or>
+ <objectClass
+ name="org.eclipse.jst.j2ee.ejb.EJBJar">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.ejb.EnterpriseBean">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.webapplication.WebApp">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.jca.Connector">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.Application">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.client.ApplicationClient">
+ </objectClass>
+ <and>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.jca.ConnectorNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ejb.EJBNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.web.WebNature">
+ </objectState>
+ </or>
+ </and>
+ </or>
+ </visibility>
+ </objectContribution>
+ </extension> -->
+<!-- Navigator Object Contributions -->
+
+
+
+ <extension
+ point="org.eclipse.ui.propertyPages">
+<!-- ====================================================== -->
+<!-- J2EE Dependencies properties page -->
+<!-- ====================================================== -->
+<!-- =========== org.eclipse.jst.j2ee.internal.EARNature ============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ adaptable="true"
+ name="%j2ee"
+ class="org.eclipse.jst.j2ee.internal.J2EEPropertiesPage"
+ id="J2EEPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </filter>
+ </page>
+<!-- =========== org.eclipse.jst.j2ee.internal.web.WebNature ============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ adaptable="true"
+ name="%j2ee"
+ class="org.eclipse.jst.j2ee.internal.J2EEPropertiesPage"
+ id="J2EEPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jst.j2ee.web.WebNature">
+ </filter>
+ </page>
+<!-- =========== org.eclipse.jst.j2ee.internal.jca ============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ adaptable="true"
+ name="%j2ee"
+ class="org.eclipse.jst.j2ee.internal.J2EEPropertiesPage"
+ id="J2EEPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jst.j2ee.jca.ConnectorNature">
+ </filter>
+ </page>
+<!-- =========== org.eclipse.jst.j2ee.ApplicationClientNature ============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ adaptable="true"
+ name="%j2ee"
+ class="org.eclipse.jst.j2ee.internal.J2EEPropertiesPage"
+ id="J2EEPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </filter>
+ </page>
+<!-- =========== org.eclipse.jst.j2ee.internal.ejb.EJBNature ============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ adaptable="true"
+ name="%j2ee"
+ class="org.eclipse.jst.j2ee.internal.J2EEPropertiesPage"
+ id="J2EEPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jst.j2ee.ejb.EJBNature">
+ </filter>
+ </page>
+<!-- =========== org.eclipse.jst.j2ee.internal.JARDependencyProperties============ -->
+ <page
+ objectClass="org.eclipse.core.resources.IProject"
+ name="%jar.dependencies.props_ui_"
+ class="org.eclipse.jst.j2ee.internal.JARDependencyPropertiesPage"
+ id="JARDependenciesPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jdt.core.javanature">
+ </filter>
+ </page>
+ <page
+ objectClass="org.eclipse.jdt.core.IJavaProject"
+ name="%jar.dependencies.props_ui_"
+ class="org.eclipse.jst.j2ee.internal.JARDependencyPropertiesPage"
+ id="JARDependenciesPropertiesPage">
+ <filter
+ name="nature"
+ value="org.eclipse.jdt.core.javanature">
+ </filter>
+ </page>
+ </extension>
+
+
+ <extension point="org.eclipse.ltk.core.refactoring.renameParticipants">
+
+ <renameParticipant
+ class="org.eclipse.jst.j2ee.internal.actions.J2EERenameParticipant"
+ id="org.eclipse.jst.j2ee.internal.actions.J2EERenameParticipant"
+ name="J2EE Rename Participant">
+ <enablement>
+ <with variable="affectedNatures">
+ <iterate operator="or">
+ <equals value="org.eclipse.jdt.core.javanature" />
+ </iterate>
+ </with>
+ <with
+ variable="element">
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ </with>
+ </enablement>
+ </renameParticipant>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectives">
+ <perspective
+ name="%j2ee"
+ icon="icons/full/cview16/j2ee_perspective.gif"
+ class="org.eclipse.jst.j2ee.internal.perspective.J2EEPerspective"
+ id="org.eclipse.jst.j2ee.J2EEPerspective">
+ </perspective>
+ </extension>
+ <!--
+ <extension
+ point="com.ibm.wtp.common.util.uiContextSensitiveClass">
+ <uiContextSensitiveClass
+ context="UI"
+ key="rendererFactory"
+ className="org.eclipse.jst.j2ee.emf2xml.sed.EMF2DOMSedRendererFactory">
+ </uiContextSensitiveClass>
+ </extension>
+ -->
+ <extension
+ point="org.eclipse.wst.common.navigator.workbench.commonWizard">
+ <!-- EAR New -->
+ <commonWizard
+ type="new"
+ wizardId="org.eclipse.jst.j2ee.ui.EnterpriseApplicationCreationWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </and>
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- AppClient New -->
+ <commonWizard
+ type="new"
+ wizardId="org.eclipse.jst.j2ee.ui.AppClientModuleCreationWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </and>
+ <and>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ApplicationImpl">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.provider.ModulesItemProvider">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ModuleImpl">
+ </objectClass>
+
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- EAR Import -->
+ <commonWizard
+ type="import"
+ wizardId="org.eclipse.jst.j2ee.ui.EnterpriseApplicationImportWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </and>
+
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- App Client Import -->
+ <commonWizard
+ type="import"
+ wizardId="org.eclipse.jst.j2ee.ui.AppClientModuleImportWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </and>
+ <and>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.client.impl.ApplicationClientImpl">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ApplicationImpl">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.provider.ModulesItemProvider">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ModuleImpl">
+ </objectClass>
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- Utility Jar Import -->
+ <commonWizard
+ type="import"
+ wizardId="org.eclipse.jst.j2ee.ui.J2EEUtilityJarImportWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ApplicationImpl">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.provider.ModulesItemProvider">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ModuleImpl">
+ </objectClass>
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- EAR export -->
+ <commonWizard
+ type="export"
+ wizardId="org.eclipse.jst.j2ee.ui.EnterpriseApplicationExportWizard">
+ <enablement>
+ <or>
+ <and>
+ <or>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ </or>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.EARNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ApplicationImpl">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.internal.provider.ModulesItemProvider">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.jst.j2ee.application.impl.ModuleImpl">
+ </objectClass>
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- App Client export -->
+ <commonWizard
+ type="export"
+ wizardId="org.eclipse.jst.j2ee.ui.AppClientModuleExportWizard">
+ <enablement>
+ <or>
+ <and>
+ <or>
+ <objectClass
+ name="org.eclipse.wst.common.navigator.internal.groups.NavigatorGroup">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ </or>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.client.impl.ApplicationClientImpl">
+ </objectClass>
+ </or>
+ </enablement>
+ </commonWizard>
+ <!-- Import Classes Wizard -->
+ <commonWizard
+ type="import"
+ wizardId="org.eclipse.jst.j2ee.internal.wizard.ClassesImportWizard">
+ <enablement>
+ <or>
+ <and>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ <or>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ApplicationClientNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.jca.ConnectorNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.ejb.EJBNature">
+ </objectState>
+ <objectState
+ name="projectNature"
+ value="org.eclipse.jst.j2ee.web.WebNature">
+ </objectState>
+ </or>
+ </and>
+ <objectClass
+ name="org.eclipse.jst.j2ee.client.impl.ApplicationClientImpl">
+ </objectClass>
+ </or>
+ </enablement>
+ </commonWizard>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.jst.j2ee.web/webedit/org/eclipse/jst/j2ee/internal/web/providers/WebAppItemProvider.java b/plugins/org.eclipse.jst.j2ee.web/webedit/org/eclipse/jst/j2ee/internal/web/providers/WebAppItemProvider.java
index 7019c655a..a53f79da2 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webedit/org/eclipse/jst/j2ee/internal/web/providers/WebAppItemProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webedit/org/eclipse/jst/j2ee/internal/web/providers/WebAppItemProvider.java
@@ -31,6 +31,7 @@ import org.eclipse.jst.j2ee.common.internal.provider.JNDIEnvRefsGroupItemProvide
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
import org.eclipse.jst.j2ee.jsp.JspFactory;
import org.eclipse.jst.j2ee.webapplication.ContextParam;
import org.eclipse.jst.j2ee.webapplication.WebApp;
@@ -68,11 +69,10 @@ public class WebAppItemProvider extends JNDIEnvRefsGroupItemProvider implements
* @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object)
*/
public Collection getChildren(Object object) {
- //WebApp webApp = (WebApp) object;
+ WebApp webApp = (WebApp) object;
Collection myChildren = super.getChildren(object);
- // TODO WebServices for M3
- //if (webApp.getVersionID() <= J2EEVersionConstants.WEB_2_3_ID)
- // myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(webApp));
+ if (webApp.getVersionID() <= J2EEVersionConstants.WEB_2_3_ID)
+ myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(webApp));
return myChildren;
}
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/J2EEWebNatureRuntime.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/J2EEWebNatureRuntime.java
index 7b799dd3e..2996fda25 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/J2EEWebNatureRuntime.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/J2EEWebNatureRuntime.java
@@ -7,6 +7,7 @@ package org.eclipse.jst.j2ee.internal.web.operations;
*/
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.util.Map;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IContainer;
@@ -41,6 +42,7 @@ import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants;
import org.eclipse.jst.j2ee.internal.project.J2EEModuleNature;
import org.eclipse.jst.j2ee.internal.web.archive.operations.WTProjectLoadStrategyImpl;
import org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceEditModel;
import org.eclipse.jst.j2ee.web.taglib.ITaglibRegistry;
import org.eclipse.jst.j2ee.webapplication.WebApp;
import org.eclipse.jst.j2ee.webapplication.WebAppResource;
@@ -1058,18 +1060,16 @@ public class J2EEWebNatureRuntime extends J2EEModuleNature implements IDynamicWe
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
-// public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
-// return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
-// }
+ public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
+ return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
+ }
/**
* Return an editing model used to edit web service resources. Important!!! Calling this method
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
-// public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
-// return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
-// }
+ public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
+ return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/applicationclient/creation/ApplicationClientNatureRuntime.java b/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/applicationclient/creation/ApplicationClientNatureRuntime.java
index 886a685c4..b07b26efa 100644
--- a/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/applicationclient/creation/ApplicationClientNatureRuntime.java
+++ b/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/applicationclient/creation/ApplicationClientNatureRuntime.java
@@ -11,6 +11,8 @@
package org.eclipse.jst.j2ee.applicationclient.creation;
+import java.util.Map;
+
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.util.URI;
@@ -24,13 +26,14 @@ import org.eclipse.jst.j2ee.common.XMLResource;
import org.eclipse.jst.j2ee.commonarchivecore.internal.ApplicationClientFile;
import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.OpenFailureException;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveConstants;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
import org.eclipse.jst.j2ee.internal.J2EEEditModel;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.archive.operations.ApplicationClientProjectLoadStrategyImpl;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.project.J2EEModuleNature;
import org.eclipse.jst.j2ee.internal.project.J2EEModuleWorkbenchURIConverterImpl;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceEditModel;
import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
import com.ibm.wtp.emf.workbench.ProjectUtilities;
@@ -143,7 +146,7 @@ public class ApplicationClientNatureRuntime extends J2EEModuleNature implements
}
public Resource getApplicationClientXmiResource() {
- return getResource(URI.createURI(ArchiveConstants.APP_CLIENT_DD_URI));
+ return getResource(URI.createURI(J2EEConstants.APP_CLIENT_DD_URI));
}
protected String getDefaultSourcePathString() {
@@ -270,21 +273,18 @@ public class ApplicationClientNatureRuntime extends J2EEModuleNature implements
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
- // public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
- // return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey,
- // params);
- // }
+
+ public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
+ return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey,params);
+ }
/**
* Return an editing model used to edit web service resources. Important!!! Calling this method
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
- // public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
- // return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey,
- // params);
- // }
+ public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
+ return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/applicationedit/org/eclipse/jst/j2ee/internal/provider/ApplicationClientItemProvider.java b/plugins/org.eclipse.jst.j2ee/applicationedit/org/eclipse/jst/j2ee/internal/provider/ApplicationClientItemProvider.java
index 607a734d5..71179a6e8 100644
--- a/plugins/org.eclipse.jst.j2ee/applicationedit/org/eclipse/jst/j2ee/internal/provider/ApplicationClientItemProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/applicationedit/org/eclipse/jst/j2ee/internal/provider/ApplicationClientItemProvider.java
@@ -36,6 +36,7 @@ import org.eclipse.jst.j2ee.common.internal.provider.CompatibilityDescriptionGro
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.application.provider.ApplicationProvidersResourceHandler;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
import org.eclipse.jst.j2ee.webservice.wsclient.Webservice_clientFactory;
import com.ibm.wtp.emf.workbench.ProjectUtilities;
@@ -180,6 +181,7 @@ public class ApplicationClientItemProvider extends CompatibilityDescriptionGroup
IProject project = ProjectUtilities.getProject(appclient);
return project.getDescription().getName();
} catch (Exception e) {
+ //Ignore
}
Resource resource = appclient.eResource();
@@ -260,9 +262,8 @@ public class ApplicationClientItemProvider extends CompatibilityDescriptionGroup
ApplicationClient client = (ApplicationClient) object;
Collection myChildren = super.getChildren(object);
- // TODO WebServices for M3
- // if (client.getVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
- // myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(client));
+ if (client.getVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
+ myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(client));
return myChildren;
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/AppClientProjectWebServiceEditModelFactory.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/AppClientProjectWebServiceEditModelFactory.java
new file mode 100644
index 000000000..fb94c44ac
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/AppClientProjectWebServiceEditModelFactory.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 3, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.Map;
+
+import org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class AppClientProjectWebServiceEditModelFactory extends WebServiceEditModelFactory {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForRead(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForRead(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForRead(editModelID, context, params, WebServiceEditModel.APPCLIENT_PROJECT_WEBSERVICE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForWrite(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForWrite(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForWrite(editModelID, context, params, WebServiceEditModel.APPCLIENT_PROJECT_WEBSERVICE);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/EjbProjectWebServiceEditModelFactory.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/EjbProjectWebServiceEditModelFactory.java
new file mode 100644
index 000000000..6ce4e36df
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/EjbProjectWebServiceEditModelFactory.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 3, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.Map;
+
+import org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class EjbProjectWebServiceEditModelFactory extends WebServiceEditModelFactory {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForRead(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForRead(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForRead(editModelID, context, params, WebServiceEditModel.EJB_PROJECT_WEBSERVICE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForWrite(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForWrite(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForWrite(editModelID, context, params, WebServiceEditModel.EJB_PROJECT_WEBSERVICE);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WSDLHelper.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WSDLHelper.java
new file mode 100644
index 000000000..d55243d50
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WSDLHelper.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jst.j2ee.common.QName;
+import org.eclipse.jst.j2ee.internal.project.J2EENature;
+import org.eclipse.jst.j2ee.webservice.wsclient.ComponentScopedRefs;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+import com.ibm.wtp.emf.workbench.WorkbenchResourceHelperBase;
+
+/**
+ * This class contains methods to help navigate WSDL files provided in various JSR-109 descriptors
+ */
+public class WSDLHelper {
+
+ private IProject project_;
+
+ public WSDLHelper(IProject p) {
+ project_ = p;
+ }
+
+ /**
+ * This method returns the list of wsdl:port@name's contained in the WSDL file referred to by
+ * the specified <service-ref>
+ *
+ * @param serviceRefName
+ * The name of the <service-ref>
+ * @param compScopedRefName
+ * The name of the <component-scoped-refs>
+ * @param wsc
+ * The root object of the webservicesclient.xml descriptor
+ * @param exclude
+ * port names to exclude in the returned array
+ * @return String[] An array of wsdl:port@names's. null is returned if there are any problems
+ * with navigating the webservicesclient.xml or the WSDL.
+ */
+ public String[] getPortNames(String serviceRefName, String compScopedRefName, WebServicesClient wsc, String[] exclude) {
+ ServiceRef sr = getServiceRef(serviceRefName, compScopedRefName, wsc);
+ if (sr == null)
+ return null;
+
+ String wsdlURL = getWSDLFileURL(sr);
+ if (wsdlURL.length() == 0)
+ return null;
+
+ String serviceLocalName = getServiceQname(sr);
+ String[] portNames = getPortNames(wsdlURL, serviceLocalName);
+ portNames = trim(portNames, exclude);
+ return portNames;
+
+ }
+
+ /**
+ * This method returns the namespace of the wsdl:service in WSDL file referred to by the
+ * specified <service-ref>
+ *
+ * @param serviceRefName
+ * The name of the <service-ref>
+ * @param compScopedRefName
+ * The name of the <component-scoped-refs>
+ * @param wsc
+ * The root object of the webservicesclient.xml descriptor
+ * @param exclude
+ * port names to exclude in the returned array
+ * @return String The namespace of the wsdl:service. null is returned if there are any problems
+ * with navigating the webservicesclient.xml or the WSDL.
+ */
+ public String getPortNamespace(String serviceRefName, String compScopedRefName, WebServicesClient wsc) {
+ ServiceRef sr = getServiceRef(serviceRefName, compScopedRefName, wsc);
+ if (sr == null)
+ return null;
+
+ String wsdlURL = getWSDLFileURL(sr);
+ if (wsdlURL.length() == 0)
+ return ""; //$NON-NLS-1$
+
+ String serviceLocalName = getServiceQname(sr);
+ String namespace = getPortNamespace(wsdlURL, serviceLocalName);
+ return namespace;
+ }
+
+ /**
+ * This method returns the list of wsdl:port@name's contained in the specified wsdl:service in
+ * the specified WSDL file.
+ *
+ * @param wsdlURL
+ * The URL of the WSDL file.
+ * @param serviceLocalName
+ * The local name of the wsdl:service to look in.
+ * @return String[] An array of wsdl:port@name's. Null is returned a wsdl:service with the
+ * specified local name could not be found.
+ */
+ private String[] getPortNames(String wsdlURL, String serviceLocalName) {
+ Service targetService = getTargetService(wsdlURL, serviceLocalName);
+
+ if (targetService == null) {
+ //System.out.println("getPortNames ... targetService null.");
+ return null;
+ }
+
+ Map ports = targetService.getPorts();
+ int numberOfPorts = ports.size();
+ String[] portNames = new String[numberOfPorts];
+ Iterator k = ports.values().iterator();
+ for (int m = 0; m < numberOfPorts; m++) {
+ Port port = (Port) k.next();
+ portNames[m] = port.getName();
+ }
+
+ return portNames;
+ }
+
+ /**
+ * This method returns the namespace of the specified wsdl:service in the specified WSDL file.
+ *
+ * @param wsdlURL
+ * The URL of the WSDL file.
+ * @param serviceLocalName
+ * The local name of the wsdl:service to look in.
+ * @return String[] An array of wsdl:port@name's. An empty String is returned if a wsdl:service
+ * with the specified local name could not be found.
+ */
+ private String getPortNamespace(String wsdlURL, String serviceLocalName) {
+ Service targetService = getTargetService(wsdlURL, serviceLocalName);
+
+ if (targetService == null) {
+ //System.out.println("getPortNamespace ... targetService null.");
+ return ""; //$NON-NLS-1$
+ }
+
+ return targetService.getQName().getNamespaceURI();
+ }
+
+ private Service getTargetService(String wsdlURL, String serviceLocalName) {
+ Definition definition = getWSDLDefinition(wsdlURL);
+ if (definition == null) {
+ return null;
+ }
+
+ Service targetService = null;
+ Map services = definition.getServices();
+ if (!services.isEmpty()) {
+ if ((serviceLocalName == null || serviceLocalName.length() == 0) && services.size() > 1) //Multiple
+ // services
+ // without
+ // one
+ // designated
+ // is
+ // an
+ // error
+ {
+ return null;
+ }
+
+ if ((serviceLocalName == null || serviceLocalName.length() == 0) && services.size() == 1) {
+ //Return the port names in the one service
+ Iterator i = services.values().iterator();
+ targetService = (Service) i.next();
+ } else //There are multiple services but one is designated
+ {
+ Iterator j = services.values().iterator();
+ while (j.hasNext()) {
+ Service service = (Service) j.next();
+ String serviceName = service.getQName().getLocalPart();
+ if (serviceName.equals(serviceLocalName)) {
+ targetService = service;
+ break; //Found a match. Break out of loop. We must be assuming unique names
+ // on services.
+ }
+ }
+ }
+ }
+
+ return targetService;
+
+ }
+
+
+ private Definition getWSDLDefinition(String wsdlURL) {
+ try {
+ WSDLResourceImpl res = (WSDLResourceImpl) WorkbenchResourceHelperBase.getResource(URI.createURI(wsdlURL), true);
+ if (res == null)
+ return null;
+ return res.getDefinition();
+ } catch (Exception wsdle) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the file URL of the <wsdl-file>specified in the given <service-ref>. Returns a blank
+ * String if <wsdl-file>is not specified in the provided <service-ref>
+ */
+ private String getWSDLFileURL(ServiceRef sr) {
+ String wsdlFileRelPath = sr.getWsdlFile();
+ if (wsdlFileRelPath == null || wsdlFileRelPath.length() == 0)
+ return ""; //$NON-NLS-1$
+
+ // Get a handle on the WSDL file.
+ J2EENature nature = J2EENature.getRegisteredRuntime(project_);
+ if (nature != null) {
+ IResource moduleRoot = nature.getModuleServerRoot();
+ if (moduleRoot instanceof IFolder) {
+ IFolder moduleRootFolder = (IFolder) moduleRoot;
+ IFile wsdlFile = moduleRootFolder.getFile(wsdlFileRelPath);
+ if (!wsdlFile.exists()) {
+ return ""; //$NON-NLS-1$
+ }
+
+ //Get the fileURL from wsdlFile
+ String wsdlURL;
+ try {
+ wsdlURL = wsdlFile.getLocation().toFile().toURL().toString();
+ } catch (MalformedURLException murle) {
+ return ""; //$NON-NLS-1$
+ }
+
+ if (wsdlURL == null || wsdlURL.length() == 0)
+ return ""; //$NON-NLS-1$
+
+ return wsdlURL;
+
+ }
+ return ""; //$NON-NLS-1$
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the local part of the <service-qname>specified in the given <service-ref>. Returns a
+ * blank String if <service-qname>is not specified in the provided <service-ref>
+ */
+ private String getServiceQname(ServiceRef sr) {
+ QName serviceQname = sr.getServiceQname();
+ if (serviceQname == null)
+ return ""; //$NON-NLS-1$
+
+ String serviceLocalName = serviceQname.getLocalPart();
+ if (serviceLocalName == null)
+ return ""; //$NON-NLS-1$
+
+ return serviceLocalName;
+ }
+
+ /* If compScopedRefName is empty or null, we may have to check all of them. */
+ public ServiceRef getServiceRef(String name, String compScopedRefName, WebServicesClient wsc) {
+ Iterator serviceRefs;
+ if (compScopedRefName != null && compScopedRefName.length() > 0) {
+ ComponentScopedRefs csr = getCompScopedRef(compScopedRefName, wsc);
+ serviceRefs = csr.getServiceRefs().iterator();
+ } else {
+ serviceRefs = wsc.getServiceRefs().iterator();
+ //If there are no service refs ... check all component-scoped-refs for the service-ref
+ if (!serviceRefs.hasNext()) {
+ Iterator csRefs = wsc.getComponentScopedRefs().iterator();
+
+ while (csRefs.hasNext()) {
+ ComponentScopedRefs csr = (ComponentScopedRefs) csRefs.next();
+ Iterator srs = csr.getServiceRefs().iterator();
+ while (srs.hasNext()) {
+ ServiceRef sr = (ServiceRef) srs.next();
+ String thisName = sr.getServiceRefName();
+ if (thisName.equals(name)) {
+ return sr;
+ }
+ }
+ }
+
+ return null; //Could not find it in any of the component-scoped-refs
+ }
+
+ }
+
+ while (serviceRefs.hasNext()) {
+ ServiceRef serviceRef = (ServiceRef) serviceRefs.next();
+ String serviceRefName = serviceRef.getServiceRefName();
+ if (serviceRefName.equals(name))
+ return serviceRef;
+ }
+ return null;
+ }
+
+
+ private ComponentScopedRefs getCompScopedRef(String name, WebServicesClient wsc) {
+ Iterator compScopedRefs = wsc.getComponentScopedRefs().iterator();
+ while (compScopedRefs.hasNext()) {
+ ComponentScopedRefs compScopedRef = (ComponentScopedRefs) compScopedRefs.next();
+ String compScopedRefName = compScopedRef.getComponentName();
+ if (compScopedRefName.equals(name))
+ return compScopedRef;
+ }
+ return null;
+
+ }
+
+
+ private String[] trim(String[] values, String[] exclude) {
+ if (values == null || values.length == 0 || exclude == null || exclude.length == 0) //no
+ // change
+ // required.
+ // return
+ // as
+ // is.
+ return values;
+
+ String[] finalValues;
+ ArrayList finalList = new ArrayList();
+ for (int i = 0; i < values.length; i++) {
+ if (!contains(exclude, values[i])) {
+ finalList.add(values[i]);
+ }
+ }
+
+ int finalSize = finalList.size();
+ finalValues = new String[finalSize];
+ Object[] finalArray = finalList.toArray();
+ for (int j = 0; j < finalSize; j++) {
+ finalValues[j] = (String) (finalArray[j]);
+ }
+
+ return finalValues;
+
+ }
+
+ /**
+ * Returns true if the array of String's contains the specified String. False otherwise.
+ */
+ private boolean contains(String[] values, String s) {
+ if (values == null)
+ return false;
+
+ for (int i = 0; i < values.length; i++) {
+ if (values[i].equals(s))
+ return true;
+ }
+
+ return false;
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebProjectWebServiceEditModelFactory.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebProjectWebServiceEditModelFactory.java
new file mode 100644
index 000000000..18912a422
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebProjectWebServiceEditModelFactory.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 3, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.Map;
+
+import org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebProjectWebServiceEditModelFactory extends WebServiceEditModelFactory {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForRead(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForRead(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForRead(editModelID, context, params, WebServiceEditModel.WEB_PROJECT_WEBSERVICE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForWrite(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ public EditModel createEditModelForWrite(String editModelID, EMFWorkbenchContext context, Map params) {
+ return super.createEditModelForWrite(editModelID, context, params, WebServiceEditModel.WEB_PROJECT_WEBSERVICE);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceClientGenerator.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceClientGenerator.java
new file mode 100644
index 000000000..5d0d07fdf
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceClientGenerator.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Apr 28, 2004
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.j2ee.internal.common.J2EECommonMessages;
+
+
+/**
+ * Extension for generating web service clients
+ */
+public abstract class WebServiceClientGenerator {
+
+ public static final String GENERIC_J2EE_CONTAINER = J2EECommonMessages.getResourceString("WebServiceClientGenerator_UI_0"); //$NON-NLS-1$
+
+ private List runtime = null;
+
+ /**
+ * Generates Web service client artifacts based on information obatined from the dataModel
+ * (wsdlURL, serviceQName, outputWSDLFilePathName, projectName, shouldDeploy) After generating
+ * the Web service client artifacts, sets the following on the dataModel: serviceInterfaceName,
+ * serviceEndpointInterfaceName, didGenDescriptors
+ *
+ * @return Status for results
+ */
+ public abstract IStatus genWebServiceClientArtifacts(WebServicesClientDataHelper dataModel);
+
+ public void setRuntime(List serverTargets) {
+ runtime = serverTargets;
+ }
+
+ public List getServerTargets() {
+ if (runtime == null)
+ runtime = new ArrayList();
+ return runtime;
+ }
+
+ public boolean isRuntimeSupported(String serverTargetID) {
+ return getServerTargets().contains(serverTargetID);
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModel.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModel.java
new file mode 100644
index 000000000..1239ad870
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModel.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 3, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jst.j2ee.applicationclient.creation.IApplicationClientNatureConstants;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.internal.J2EEEditModel;
+import org.eclipse.jst.j2ee.internal.project.IEJBNatureConstants;
+import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants;
+import org.eclipse.jst.j2ee.internal.project.J2EENature;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesResource;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServices;
+import org.eclipse.jst.j2ee.webservice.wsdd.WsddResource;
+import org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+import com.ibm.wtp.emf.workbench.WorkbenchResourceHelperBase;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServiceEditModel extends J2EEEditModel {
+
+ public static final int WEB_PROJECT_WEBSERVICE = 0;
+ public static final int EJB_PROJECT_WEBSERVICE = 1;
+ public static final int APPCLIENT_PROJECT_WEBSERVICE = 2;
+
+ private static final String WEB_SERVICES_FILE = "webservices.xml"; //$NON-NLS-1$
+ private static final String WEB_SERVICES_CLIENT_FILE = "webservicesclient.xml"; //$NON-NLS-1$
+ public static final String WS_META_INF_PATH = "META-INF/" + WEB_SERVICES_FILE; //$NON-NLS-1$
+ public static final String WS_WEB_INF_PATH = "WEB-INF/" + WEB_SERVICES_FILE; //$NON-NLS-1$
+ public static final String WS_CLIENT_META_INF_PATH = "META-INF/" + WEB_SERVICES_CLIENT_FILE; //$NON-NLS-1$
+ public static final String WS_CLIENT_WEB_INF_PATH = "WEB-INF/" + WEB_SERVICES_CLIENT_FILE; //$NON-NLS-1$
+ public static final String WSIL_FILE_EXT = "wsil"; //$NON-NLS-1$
+ public static final String WSDL_FILE_EXT = "wsdl"; //$NON-NLS-1$
+
+ protected int projectType;
+
+ /**
+ * constructor
+ */
+ public WebServiceEditModel(String editModelID, EMFWorkbenchContext context, boolean readOnly, int projectType) {
+ super(editModelID, context, readOnly);
+ this.projectType = projectType;
+ }
+
+ /**
+ * constructor
+ */
+ public WebServiceEditModel(String editModelID, EMFWorkbenchContext context, boolean readOnly, boolean accessUnkownResourcesAsReadOnly, int projectType) {
+ super(editModelID, context, readOnly, accessUnkownResourcesAsReadOnly);
+ this.projectType = projectType;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jst.j2ee.internal.internal.workbench.J2EEEditModel#getRootObject()
+ */
+ public Object getRootObject() {
+ return getWebServices();
+ }
+
+ public WebServices getWebServices() {
+ Resource dd = getWebServicesXmlResource();
+ if (dd != null) {
+ Object webServices = getRoot(dd);
+ if (webServices instanceof WebServices)
+ return (WebServices) webServices;
+ }
+ return null;
+ }
+
+ public List getWSILResources() {
+ return getResources(WSIL_FILE_EXT);
+ }
+
+ public List getWSDLResources() {
+ return getResources(WSDL_FILE_EXT);
+ }
+
+ public List getResources(String ext) {
+ List files = ProjectUtilities.getAllProjectFiles(getProject());
+ List result = new ArrayList();
+ for (int i = 0; i < files.size(); i++) {
+ IFile file = (IFile) files.get(i);
+ if (file != null && file.getFileExtension() != null && file.getFileExtension().equals(ext)) {
+ Resource res = WorkbenchResourceHelperBase.getResource(file, true);
+ if (res != null)
+ result.add(res);
+ }
+ }
+ return result;
+ }
+
+ public WsddResource getWebServicesXmlResource() {
+ return (WsddResource) getResource(getWebServicesXmlResourceURI());
+ }
+
+ public URI getWebServicesXmlResourceURI() {
+ URI resourceURI = J2EEConstants.WEB_SERVICES_WEB_INF_DD_URI_OBJ;
+ if (projectType == APPCLIENT_PROJECT_WEBSERVICE || projectType == EJB_PROJECT_WEBSERVICE)
+ resourceURI = J2EEConstants.WEB_SERVICES_META_INF_DD_URI_OBJ;
+ return resourceURI;
+ }
+
+ /**
+ * return the WSDLResource if it exists, otherwise return null
+ */
+ public WSDLResourceImpl getWsdlResource(String path) {
+ if (path == null || path.equals(""))return null; //$NON-NLS-1$
+ Resource res = null;
+ try {
+ res = getResource(URI.createURI(path));
+ } catch (Exception e) {
+ //Ignore
+ }
+ if (res != null && res.isLoaded() && res instanceof WSDLResourceImpl)
+ return (WSDLResourceImpl) res;
+ return null;
+
+ }
+
+ public J2EEEditModel getJ2EEEditModel(Object accessorKey) {
+ J2EEEditModel editModel = null;
+ switch (projectType) {
+ case WEB_PROJECT_WEBSERVICE :
+ editModel = J2EENature.getRuntime(getProject(), IWebNatureConstants.J2EE_NATURE_ID).getJ2EEEditModelForRead(accessorKey);
+ break;
+ case EJB_PROJECT_WEBSERVICE :
+ editModel = J2EENature.getRuntime(getProject(), IEJBNatureConstants.NATURE_ID).getJ2EEEditModelForRead(accessorKey);
+ break;
+ case APPCLIENT_PROJECT_WEBSERVICE :
+ editModel = J2EENature.getRuntime(getProject(), IApplicationClientNatureConstants.NATURE_ID).getJ2EEEditModelForRead(accessorKey);
+ break;
+ }
+ return editModel;
+ }
+
+ public WebServicesResource get13WebServicesClientResource() {
+ String resourcePath = WS_CLIENT_WEB_INF_PATH;
+ if (projectType == APPCLIENT_PROJECT_WEBSERVICE || projectType == EJB_PROJECT_WEBSERVICE)
+ resourcePath = WS_CLIENT_META_INF_PATH;
+ return (WebServicesResource) getResource(URI.createURI(resourcePath));
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModelFactory.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModelFactory.java
new file mode 100644
index 000000000..93c9974fc
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServiceEditModelFactory.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 3, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.Map;
+
+import org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory;
+
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public abstract class WebServiceEditModelFactory extends EditModelFactory {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForRead(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ protected EditModel createEditModelForRead(String editModelID, EMFWorkbenchContext context, Map params, int projectType) {
+ return new WebServiceEditModel(editModelID, context, true, isLoadKnownResourcesAsReadOnly(), projectType);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelFactory#createEditModelForWrite(java.lang.Object,
+ * org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext)
+ */
+ protected EditModel createEditModelForWrite(String editModelID, EMFWorkbenchContext context, Map params, int projectType) {
+ return new WebServiceEditModel(editModelID, context, false, isLoadKnownResourcesAsReadOnly(), projectType);
+ }
+
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataHelper.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataHelper.java
new file mode 100644
index 000000000..23162f47c
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataHelper.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Apr 26, 2004
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+
+/**
+ * WebServicesClientDataHelper Interface Extension - For use in generating Web Service Clients by
+ * sharing data between J2EE operations and web services operations
+ */
+public interface WebServicesClientDataHelper {
+
+ /**
+ * @return the URL for the associated original WSDL file referenced by the client
+ */
+ public String getWSDLUrl();
+
+ /**
+ * @return the QName of form http://someNamespace:someLocalPart for the associated web service
+ * for the client
+ */
+ public String getServiceQName();
+
+ /**
+ * @return the name of the target project for the web service client
+ */
+ public String getProjectName();
+
+ /**
+ * @return the URI for the fileName path for the copied WSDL file into the client project
+ */
+ public String getOutputWSDLFileName();
+
+ /**
+ * @return the qualified classname of the generated Service Interface
+ */
+ public String getServiceInterfaceName();
+
+ /**
+ * @return the qualified classname of the generated Service Endpoint Interface
+ */
+ public String[] getServiceEndpointInterfaceNames();
+
+ /**
+ * @return should generate code for deployment?
+ */
+ public boolean shouldDeploy();
+
+ /**
+ * @return whether the extension generated the descriptors or not
+ */
+ public boolean shouldGenDescriptors();
+
+ /**
+ * Set the SEI classname for the web service client
+ */
+ public void setServiceInterfaceName(String name);
+
+ /**
+ * Set the SI classname for the web service client
+ */
+ public void setServiceEndpointInterfaceNames(String[] names);
+
+ /**
+ * Set whether descriptors were generated
+ */
+ public void setDidGenDescriptors(boolean b);
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataRegistry.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataRegistry.java
new file mode 100644
index 000000000..7b8e1a948
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesClientDataRegistry.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Apr 26, 2004
+ */
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+
+import com.ibm.wtp.common.RegistryReader;
+
+/**
+ * Read the WebServicesClientDataExtensions
+ */
+public class WebServicesClientDataRegistry extends RegistryReader {
+
+ private static WebServicesClientDataRegistry INSTANCE = null;
+ public static final String WS_CLIENT_EXTENSION_POINT = "WebServiceClientGenerator"; //$NON-NLS-1$
+ public static final String GENERATOR = "generator"; //$NON-NLS-1$
+ public static final String CLASS_NAME = "className"; //$NON-NLS-1$
+ public static final String SERVER_TARGET = "serverTarget"; //$NON-NLS-1$
+ public static final String RUNTIME = "runtime"; //$NON-NLS-1$
+ private List wsClientDataExtensions = null;
+
+ /**
+ * Default constructor
+ */
+ public WebServicesClientDataRegistry() {
+ super(J2EEPlugin.PLUGIN_ID, WS_CLIENT_EXTENSION_POINT);
+ }
+
+ public static WebServicesClientDataRegistry getInstance() {
+ if (INSTANCE == null) {
+ INSTANCE = new WebServicesClientDataRegistry();
+ INSTANCE.readRegistry();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * @see org.eclipse.wst.common.frameworks.internal.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
+ */
+ public boolean readElement(IConfigurationElement element) {
+ if (!element.getName().equals(GENERATOR))
+ return false;
+ // Get the class specified in the extension point
+ WebServiceClientGenerator helper = null;
+ try {
+ helper = (WebServiceClientGenerator) element.createExecutableExtension(CLASS_NAME);
+ // get server target runtimes
+ IConfigurationElement[] runtimes = element.getChildren(RUNTIME);
+ List runtimeList = new ArrayList();
+ for (int i = 0; i < runtimes.length; i++) {
+ IConfigurationElement runtime = runtimes[i];
+ String serverTarget = runtime.getAttribute(SERVER_TARGET);
+ runtimeList.add(serverTarget);
+ }
+ helper.setRuntime(runtimeList);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ // Add data helper class to registry extensions list
+ if (helper != null) {
+ getWSClientGeneratorExtensions().add(helper);
+ return true;
+ }
+ return false;
+ }
+
+ public List getWSClientGeneratorExtensions() {
+ if (wsClientDataExtensions == null)
+ wsClientDataExtensions = new ArrayList();
+ return wsClientDataExtensions;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java
new file mode 100644
index 000000000..b7ce76adc
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java
@@ -0,0 +1,919 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004 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
+ *******************************************************************************/
+/*
+ * Created on Feb 9, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+
+
+
+package org.eclipse.jst.j2ee.internal.webservices;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jst.j2ee.applicationclient.creation.IApplicationClientNatureConstants;
+import org.eclipse.jst.j2ee.client.ApplicationClient;
+import org.eclipse.jst.j2ee.common.XMLResource;
+import org.eclipse.jst.j2ee.ejb.EJBJar;
+import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.internal.J2EEEditModel;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.internal.project.IEJBNatureConstants;
+import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants;
+import org.eclipse.jst.j2ee.internal.project.J2EEModuleNature;
+import org.eclipse.jst.j2ee.internal.project.J2EENature;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.jst.j2ee.webservice.wsclient.ComponentScopedRefs;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesResource;
+import org.eclipse.jst.j2ee.webservice.wsclient.Webservice_clientFactory;
+import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServices;
+import org.eclipse.jst.j2ee.webservice.wsdd.WsddResource;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener;
+import org.eclipse.wst.ws.parser.wsil.WebServiceEntity;
+import org.eclipse.wst.ws.parser.wsil.WebServicesParser;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
+
+import com.ibm.wtp.common.logger.proxy.Logger;
+import com.ibm.wtp.emf.workbench.ProjectResourceSet;
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+import com.ibm.wtp.emf.workbench.WorkbenchResourceHelperBase;
+
+/**
+ * @author jlanuti
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class WebServicesManager implements EditModelListener, IResourceChangeListener, IResourceDeltaVisitor {
+
+ private HashMap editModels;
+ private static WebServicesManager INSTANCE = null;
+ private List listeners;
+ private List removedListeners = new ArrayList();
+ private boolean isNotifing = false;
+
+ public static final String WSDL_EXT = "wsdl"; //$NON-NLS-1$
+ public static final String WSIL_EXT = "wsil"; //$NON-NLS-1$
+
+ public static WebServicesManager getInstance() {
+ if (INSTANCE == null)
+ INSTANCE = new WebServicesManager();
+ return INSTANCE;
+ }
+
+ /**
+ * Default Constructor
+ */
+ public WebServicesManager() {
+ super();
+ init();
+ }
+
+ private void init() {
+ collectProjectEditModels();
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ private void collectProjectEditModels() {
+ IProject[] projects = ProjectUtilities.getAllProjects();
+ for (int i = 0; i < projects.length; i++) {
+ IProject project = projects[i];
+ WebServiceEditModel editModel = getWebServiceEditModelForProject(project);
+ if (editModel != null) {
+ editModel.addListener(this);
+ getEditModels().put(project, editModel);
+ }
+ }
+ }
+
+ /**
+ * @return Returns the editModels.
+ */
+ private HashMap getEditModels() {
+ if (editModels == null)
+ editModels = new HashMap();
+ return editModels;
+ }
+
+ private List getEditModelList() {
+ return new ArrayList(getEditModels().values());
+ }
+
+ private List getListeners() {
+ if (listeners == null)
+ listeners = new ArrayList();
+ return listeners;
+ }
+
+ /**
+ * Add aListener to the list of listeners.
+ */
+ public void addListener(EditModelListener aListener) {
+ if (aListener != null && !getListeners().contains(aListener))
+ getListeners().add(aListener);
+ }
+
+ public WebServiceEditModel getWSEditModel(IProject project) {
+ List localEditModels = getEditModelList();
+ for (int i = 0; i < localEditModels.size(); i++) {
+ WebServiceEditModel wsEditModel = (WebServiceEditModel) localEditModels.get(i);
+ if (wsEditModel.getProject() == project)
+ return wsEditModel;
+ }
+ return null;
+ }
+
+ public J2EEModuleNature getWebServiceNature(IProject project) {
+ try {
+ if (project.hasNature(IEJBNatureConstants.NATURE_ID))
+ return (J2EEModuleNature) project.getNature(IEJBNatureConstants.NATURE_ID);
+ else if (project.hasNature(IApplicationClientNatureConstants.NATURE_ID))
+ return (J2EEModuleNature) project.getNature(IApplicationClientNatureConstants.NATURE_ID);
+ else if (project.hasNature(IWebNatureConstants.J2EE_NATURE_ID))
+ return (J2EEModuleNature) project.getNature(IWebNatureConstants.J2EE_NATURE_ID);
+ } catch (Exception e) {
+ //Ignore
+ }
+ return null;
+ }
+
+ private WebServiceEditModel getWebServiceEditModelForProject(IProject project) {
+ J2EEModuleNature nature = getWebServiceNature(project);
+ HashMap editModelMap = getEditModels();
+ WebServiceEditModel wsEditModel = (WebServiceEditModel) editModelMap.get(project);
+ if (wsEditModel == null && nature != null) {
+ wsEditModel = nature.getWebServiceEditModelForRead(this);
+ editModelMap.put(project, wsEditModel);
+ return wsEditModel;
+ }
+ return wsEditModel;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent)
+ */
+ public void editModelChanged(EditModelEvent anEvent) {
+ if (anEvent.getEventCode() == EditModelEvent.PRE_DISPOSE) {
+ EditModel editModel = anEvent.getEditModel();
+ getEditModels().remove(editModel.getProject());
+ editModel.removeListener(this);
+ editModel.releaseAccess(this);
+ }
+ notifyListeners(anEvent);
+ }
+
+ /**
+ * Notify listeners of
+ *
+ * @anEvent.
+ */
+ protected void notifyListeners(EditModelEvent anEvent) {
+ if (listeners == null)
+ return;
+ synchronized (this) {
+ isNotifing = true;
+ }
+ try {
+ List list = getListeners();
+ for (int i = 0; i < list.size(); i++)
+ ((EditModelListener) list.get(i)).editModelChanged(anEvent);
+ } finally {
+ synchronized (this) {
+ isNotifing = false;
+ if (removedListeners != null && !removedListeners.isEmpty()) {
+ for (int i = 0; i < removedListeners.size(); i++)
+ listeners.remove(removedListeners.get(i));
+ removedListeners.clear();
+ }
+ }
+ }
+ }
+
+ /**
+ * Remove aListener from the list of listeners.
+ */
+ public synchronized boolean removeListener(EditModelListener aListener) {
+ if (aListener != null) {
+ if (isNotifing)
+ return removedListeners.add(aListener);
+ return getListeners().remove(aListener);
+ }
+ return false;
+ }
+
+ private void releaseEditModels() {
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ editModel.removeListener(this);
+ editModel.releaseAccess(this);
+ }
+ getEditModels().clear();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
+ */
+ public void resourceChanged(IResourceChangeEvent event) {
+ acceptDelta(event);
+ }
+
+
+ protected void acceptDelta(IResourceChangeEvent event) {
+ IResourceDelta delta = event.getDelta();
+ // search for changes to any projects using a visitor
+ if (delta != null) {
+ try {
+ delta.accept(this);
+ } catch (Exception e) {
+ Logger.getLogger().logError(e);
+ }
+ }
+ }
+
+ /**
+ * returns a list of internal web services descriptions in the workspace
+ */
+ public List getInternalWebServicesDescriptions() {
+ List result = new ArrayList();
+ List webServices = getInternalWebServices();
+ for (int i = 0; i < webServices.size(); i++) {
+ WebServices webService = (WebServices) webServices.get(i);
+ if (webService != null)
+ result.addAll(webService.getWebServiceDescriptions());
+ }
+ return result;
+ }
+
+ /**
+ * @return all internal web services instances in workspace
+ */
+ public List getInternalWebServices() {
+ List result = new ArrayList();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null) {
+ WebServices webServices = editModel.getWebServices();
+ if (webServices != null)
+ result.add(webServices);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * returns a list of all the internal wsdl services in wsdl's pointed to by wsdd's
+ */
+ public List getInternalWSDLServices() {
+ return getWSDLServicesFromWSDLResources(getInternalWSDLResources());
+ }
+
+ public List getInternalWSDLResources() {
+ List result = new ArrayList();
+ List wsddWebServices = getInternalWebServicesDescriptions();
+ for (int i = 0; i < wsddWebServices.size(); i++) {
+ WebServiceDescription webServices = (WebServiceDescription) wsddWebServices.get(i);
+ WSDLResourceImpl wsdl = getWSDLResource(webServices);
+ if (wsdl != null && !result.contains(wsdl))
+ result.add(wsdl);
+ }
+ return result;
+ }
+
+ public List getExternalWSDLResources() {
+ //TODO fix up for basis off .wsil
+ List result = getWorkspaceWSDLResources();
+ result.removeAll(getInternalWSDLResources());
+ List serviceRefs = getAllWorkspaceServiceRefs();
+ for (int i=0; i<serviceRefs.size(); i++) {
+ ServiceRef ref = (ServiceRef) serviceRefs.get(i);
+ try {
+ Resource res = WorkbenchResourceHelperBase.getResource(URI.createURI(ref.getWsdlFile()), true);
+ if (res !=null && result.contains(res))
+ result.remove(res);
+ } catch (Exception e) {
+ //Ignore
+ }
+ }
+ return result;
+ }
+
+ public boolean isServiceInternal(Service service) {
+ return getInternalWSDLResources().contains(getWSDLResource(service));
+ }
+
+ private List getWSDLServicesFromWSDLResources(List wsdlResources) {
+ List result = new ArrayList();
+ for (int i = 0; i < wsdlResources.size(); i++) {
+ WSDLResourceImpl wsdl = (WSDLResourceImpl) wsdlResources.get(i);
+ List services = getWSDLServices(wsdl);
+ if (wsdl != null && services != null && !services.isEmpty())
+ result.addAll(services);
+ }
+ return result;
+ }
+
+ public List getExternalWSDLServices() {
+ List result = getWsdlServicesFromWorkspaceWSILs();
+ result.removeAll(getInternalWSDLServices());
+ return result;
+ }
+
+ public List getWsdlServicesFromWorkspaceWSILs() {
+ List result = new ArrayList();
+ List wsilFiles = getWorkspaceWSILFiles();
+ for (int i = 0; i < wsilFiles.size(); i++) {
+ IFile wsil = (IFile) wsilFiles.get(i);
+ List services = getWsdlServicesFromWsilFile(wsil);
+ if (!services.isEmpty())
+ result.addAll(services);
+ }
+ return result;
+ }
+
+ public List getWsdlServicesFromWsilFile(IFile wsil) {
+ List result = new ArrayList();
+ WebServiceEntity entity = parseWsilFile(wsil);
+ if (entity != null && entity.getType() == WebServiceEntity.TYPE_WSIL) {
+ // get all the WSDL references from the WSIL entity
+ List wsdlList = entity.getChildren();
+ for (Iterator it = wsdlList.iterator(); it.hasNext();) {
+ Object item = it.next();
+ if (item != null && item instanceof WebServiceEntity) {
+ if (((WebServiceEntity) item).getModel() != null && ((WebServiceEntity) item).getModel() instanceof Definition) {
+ Definition def = (Definition) ((WebServiceEntity) item).getModel();
+ if (def != null && !def.getServices().isEmpty())
+ result.addAll(def.getServices().values());
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public WebServiceEntity parseWsilFile(IFile wsil) {
+ WebServicesParser parser = null;
+ String url = null;
+ // verify proper input
+ if (wsil == null || !wsil.getFileExtension().equals(WSIL_EXT))
+ return null;
+ // Parse wsil file to get wsdl services
+ try {
+ url = wsil.getLocation().toFile().toURL().toString();
+ parser = new WebServicesParser(url);
+ parser.parse(WebServicesParser.PARSE_WSIL | WebServicesParser.PARSE_WSDL);
+ } catch (Exception e) {
+ //Ignore
+ }
+ if (parser == null)
+ return null;
+ return parser.getWebServiceEntityByURI(url);
+ }
+
+ /**
+ * Returns all WSDL Services, both internal and external
+ */
+ public List getAllWSDLServices() {
+ List result = new ArrayList();
+ result.addAll(getInternalWSDLServices());
+ result.addAll(getExternalWSDLServices());
+ return result;
+ }
+
+ protected void dispose() {
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+ releaseEditModels();
+ INSTANCE = null;
+ }
+
+ public WSDLResourceImpl getWSDLResource(WebServiceDescription webService) {
+ String wsdlFileName = webService.getWsdlFile();
+ WSDLResourceImpl res = null;
+ String projName = ProjectUtilities.getProject(webService).getName();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null && editModel.getProject().getName().equals(projName)) {
+ res = editModel.getWsdlResource(wsdlFileName);
+ if (res != null)
+ break;
+ }
+ }
+ return res;
+ }
+
+ public List getWSDLServices(WSDLResourceImpl wsdl) {
+ List result = new ArrayList();
+ Definition def = wsdl.getDefinition();
+ if (def == null)
+ return result;
+ result = new ArrayList(def.getServices().values());
+ return result;
+ }
+
+ public Service getWSDLServiceForWebService(WebServiceDescription webService) {
+ Service service = null;
+ WSDLResourceImpl wsdl = getWSDLResource(webService);
+ if (wsdl == null) return service;
+ Definition definition = wsdl.getDefinition();
+ if (definition == null) return service;
+ Map services = definition.getServices();
+ if (services.isEmpty()) return service;
+ PortComponent portComp = null;
+ if (webService.getPortComponents()!=null && webService.getPortComponents().size()>0) {
+ portComp = (PortComponent) webService.getPortComponents().get(0);
+ return getService(portComp);
+ }
+ return service;
+ }
+
+ public WSDLResourceImpl getWSDLResource(Service wsdlService) {
+ return (WSDLResourceImpl) wsdlService.eResource();
+ }
+
+ public Service getService(PortComponent port) {
+ List services = getInternalWSDLServices();
+ for (int i = 0; i < services.size(); i++) {
+ Service service = (Service) services.get(i);
+ if (service.getPorts().size() == 1) {
+ Port wsdlPort = (Port) service.getPorts().values().toArray()[0];
+ String qName = wsdlPort.getBinding().getQName().getNamespaceURI();
+ if (port.getWsdlPort().getNamespaceURI().equals(qName))
+ return service;
+ }
+ }
+ return null;
+ }
+
+ public PortComponent getPortComponent(String qName) {
+ List wsDescs = getInternalWebServicesDescriptions();
+ for (int i = 0; i < wsDescs.size(); i++) {
+ WebServiceDescription wsDesc = (WebServiceDescription) wsDescs.get(i);
+ List ports = wsDesc.getPortComponents();
+ for (int j = 0; j < ports.size(); j++) {
+ PortComponent portComp = (PortComponent) ports.get(j);
+ if (portComp.getWsdlPort().getNamespaceURI().equals(qName))
+ return portComp;
+ }
+ }
+ return null;
+ }
+
+ public PortComponent getPortComponent(String qName, IProject project) {
+ List wsDescs = getInternalWebServicesDescriptions();
+ for (int i = 0; i < wsDescs.size(); i++) {
+ WebServiceDescription wsDesc = (WebServiceDescription) wsDescs.get(i);
+ List ports = wsDesc.getPortComponents();
+ for (int j = 0; j < ports.size(); j++) {
+ PortComponent portComp = (PortComponent) ports.get(j);
+ if (portComp.getWsdlPort().getNamespaceURI().equals(qName) && project == ProjectUtilities.getProject(portComp))
+ return portComp;
+ }
+ }
+ return null;
+ }
+
+ public PortComponent getPortComponent(Service wsdlService) {
+ // If there is only one port in the wsdl service, find the matching port component
+ // otherwise if multiple ports return null because we need more information
+ if (wsdlService == null || wsdlService.getPorts().isEmpty())
+ return null;
+ if (wsdlService.getPorts().size() == 1) {
+ Port port = (Port) wsdlService.getPorts().values().toArray()[0];
+ String qName = port.getBinding().getQName().getNamespaceURI();
+ return getPortComponent(qName, ProjectUtilities.getProject(wsdlService));
+ }
+ return null;
+ }
+
+ public ServiceImplBean getServiceImplBean(Service wsdlService) {
+ PortComponent port = getPortComponent(wsdlService);
+ if (port == null)
+ return null;
+ return port.getServiceImplBean();
+ }
+
+ public WsddResource getWsddResource(Service wsdlService) {
+ PortComponent port = getPortComponent(wsdlService);
+ if (port == null)
+ return null;
+ return (WsddResource) port.eResource();
+ }
+
+ public String getServiceEndpointInterface(Service wsdlService) {
+ PortComponent port = getPortComponent(wsdlService);
+ if (port == null)
+ return null;
+ return port.getServiceEndpointInterface();
+ }
+
+ public List getAllWorkspaceServiceRefs() {
+ List result = new ArrayList();
+ result.addAll(getWorkspace13ServiceRefs());
+ result.addAll(getWorkspace14ServiceRefs());
+ return result;
+ }
+
+ public List getWorkspace13ServiceRefs() {
+ List result = new ArrayList();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null) {
+ WebServicesResource res = editModel.get13WebServicesClientResource();
+ if (res != null && res.isLoaded() && res.getWebServicesClient() != null)
+ result.addAll(res.getWebServicesClient().getServiceRefs());
+ }
+ }
+ return result;
+ }
+
+ public List get13ServiceRefs(J2EEEditModel moduleEditModel) {
+
+ List result = new ArrayList();
+ WebServicesResource res = getWscddResource(moduleEditModel);
+ if (res != null && res.isLoaded() && res.getWebServicesClient() != null)
+ result.addAll(res.getWebServicesClient().getServiceRefs());
+
+ return result;
+ }
+
+ /**
+ * @param moduleEditModel
+ * @return
+ */
+ private WebServicesResource getWscddResource(J2EEEditModel moduleEditModel) {
+
+ if (moduleEditModel.getJ2EENature().getNatureID().equals(IEJBNatureConstants.NATURE_ID))
+ return (WebServicesResource) moduleEditModel.getResource(J2EEConstants.WEB_SERVICES_CLIENT_META_INF_DD_URI_OBJ);
+ if (moduleEditModel.getJ2EENature().getNatureID().equals(IWebNatureConstants.J2EE_NATURE_ID))
+ return (WebServicesResource) moduleEditModel.getResource(J2EEConstants.WEB_SERVICES_CLIENT_WEB_INF_DD_URI_OBJ);
+ if (moduleEditModel.getJ2EENature().getNatureID().equals(IApplicationClientNatureConstants.NATURE_ID))
+ return (WebServicesResource) moduleEditModel.getResource(J2EEConstants.WEB_SERVICES_CLIENT_META_INF_DD_URI_OBJ);
+ return null;
+ }
+
+ public List getWorkspace14ServiceRefs() {
+ List result = new ArrayList();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null) {
+ J2EEEditModel j2eeEditModel = editModel.getJ2EEEditModel(this);
+ try {
+ EObject rootObject = j2eeEditModel.getPrimaryRootObject();
+ // handle EJB project case
+ if (rootObject instanceof EJBJar) {
+ List cmps = ((EJBJar) rootObject).getEnterpriseBeans();
+ for (int j = 0; j < cmps.size(); j++) {
+ EnterpriseBean bean = (EnterpriseBean) cmps.get(j);
+ if (bean.getServiceRefs() != null && !bean.getServiceRefs().isEmpty())
+ result.addAll(bean.getServiceRefs());
+ }
+ }
+ // handle Web Project
+ else if (rootObject instanceof WebApp) {
+ if (((WebApp) rootObject).getServiceRefs() != null && !((WebApp) rootObject).getServiceRefs().isEmpty())
+ result.addAll(((WebApp) rootObject).getServiceRefs());
+ }
+ // handle App clients
+ else if (rootObject instanceof ApplicationClient) {
+ if (((ApplicationClient) rootObject).getServiceRefs() != null && !((ApplicationClient) rootObject).getServiceRefs().isEmpty())
+ result.addAll(((ApplicationClient) rootObject).getServiceRefs());
+ }
+ } finally {
+ j2eeEditModel.releaseAccess(this);
+ }
+ }
+ }
+ return result;
+ }
+
+ public boolean isJ2EE14(ServiceRef ref) {
+ return !(ref.eContainer() instanceof WebServicesClient);
+ }
+
+ public List getWorkspaceWSILFiles() {
+ List result = new ArrayList();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null) {
+ List files = ProjectUtilities.getAllProjectFiles(editModel.getProject());
+ for (int j = 0; j < files.size(); j++) {
+ IFile file = (IFile) files.get(j);
+ if (file != null && WSIL_EXT.equals(file.getFileExtension()))
+ result.add(file);
+ }
+ }
+ }
+ return result;
+ }
+
+ public List getWorkspaceWSDLResources() {
+ List result = new ArrayList();
+ for (int i = 0; i < getEditModelList().size(); i++) {
+ WebServiceEditModel editModel = (WebServiceEditModel) getEditModelList().get(i);
+ if (editModel.getProject() != null) {
+ List wsdlResources = editModel.getWSDLResources();
+ if (wsdlResources != null && !wsdlResources.isEmpty()) {
+ for (int j = 0; j < wsdlResources.size(); j++) {
+ WSDLResourceImpl wsdl = (WSDLResourceImpl) wsdlResources.get(j);
+ if (!result.contains(wsdl))
+ result.add(wsdl);
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public List getWSDLServices() {
+ List result = new ArrayList();
+ List internalWsdls = getInternalWSDLServices();
+ if (internalWsdls != null && !internalWsdls.isEmpty())
+ result.addAll(internalWsdls);
+ //TODO add externals
+ return result;
+ }
+
+ /**
+ * @param bean
+ * @return
+ */
+ public Collection get13ServiceRefs(EnterpriseBean bean) {
+
+ IProject proj = ProjectUtilities.getProject(bean);
+ if (proj == null)
+ return Collections.EMPTY_LIST;
+ WebServicesResource res = getWebServicesClientResource(proj);
+ if (res != null && res.getWebServicesClient() != null) {
+ String ejbName = bean.getName();
+ List scopes = res.getWebServicesClient().getComponentScopedRefs();
+ for (Iterator iter = scopes.iterator(); iter.hasNext();) {
+ ComponentScopedRefs scope = (ComponentScopedRefs) iter.next();
+ if (scope.getComponentName().equals(ejbName))
+ return scope.getServiceRefs();
+ }
+ }
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * @param client
+ * @return
+ */
+ public Collection get13ServiceRefs(ApplicationClient client) {
+ IProject proj = ((ProjectResourceSet) client.eResource().getResourceSet()).getProject();
+ WebServicesResource res = getWebServicesClientResource(proj);
+ if (res != null) {
+ WebServicesClient webClient = res.getWebServicesClient();
+ if (webClient != null)
+ return webClient.getServiceRefs();
+ }
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * @param webapp
+ * @return
+ */
+ public Collection get13ServiceRefs(WebApp webapp) {
+ IProject proj = ((ProjectResourceSet) webapp.eResource().getResourceSet()).getProject();
+ WebServicesResource res = getWebServicesClientResource(proj);
+ if (res != null) {
+ WebServicesClient webClient = res.getWebServicesClient();
+ if (webClient != null)
+ return webClient.getServiceRefs();
+ }
+ return Collections.EMPTY_LIST;
+ }
+
+ public WebServicesResource getDefaultWebServicesResource(EObject proj, J2EEEditModel model) {
+ WebServicesResource res = getWebServicesClientResource(model.getProject());
+ if (res != null) {
+ if (res.getContents().isEmpty()) {
+ WebServicesClient wsc = Webservice_clientFactory.eINSTANCE.createWebServicesClient();
+ res.getContents().add(wsc);
+ }
+ return res;
+ }
+ if (proj instanceof WebApp)
+ res = (WebServicesResource) model.createResource(URI.createURI(WebServiceEditModel.WS_CLIENT_WEB_INF_PATH));
+ else
+ res = (WebServicesResource) model.createResource(URI.createURI(WebServiceEditModel.WS_CLIENT_META_INF_PATH));
+ WebServicesClient wsc = Webservice_clientFactory.eINSTANCE.createWebServicesClient();
+ res.getContents().add(wsc);
+ return res;
+ }
+
+ public WebServicesResource getWebServicesClientResource(IProject proj) {
+ J2EENature nature = (J2EENature.getRegisteredRuntime(proj));
+ WebServicesResource res = null;
+ try {
+ if (nature.getDeploymentDescriptorType() == XMLResource.WEB_APP_TYPE)
+ res = (WebServicesResource) nature.getResource(J2EEConstants.WEB_SERVICES_CLIENT_WEB_INF_DD_URI_OBJ);
+ else
+ res = (WebServicesResource) nature.getResource(J2EEConstants.WEB_SERVICES_CLIENT_META_INF_DD_URI_OBJ);
+ } catch (Exception e) {
+ //Ignore
+ }
+ return res;
+ }
+
+ public WsddResource getWebServicesResource(IProject proj) {
+ J2EENature nature = (J2EENature.getRegisteredRuntime(proj));
+ WsddResource res = null;
+ try {
+ if (nature.getDeploymentDescriptorType() == XMLResource.WEB_APP_TYPE)
+ res = (WsddResource) nature.getResource(J2EEConstants.WEB_SERVICES_WEB_INF_DD_URI_OBJ);
+ else
+ res = (WsddResource) nature.getResource(J2EEConstants.WEB_SERVICES_META_INF_DD_URI_OBJ);
+ } catch (Exception e) {
+ //Ignore
+ }
+
+ if (res != null && WorkbenchResourceHelper.getFile(res).exists())
+ return res;
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
+ */
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ IResource resource = delta.getResource();
+ if (resource.getType() == IResource.PROJECT) {
+ IProject p = (IProject) resource;
+ // Handle project adds
+ if (delta.getKind() == IResourceDelta.ADDED) {
+ WebServiceEditModel editModel = getWebServiceEditModelForProject(p);
+ if (editModel !=null && !getEditModels().containsValue(editModel)) {
+ getEditModels().put(p,editModel);
+ editModel.addListener(this);
+ // forward an edit model event to manager's listeners
+ notifyListeners(new EditModelEvent(EditModelEvent.ADDED_RESOURCE,editModel));
+ return false;
+ }
+ }
+ // Handle project close events removals
+ else if (delta.getKind() == IResourceDelta.CHANGED) {
+ boolean projectOpenStateChanged = ((delta.getFlags() & IResourceDelta.OPEN) != 0);
+ if (projectOpenStateChanged) {
+ WebServiceEditModel editModel = (WebServiceEditModel)getEditModels().get(p);
+ if (editModel !=null) {
+ editModel.removeListener(this);
+ getEditModels().remove(p);
+ notifyListeners(new EditModelEvent(EditModelEvent.REMOVED_RESOURCE,editModel));
+ return false;
+ }
+ }
+ }
+ // Handle project delete events
+ else if (delta.getKind() == IResourceDelta.REMOVED) {
+ WebServiceEditModel editModel = (WebServiceEditModel)getEditModels().get(p);
+ if (editModel !=null) {
+ editModel.removeListener(this);
+ getEditModels().remove(p);
+ notifyListeners(new EditModelEvent(EditModelEvent.REMOVED_RESOURCE,editModel));
+ return false;
+ }
+ }
+ }
+ else if (resource.getType() == IResource.FILE && isInterrestedInFile((IFile) resource)) {
+ if ((delta.getKind() == IResourceDelta.ADDED) || ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0))
+ if (resource.getFileExtension().equals(WSDL_EXT))
+ addedWsdl((IFile) resource);
+ else if (resource.getFileExtension().equals(WSIL_EXT))
+ addedWsil((IFile)resource);
+ return false;
+ }
+ return true;
+ }
+
+ protected void addedWsdl(IFile wsdl) {
+ if (!wsdl.exists())
+ return;
+ WSDLResourceImpl res = (WSDLResourceImpl) WorkbenchResourceHelperBase.getResource(wsdl, true);
+ IProject p = ProjectUtilities.getProject(res);
+ WebServiceEditModel editModel = getWebServiceEditModelForProject(p);
+ // forward an edit model event to manager's listeners
+ notifyListeners(new EditModelEvent(EditModelEvent.ADDED_RESOURCE, editModel));
+ }
+
+ protected void addedWsil(IFile wsil) {
+ if (!wsil.exists())
+ return;
+ //Resource res = WorkbenchResourceHelper.getResource(wsil,true);
+ IProject p = ProjectUtilities.getProject(wsil);
+ WebServiceEditModel editModel = getWebServiceEditModelForProject(p);
+ // forward an edit model event to manager's listeners
+ notifyListeners(new EditModelEvent(EditModelEvent.ADDED_RESOURCE, editModel));
+
+ }
+
+ protected boolean isInterrestedInFile(IFile aFile) {
+ if (aFile != null && aFile.getFileExtension() != null) {
+ String extension = aFile.getFileExtension();
+ return extension.equals(WSDL_EXT) || extension.equals(WSIL_EXT);
+ }
+ return false;
+ }
+
+ /**
+ * @param object
+ * @return
+ */
+ public Collection getServiceRefs(EJBJar jar) {
+
+ List list = new ArrayList();
+ List beans = jar.getEnterpriseBeans();
+ try {
+ for (int i = 0; i < beans.size(); i++) {
+ EnterpriseBean bean = (EnterpriseBean) beans.get(i);
+ list.addAll(getServiceRefs(bean));
+ }
+ } catch (Exception e) {
+ //Ignore
+ }
+ return list;
+ }
+
+ public Collection getServiceRefs(EnterpriseBean bean) {
+ List list = new ArrayList();
+ if (bean.getEjbJar().getJ2EEVersionID() >= J2EEVersionConstants.J2EE_1_4_ID)
+ list.addAll(bean.getServiceRefs());
+ else
+ list.addAll(get13ServiceRefs(bean));
+ return list;
+ }
+
+ public Collection getServiceRefs(WebApp webapp) {
+
+ List list = new ArrayList();
+ try {
+ if (webapp.getVersionID() >= J2EEVersionConstants.WEB_2_4_ID)
+ list.addAll(webapp.getServiceRefs());
+ else
+ list.addAll(get13ServiceRefs(webapp));
+ } catch (Exception e) {
+ //Ignore
+ }
+ return list;
+ }
+
+ public Collection getServiceRefs(ApplicationClient client) {
+
+ List list = new ArrayList();
+ try {
+ if (client.getJ2EEVersionID() >= J2EEVersionConstants.J2EE_1_4_ID)
+ list.addAll(client.getServiceRefs());
+ else
+ list.addAll(get13ServiceRefs(client));
+ } catch (Exception e) {
+ //Ignore
+ }
+ return list;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/project/J2EEModuleNature.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/project/J2EEModuleNature.java
index d865a59a7..4d2e4ef8f 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/project/J2EEModuleNature.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/project/J2EEModuleNature.java
@@ -18,6 +18,7 @@ package org.eclipse.jst.j2ee.internal.project;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
@@ -38,6 +39,7 @@ import org.eclipse.jst.j2ee.application.Module;
import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonarchiveFactory;
import org.eclipse.jst.j2ee.internal.earcreation.EARNatureRuntime;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceEditModel;
import com.ibm.wtp.emf.workbench.ProjectResourceSet;
import com.ibm.wtp.emf.workbench.ProjectUtilities;
@@ -304,35 +306,31 @@ public abstract class J2EEModuleNature extends J2EENature {
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
- // public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey) {
- // return getWebServiceEditModelForRead(accessorKey, null);
- // }
+ public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey) {
+ return getWebServiceEditModelForRead(accessorKey, null);
+ }
/**
* Return an editing model used to read web service resources. Important!!! Calling this method
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
- // public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
- // return null;
- // }
+ public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
+ return null;
+ }
/**
* Return an editing model used to edit web service resources. Important!!! Calling this method
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO WebServices for M3
- // public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey) {
- // return getWebServiceEditModelForWrite(accessorKey, null);
- // }
+ public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey) {
+ return getWebServiceEditModelForWrite(accessorKey, null);
+ }
/**
* Return an editing model used to edit web service resources. Important!!! Calling this method
* increments the use count of this model. When you are done accessing the model, call
* releaseAccess()!
*/
- // TODO Webservices for M3
- // public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
- // return null;
- // }
+ public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
+ return null;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ReferenceDataModel.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ReferenceDataModel.java
index 90097a329..b85662658 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ReferenceDataModel.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ReferenceDataModel.java
@@ -8,10 +8,10 @@
**************************************************************************************************/
package org.eclipse.jst.j2ee.internal.reference;
+import java.util.Collection;
import java.util.List;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
@@ -27,8 +27,10 @@ import org.eclipse.jst.j2ee.internal.J2EEConstants;
import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
import org.eclipse.jst.j2ee.internal.common.operations.J2EEModelModifierOperationDataModel;
import org.eclipse.jst.j2ee.internal.project.J2EECreationResourceHandler;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
import org.eclipse.jst.j2ee.webapplication.WebApp;
import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperationDataModel;
import org.eclispe.wst.common.frameworks.internal.plugin.WTPCommonPlugin;
import com.ibm.wtp.emf.workbench.ProjectUtilities;
@@ -68,7 +70,7 @@ public abstract class ReferenceDataModel extends J2EEModelModifierOperationDataM
super.init();
}
- protected void initializeOwnerNature() throws CoreException {
+ protected void initializeOwnerNature() {
EObject owner = (EObject) getProperty(OWNER);
if (owner != null) {
IProject ownerProject = ProjectUtilities.getProject(owner);
@@ -107,8 +109,8 @@ public abstract class ReferenceDataModel extends J2EEModelModifierOperationDataM
notifyDefaultChange(J2EE_VERSION);
IProject proj = ProjectUtilities.getProject((EObject) propertyValue);
if (proj != null)
- setProperty(ReferenceDataModel.PROJECT_NAME, proj.getName());
- } catch (CoreException e) {
+ setProperty(EditModelOperationDataModel.PROJECT_NAME, proj.getName());
+ } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@@ -236,12 +238,11 @@ public abstract class ReferenceDataModel extends J2EEModelModifierOperationDataM
if (checkMessageDestRefExists(bean.getMessageDestinationRefs(), nameValue))
return false;
}
- // TODO WebServices for M3
- // else {
- // Collection temp = WebServicesManager.getInstance().get13ServiceRefs(bean);
- // if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
- // return false;
- // }
+ else {
+ Collection temp = WebServicesManager.getInstance().get13ServiceRefs(bean);
+ if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
+ return false;
+ }
} else if (ownerType == APP_CLIENT_TYPE) {
ApplicationClient appClient = (ApplicationClient) getProperty(ReferenceDataModel.OWNER);
if (checkResourceRefExists(appClient.getResourceRefs(), nameValue))
@@ -256,12 +257,11 @@ public abstract class ReferenceDataModel extends J2EEModelModifierOperationDataM
if (checkMessageDestRefExists(appClient.getMessageDestinationRefs(), nameValue))
return false;
}
- // TODO WebServices for M3
- // else {
- // Collection temp = WebServicesManager.getInstance().get13ServiceRefs(appClient);
- // if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
- // return false;
- // }
+ else {
+ Collection temp = WebServicesManager.getInstance().get13ServiceRefs(appClient);
+ if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
+ return false;
+ }
} else if (ownerType == WEB_TYPE) {
WebApp webApp = (WebApp) getProperty(ReferenceDataModel.OWNER);
if (checkResourceRefExists(webApp.getResourceRefs(), nameValue))
@@ -278,12 +278,11 @@ public abstract class ReferenceDataModel extends J2EEModelModifierOperationDataM
if (checkMessageDestRefExists(webApp.getMessageDestinationRefs(), nameValue))
return false;
}
- // TODO WebServices for M3
- // else {
- // Collection temp = WebServicesManager.getInstance().get13ServiceRefs(webApp);
- // if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
- // return false;
- // }
+ else {
+ Collection temp = WebServicesManager.getInstance().get13ServiceRefs(webApp);
+ if (temp != null && !temp.isEmpty() && checkServiceRefExists((List) temp, nameValue))
+ return false;
+ }
}
return true;
}
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceCreationOperation.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceCreationOperation.java
new file mode 100644
index 000000000..1057de5a1
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceCreationOperation.java
@@ -0,0 +1,250 @@
+/*
+ * Created on Feb 6, 2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.eclipse.jst.j2ee.internal.reference;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.jem.java.JavaClass;
+import org.eclipse.jem.java.JavaRefFactory;
+import org.eclipse.jst.j2ee.client.ApplicationClient;
+import org.eclipse.jst.j2ee.client.impl.ClientFactoryImpl;
+import org.eclipse.jst.j2ee.common.CommonFactory;
+import org.eclipse.jst.j2ee.common.CommonPackage;
+import org.eclipse.jst.j2ee.common.Description;
+import org.eclipse.jst.j2ee.common.QName;
+import org.eclipse.jst.j2ee.common.XMLResource;
+import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.internal.J2EEEditModel;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceClientGenerator;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesClientDataRegistry;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.jst.j2ee.webservice.wsclient.ComponentScopedRefs;
+import org.eclipse.jst.j2ee.webservice.wsclient.PortComponentRef;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
+import org.eclipse.jst.j2ee.webservice.wsclient.Webservice_clientFactory;
+import org.eclipse.jst.j2ee.webservice.wsclient.Webservice_clientPackage;
+import org.eclipse.wst.common.internal.emfworkbench.integration.ModifierHelper;
+import org.eclipse.wst.common.internal.emfworkbench.operation.ModelModifierOperation;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.ServerCore;
+
+
+/**
+ * @author dfholttp
+ *
+ * To change the template for this generated type comment go to Window - Preferences - Java - Code
+ * Generation - Code and Comments
+ */
+public class ServiceReferenceCreationOperation extends ModelModifierOperation {
+ ServiceReferenceDataModel dataModel;
+ ServiceRef ref;
+ private int j2eeVersion = J2EEVersionConstants.J2EE_1_4_ID;
+
+ /**
+ * @param dataModel
+ */
+ public ServiceReferenceCreationOperation(ServiceReferenceDataModel dataModel) {
+ super(dataModel);
+ this.dataModel = dataModel;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.emf.workbench.operation.ModelModifierOperation#addHelpers()
+ */
+ protected void addHelpers() {
+ WebServiceClientGenerator actualGen = getWebServiceClientGenerator();
+ if (actualGen != null)
+ actualGen.genWebServiceClientArtifacts(dataModel);
+ if (!dataModel.didGenDescriptors())
+ modifier.addHelper(createHelpers());
+
+ if (actualGen != null)
+ createPortCompRefHelpers();
+ }
+
+ protected WebServiceClientGenerator getWebServiceClientGenerator() {
+ List generators = WebServicesClientDataRegistry.getInstance().getWSClientGeneratorExtensions();
+ WebServiceClientGenerator actualGen = null;
+
+ IRuntime runtime = ServerCore.getProjectProperties(dataModel.getTargetProject()).getRuntimeTarget();
+ if (runtime == null)
+ return null;
+ String serverTargetID = runtime.getRuntimeType().getId();
+
+ for (int i = 0; i < generators.size(); i++) {
+ WebServiceClientGenerator gen = (WebServiceClientGenerator) generators.get(i);
+ if (gen.isRuntimeSupported(serverTargetID)) {
+ if (serverTargetID.equals(WebServiceClientGenerator.GENERIC_J2EE_CONTAINER)) {
+ // AXIS is only supported for web projects
+ if (dataModel.getDeploymentDescriptorType() != XMLResource.WEB_APP_TYPE)
+ break;
+ }
+ actualGen = gen;
+ break;
+ }
+ }
+ return actualGen;
+ }
+
+ /*
+ * @see SimpleCommandWizardPage#createCommandHelper()
+ */
+ public ModifierHelper createHelpers() {
+ ModifierHelper helper = null;
+ ref = Webservice_clientFactory.eINSTANCE.createServiceRef();
+
+ if (dataModel != null) {
+ helper = new ModifierHelper();
+ EObject owner = (EObject) dataModel.getProperty(ReferenceDataModel.OWNER);
+ switch (dataModel.getDeploymentDescriptorType()) {
+ case XMLResource.APP_CLIENT_TYPE :
+ if (((ApplicationClient) owner).getVersionID() == J2EEVersionConstants.J2EE_1_4_ID) {
+ helper.setFeature(ClientFactoryImpl.getPackage().getApplicationClient_ServiceRefs());
+ helper.setOwner(owner);
+ Description descriptionObj = CommonFactory.eINSTANCE.createDescription();
+ descriptionObj.setValue(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ ref.getDescriptions().add(descriptionObj);
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ } else {
+ helper.setFeature(Webservice_clientPackage.eINSTANCE.getWebServicesClient_ServiceRefs());
+ helper.setOwner(WebServicesManager.getInstance().getDefaultWebServicesResource(owner, (J2EEEditModel) editModel).getWebServicesClient());
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ j2eeVersion = J2EEVersionConstants.J2EE_1_3_ID;
+ }
+ break;
+ case XMLResource.EJB_TYPE :
+ if (((EnterpriseBean) owner).getVersionID() == J2EEVersionConstants.EJB_2_1_ID) {
+ helper.setFeature(CommonPackage.eINSTANCE.getJNDIEnvRefsGroup_ServiceRefs());
+ helper.setOwner(owner);
+ Description descriptionObj = CommonFactory.eINSTANCE.createDescription();
+ descriptionObj.setValue(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ ref.getDescriptions().add(descriptionObj);
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ } else {
+ j2eeVersion = J2EEVersionConstants.J2EE_1_3_ID;
+ return createEJB13Helper(owner, helper);
+ }
+ break;
+ case XMLResource.WEB_APP_TYPE :
+ if (((WebApp) owner).getVersionID() == J2EEVersionConstants.WEB_2_4_ID) {
+ helper.setFeature(CommonPackage.eINSTANCE.getJNDIEnvRefsGroup_ServiceRefs());
+ helper.setOwner(owner);
+ Description descriptionObj = CommonFactory.eINSTANCE.createDescription();
+ descriptionObj.setValue(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ ref.getDescriptions().add(descriptionObj);
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ } else {
+ helper.setFeature(Webservice_clientPackage.eINSTANCE.getWebServicesClient_ServiceRefs());
+ helper.setOwner(WebServicesManager.getInstance().getDefaultWebServicesResource(owner, (J2EEEditModel) editModel).getWebServicesClient());
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ j2eeVersion = J2EEVersionConstants.J2EE_1_3_ID;
+ }
+ break;
+ }
+ }
+
+ ref.setServiceRefName(dataModel.getStringProperty(ReferenceDataModel.REF_NAME).trim());
+ String serviceInterfaceName = dataModel.getServiceInterfaceName();
+ ref.setServiceInterface((JavaClass) JavaRefFactory.eINSTANCE.reflectType(serviceInterfaceName, (EObject) dataModel.getProperty(ReferenceDataModel.OWNER)));
+ ref.setWsdlFile(dataModel.getStringProperty(ServiceReferenceDataModel.WSDL_FILE).trim());
+ if (dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE) != null && !dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE).equals("")) //$NON-NLS-1$
+ ref.setJaxrpcMappingFile(dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE).trim());
+ QName qName = ((CommonPackage) EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI)).getCommonFactory().createQName();
+
+ if (j2eeVersion == J2EEVersionConstants.J2EE_1_3_ID) {
+ qName.setLocalPart(dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_lOCAL_PART));
+ qName.setNamespaceURI(dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_NAMESPACE_URI));
+ } else {
+ qName.setValues("prefix", dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_NAMESPACE_URI), dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_lOCAL_PART)); //$NON-NLS-1$
+ }
+ ref.setServiceQname(qName);
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+ helper.setValue(ref);
+ return helper;
+ }
+
+ /*
+ * @see SimpleCommandWizardPage#createCommandHelper()
+ */
+ public void createPortCompRefHelpers() {
+ ModifierHelper helper = null;
+ if (dataModel != null) {
+ helper = new ModifierHelper();
+ String[] serEndpoints = dataModel.getServiceEndpointInterfaceNames();
+ if (serEndpoints == null || serEndpoints.length == 0)
+ return;
+ String serviceEndpointInterface;
+ for (int i = 0; i < serEndpoints.length; i++) {
+ PortComponentRef portCompRef = Webservice_clientFactory.eINSTANCE.createPortComponentRef();
+ helper.setOwner(ref);
+ serviceEndpointInterface = serEndpoints[i];
+ portCompRef.setServiceEndpointInterface((JavaClass) JavaRefFactory.eINSTANCE.reflectType(serviceEndpointInterface, (EObject) dataModel.getProperty(ReferenceDataModel.OWNER)));
+ helper.setFeature(Webservice_clientPackage.eINSTANCE.getServiceRef_PortComponentRefs());
+ helper.setValue(portCompRef);
+ modifier.addHelper(helper);
+ }
+ }
+ }
+
+ /**
+ * @return
+ */
+ private ModifierHelper createEJB13Helper(EObject ownerEJB, ModifierHelper helper) {
+ ref = Webservice_clientFactory.eINSTANCE.createServiceRef();
+ WebServicesClient webServiceClient = WebServicesManager.getInstance().getDefaultWebServicesResource(ownerEJB, (J2EEEditModel) editModel).getWebServicesClient();
+
+ ref.setServiceRefName(dataModel.getStringProperty(ReferenceDataModel.REF_NAME).trim());
+ String serviceInterfaceName = dataModel.getServiceInterfaceName();
+ ref.setServiceInterface((JavaClass) JavaRefFactory.eINSTANCE.reflectType(serviceInterfaceName, (EObject) dataModel.getProperty(ReferenceDataModel.OWNER)));
+ ref.setWsdlFile(dataModel.getStringProperty(ServiceReferenceDataModel.WSDL_FILE).trim());
+ if (dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE) != null && !dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE).equals("")) //$NON-NLS-1$
+ ref.setJaxrpcMappingFile(dataModel.getStringProperty(ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE).trim());
+ QName qName = ((CommonPackage) EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI)).getCommonFactory().createQName();
+ qName.setLocalPart(dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_lOCAL_PART));
+ qName.setNamespaceURI(dataModel.getStringProperty(ServiceReferenceDataModel.QNAME_NAMESPACE_URI));
+ ref.setServiceQname(qName);
+ ref.setDescription(dataModel.getStringProperty(ReferenceDataModel.DESCRIPTION).trim());
+
+ ComponentScopedRefs compScopedRef = getComponentScopedRef((EnterpriseBean) ownerEJB, webServiceClient);
+ if (compScopedRef == null) {
+ compScopedRef = Webservice_clientFactory.eINSTANCE.createComponentScopedRefs();
+ compScopedRef.setComponentName(((EnterpriseBean) ownerEJB).getName());
+ helper.setOwner(webServiceClient);
+ helper.setFeature(Webservice_clientPackage.eINSTANCE.getWebServicesClient_ComponentScopedRefs());
+ compScopedRef.getServiceRefs().add(ref);
+ helper.setValue(compScopedRef);
+ } else {
+ helper.setOwner(compScopedRef);
+ helper.setFeature(Webservice_clientPackage.eINSTANCE.getComponentScopedRefs_ServiceRefs());
+ helper.setValue(ref);
+ }
+ return helper;
+ }
+
+ /**
+ * @param webServiceRes
+ * @return
+ */
+ private ComponentScopedRefs getComponentScopedRef(EnterpriseBean ownerEJB, WebServicesClient webServiceClient) {
+ List existingRefs = webServiceClient.getComponentScopedRefs();
+ if (existingRefs != null) {
+ for (int i = 0; i < existingRefs.size(); i++) {
+ if (((ComponentScopedRefs) existingRefs.get(i)).getComponentName().equals(ownerEJB.getName())) {
+ return (ComponentScopedRefs) existingRefs.get(i);
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceDataModel.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceDataModel.java
new file mode 100644
index 000000000..d6725d666
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/reference/ServiceReferenceDataModel.java
@@ -0,0 +1,318 @@
+package org.eclipse.jst.j2ee.internal.reference;
+
+import org.eclipse.wst.wsdl.Service;
+import javax.xml.namespace.QName;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jst.j2ee.common.XMLResource;
+import org.eclipse.jst.j2ee.internal.project.J2EECreationResourceHandler;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesClientDataHelper;
+import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclispe.wst.common.frameworks.internal.plugin.WTPCommonPlugin;
+
+import com.ibm.wtp.emf.workbench.ProjectUtilities;
+
+public class ServiceReferenceDataModel extends ReferenceDataModel implements WebServicesClientDataHelper {
+ /**
+ * Required, type String
+ */
+ public static final String TARGET_WEB_SERVICE = "ServiceReferenceDataModel.TARGET_WEB_SERVICE"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String WSDL_FILE = "ServiceReferenceDataModel.WSDL_FILE"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String JAX_RPC_MAPPING_FILE = "ServiceReferenceDataModel.JAX_RPC_MAPPING_FILE"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String QNAME_NAMESPACE_URI = "ServiceReferenceDataModel.QNAME_NAMESPACE_URI"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String QNAME_lOCAL_PART = "ServiceReferenceDataModel.QNAME_lOCAL_PART"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String WSDL_URL = "ServiceReferenceDataModel.WSDL_URL"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String QNAME = "ServiceReferenceDataModel.QNAME"; //$NON-NLS-1$
+ /**
+ * Required, type String
+ */
+ public static final String LINKS = "ServiceReferenceDataModel.LINK"; //$NON-NLS-1$
+
+ private String[] serviceEndpointInterfaceNames = null;
+ private String serviceInterfaceName = null;
+ private boolean didGenDescriptor = false;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.emf.workbench.operation.EditModelOperationDataModel#initValidBaseProperties()
+ */
+ protected void initValidBaseProperties() {
+ addValidBaseProperty(TARGET_WEB_SERVICE);
+ addValidBaseProperty(WSDL_FILE);
+ addValidBaseProperty(JAX_RPC_MAPPING_FILE);
+ addValidBaseProperty(QNAME_NAMESPACE_URI);
+ addValidBaseProperty(QNAME_lOCAL_PART);
+ addValidBaseProperty(WSDL_URL);
+ addValidBaseProperty(QNAME);
+ addValidBaseProperty(LINKS);
+ super.initValidBaseProperties();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.etools.j2ee.reference.ReferenceDataModel#doSetProperty(java.lang.String,
+ * java.lang.Object)
+ */
+ protected boolean doSetProperty(String propertyName, Object propertyValue) {
+ boolean doSet = super.doSetProperty(propertyName, propertyValue);
+ if (propertyName.equals(TARGET_WEB_SERVICE)) {
+ notifyDefaultChange(REF_NAME);
+ notifyDefaultChange(WSDL_FILE);
+ notifyDefaultChange(WSDL_URL);
+ notifyDefaultChange(QNAME);
+ notifyDefaultChange(QNAME_NAMESPACE_URI);
+ notifyDefaultChange(QNAME_lOCAL_PART);
+ }
+ return doSet;
+ }
+
+ protected Object getLocationForServiceFromWSIL(Service wsdl) {
+ // Fix to get "external" workspace wsdl file because wsilparser uses generic resource set
+ if (wsdl.eResource() == null)
+ return wsdl.getEnclosingDefinition().getLocation();
+ URI uri = wsdl.eResource().getURI();
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IPath rootPath = root.getLocation();
+ IPath wsdlPath = new Path(uri.toFileString());
+ if (wsdlPath.matchingFirstSegments(rootPath) == rootPath.segmentCount()) {
+ IFile wsdlFile = root.getFile(wsdlPath.removeFirstSegments(rootPath.segmentCount()));
+ if (wsdlFile.exists()) {
+ return wsdlFile.getProjectRelativePath().removeFirstSegments(1).toString();
+ }
+ }
+ return null;
+ }
+
+ protected Object getDefaultProperty(String propertyName) {
+ if (propertyName.equals(REF_NAME)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null)
+ return "service/" + wsdl.getQName().getLocalPart(); //$NON-NLS-1$
+ } else if (propertyName.equals(WSDL_FILE)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null) {
+ boolean isInternal = WorkbenchResourceHelper.getFile(wsdl) != null && WorkbenchResourceHelper.getFile(wsdl).exists();
+ if (isInternal)
+ return WorkbenchResourceHelper.getFile(wsdl).getProjectRelativePath().removeFirstSegments(1).toString();
+
+ Object location = getLocationForServiceFromWSIL(wsdl);
+ if (location != null)
+ return location;
+ }
+ } else if (propertyName.equals(WSDL_URL)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null) {
+ boolean isInternal = WorkbenchResourceHelper.getFile(wsdl) != null && WorkbenchResourceHelper.getFile(wsdl).exists();
+ if (isInternal)
+ return "file:/" + WorkbenchResourceHelper.getFile(wsdl).getRawLocation().toString(); //$NON-NLS-1$
+ return wsdl.getEnclosingDefinition().getLocation();
+ }
+ } else if (propertyName.equals(QNAME)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null)
+ return wsdl.getQName();
+ } else if (propertyName.equals(QNAME_NAMESPACE_URI)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null) {
+ QName qName = wsdl.getQName();
+ if (qName != null)
+ return qName.getNamespaceURI();
+ }
+ } else if (propertyName.equals(QNAME_lOCAL_PART)) {
+ Service wsdl = (Service) getProperty(TARGET_WEB_SERVICE);
+ if (wsdl != null) {
+ QName qName = wsdl.getQName();
+ if (qName != null)
+ return qName.getLocalPart();
+ }
+ }
+ return super.getDefaultProperty(propertyName);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.etools.j2ee.reference.ReferenceDataModel#doValidateProperty(java.lang.String)
+ */
+ protected IStatus doValidateProperty(String propertyName) {
+ IStatus stat = super.doValidateProperty(propertyName);
+ if (!(getProperty(TARGET_WEB_SERVICE) instanceof Service)) {
+ return WTPCommonPlugin.createErrorStatus(J2EECreationResourceHandler.getString("ServiceReferenceDataModel_ERROR_8")); //$NON-NLS-1$
+ }
+ return stat;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.common.operation.WTPOperationDataModel#getDefaultOperation()
+ */
+ public WTPOperation getDefaultOperation() {
+ return new ServiceReferenceCreationOperation(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getWSDLUrl()
+ */
+ public String getWSDLUrl() {
+ return getStringProperty(WSDL_URL);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getServiceQName()
+ */
+ public String getServiceQName() {
+ return getStringProperty(QNAME_NAMESPACE_URI) + ":" + getStringProperty(QNAME_lOCAL_PART); //$NON-NLS-1$
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getServiceInterfaceName()
+ */
+ public String getServiceInterfaceName() {
+ return serviceInterfaceName;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getServiceEndpointInterfaceNames()
+ */
+ public String[] getServiceEndpointInterfaceNames() {
+ return serviceEndpointInterfaceNames;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#setServiceInterfaceName(java.lang.String)
+ */
+ public void setServiceInterfaceName(String name) {
+ serviceInterfaceName = name;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#setServiceEndpointInterfaceNames(java.lang.String[])
+ */
+ public void setServiceEndpointInterfaceNames(String[] names) {
+ serviceEndpointInterfaceNames = names;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getProjectName()
+ */
+ public String getProjectName() {
+ Object owner = getProperty(OWNER);
+ String name = ProjectUtilities.getProject(owner).getName();
+ return name;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#getOutputWSDLFileName()
+ */
+ public String getOutputWSDLFileName() {
+ Object owner = getProperty(OWNER);
+ String outputLocation = null;
+ IProject project;
+ switch (getDeploymentDescriptorType()) {
+ case XMLResource.APP_CLIENT_TYPE :
+ project = ProjectUtilities.getProject(owner);
+ outputLocation = project.getFullPath().toString() + "\\appClientModule\\META-INF\\"; //$NON-NLS-1$
+ break;
+ case XMLResource.EJB_TYPE :
+ project = ProjectUtilities.getProject(owner);
+ outputLocation = project.getFullPath().toString() + "\\ejbModule\\META-INF\\"; //$NON-NLS-1$
+ break;
+ case XMLResource.WEB_APP_TYPE :
+ project = ProjectUtilities.getProject(owner);
+ outputLocation = project.getFullPath().toString() + "\\Web Content\\WEB-INF\\"; //$NON-NLS-1$
+ break;
+ }
+ if (getProperty(TARGET_WEB_SERVICE) == null)
+ return ""; //$NON-NLS-1$
+ return outputLocation + ((Service) getProperty(TARGET_WEB_SERVICE)).getQName().getLocalPart() + ".wsdl"; //$NON-NLS-1$
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#shouldDeploy()
+ */
+ public boolean shouldDeploy() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#shouldGenDescriptors()
+ */
+ public boolean shouldGenDescriptors() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.j2ee.webservices.WebServicesClientDataHelper#setDidGenDescriptors(boolean)
+ */
+ public void setDidGenDescriptors(boolean b) {
+ didGenDescriptor = b;
+ }
+
+ public boolean didGenDescriptors() {
+ return didGenDescriptor;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.wtp.common.operation.WTPOperationDataModel#isResultProperty(java.lang.String)
+ */
+ protected boolean isResultProperty(String propertyName) {
+ if (propertyName.equals(JAX_RPC_MAPPING_FILE))
+ return true;
+ return super.isResultProperty(propertyName);
+ }
+
+}
diff --git a/plugins/org.eclipse.jst.j2ee/plugin.xml b/plugins/org.eclipse.jst.j2ee/plugin.xml
index a00fd5cc0..f4ac87b91 100644
--- a/plugins/org.eclipse.jst.j2ee/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee/plugin.xml
@@ -42,6 +42,8 @@
<import plugin="org.eclipse.jdt.launching"/>
<import plugin="org.eclipse.jface"/>
<import plugin="org.eclipse.jst.common.frameworks"/>
+ <import plugin="org.eclipse.wst.wsdl"/>
+ <import plugin="org.eclipse.wst.ws.parser"/>
</requires>
@@ -492,6 +494,58 @@
id="com.ibm.wtp.server.j2ee.ear3">
</moduleArtifactAdapter>
</extension> -->
+ <extension
+ point="org.eclipse.wst.server.ui.moduleArtifactAdapters">
+ <moduleArtifactAdapter
+ id="com.ibm.wtp.server.j2ee.ear1">
+ <enablement>
+ <with variable="selection">
+ <adapt type="org.eclipse.jst.j2ee.application.Application"/>
+ </with>
+ </enablement>
+ </moduleArtifactAdapter>
+
+ <moduleArtifactAdapter
+ id="com.ibm.wtp.server.j2ee.ear2">
+ <enablement>
+ <with variable="selection">
+ <adapt type="org.eclipse.core.resources.IProject"/>
+ </with>
+ </enablement>
+ </moduleArtifactAdapter>
+
+ <moduleArtifactAdapter
+ id="com.ibm.wtp.server.j2ee.ear3">
+ <enablement>
+ <with variable="selection">
+ <adapt type="org.eclipse.core.resources.IFile"/>
+ </with>
+ </enablement>
+ </moduleArtifactAdapter>
+ </extension>
+
+ <extension point="org.eclipse.core.runtime.adapters">
+ <factory
+ class="org.eclipse.jst.j2ee.internal.deployables.EnterpriseDeployableArtifactAdapterFactory"
+ adaptableType="org.eclipse.core.resources.IProject">
+ <adapter type="org.eclipse.wst.server.core.IModuleArtifact"/>
+ </factory>
+ <factory
+ class="org.eclipse.jst.j2ee.internal.deployables.EnterpriseDeployableArtifactAdapterFactory"
+ adaptableType="org.eclipse.jdt.core.ICompilationUnit">
+ <adapter type="org.eclipse.wst.server.core.IModuleArtifact"/>
+ </factory>
+ <factory
+ class="org.eclipse.jst.j2ee.internal.deployables.EnterpriseDeployableArtifactAdapterFactory"
+ adaptableType="org.eclipse.core.resources.IFile">
+ <adapter type="org.eclipse.wst.server.core.IModuleArtifact"/>
+ </factory>
+
+
+ </extension>
+
+
+
<!-- =============================================================== -->
<!-- Purpose: Define the default deployable project factory -->
<!-- Extension point: com.ibm.etools.server.core.deployableFactories -->

Back to the top