diff options
Diffstat (limited to 'bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws')
5 files changed, 178 insertions, 21 deletions
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java new file mode 100644 index 000000000..29afb32d2 --- /dev/null +++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java @@ -0,0 +1,158 @@ +/******************************************************************************* + * Copyright (c) 2006 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.ws.internal.axis.creation.ui.task; + + +import java.io.FileInputStream; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.wsdl.Binding; +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.Service; + +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.jst.ws.internal.axis.consumption.core.AxisConsumptionCoreMessages; +import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter; +import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages; +import org.eclipse.jst.ws.internal.axis.consumption.ui.util.PlatformUtils; +import org.eclipse.jst.ws.internal.axis.consumption.ui.util.WSDLUtils; +import org.eclipse.jst.ws.internal.plugin.WebServicePlugin; +import org.eclipse.osgi.util.NLS; +import org.eclipse.wst.command.internal.env.common.FileResourceUtils; +import org.eclipse.wst.command.internal.env.core.common.StatusUtils; +import org.eclipse.wst.command.internal.env.core.context.ResourceContext; +import org.eclipse.wst.common.environment.IEnvironment; +import org.eclipse.wst.common.environment.IStatusHandler; +import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation; +import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser; + +public class BackupSkelImplCommand extends AbstractDataModelOperation +{ + private final String IMPL = "Impl"; //$NON-NLS-1$ + private final String DOT = "."; //$NON-NLS-1$ + private final String BAK_EXT = "bak"; //$NON-NLS-1$ + private final String JAVA = "java"; //$NON-NLS-1$ + private WebServicesParser webServicesParser; + private JavaWSDLParameter javaWSDLParam; + + public BackupSkelImplCommand( ) { + } + + + public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) + { + IEnvironment environment = getEnvironment(); + if (javaWSDLParam == null) + { + IStatus status = StatusUtils.errorStatus(AxisConsumptionCoreMessages.MSG_ERROR_JAVA_WSDL_PARAM_NOT_SET); + environment.getStatusHandler().reportError(status); + return status; + } + + IStatus status = Status.OK_STATUS; + // Read WSDL + Definition definition = null; + String wsdlURL = javaWSDLParam.getInputWsdlLocation(); + try + { + URL url = new URL(wsdlURL); + definition = webServicesParser.getWSDLDefinition(url.toString()); + } + catch(MalformedURLException e) + { + wsdlURL = PlatformUtils.getFileURLFromPath(new Path(wsdlURL)); + definition = webServicesParser.getWSDLDefinition(wsdlURL); + } + + // Compute the qualified name of the Java bean skeleton + Service service = null; + Port port = null; + if (definition != null) { + StringBuffer beanName = new StringBuffer(); + String beanPackageName = WSDLUtils.getPackageName(definition); + javaWSDLParam.setBeanPackage(beanPackageName); + beanName.append(beanPackageName); + beanName.append(DOT); + + service = (Service) definition.getServices().values().iterator().next(); + port = (Port) service.getPorts().values().iterator().next(); + Binding binding = port.getBinding(); + beanName.append(binding.getQName().getLocalPart()); + beanName.append(IMPL); + String beanNameString = beanName.toString(); + javaWSDLParam.setBeanName(beanNameString); + + // Check if the skeleton implementation bean already exist or not. + // If it does, then back it up as xxx.java.bak before proceeding to call the Axis emitter + + FileInputStream finStream = null; + + ResourceContext context = WebServicePlugin.getInstance().getResourceContext(); + IStatusHandler statusHandler = environment.getStatusHandler(); + + String beanNamePathString = beanNameString.replace('.',IPath.SEPARATOR); + IPath skelImplPath = new Path (javaWSDLParam.getJavaOutput()).append(new Path (beanNamePathString)).addFileExtension(JAVA); + if (skelImplPath.toFile().exists()) { + IPath targetPath = skelImplPath.addFileExtension(BAK_EXT); + try { + finStream = new FileInputStream(skelImplPath.toString()); + if (finStream != null) { + FileResourceUtils.createFileAtLocation(context, targetPath.makeAbsolute(), finStream, + monitor, statusHandler); + finStream.close(); + } + } catch (Exception e) { + status = StatusUtils.errorStatus(NLS.bind(AxisConsumptionCoreMessages.MSG_ERROR_MOVE_RESOURCE,new String[]{e.getLocalizedMessage()}), e); + environment.getStatusHandler().reportError(status); + } finally { + try { + if (finStream != null) { + finStream.close(); + } + } catch (IOException e) { + } + } + } + } + else { + status = StatusUtils.errorStatus( NLS.bind(AxisConsumptionUIMessages.MSG_ERROR_WSDL_NO_DEFINITION, new String[] {wsdlURL})); + environment.getStatusHandler().reportError(status); + } + + return status; + } + + + /** + * Sets the javaWSDLParam. + * @param javaWSDLParam The javaWSDLParam to set + */ + public void setJavaWSDLParam(JavaWSDLParameter javaWSDLParam) { + this.javaWSDLParam = javaWSDLParam; + } + + /** + * @param webServicesParser The webServicesParser to set. + */ + public void setWebServicesParser(WebServicesParser webServicesParser) { + this.webServicesParser = webServicesParser; + } + + +} diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java index e7c9ddc98..020dafb0e 100644 --- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java +++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java @@ -17,7 +17,6 @@ import java.net.URL; import java.util.Iterator; import java.util.Map; -import javax.wsdl.Binding; import javax.wsdl.Definition; import javax.wsdl.Port; import javax.wsdl.Service; @@ -53,10 +52,9 @@ import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser; public class Skeleton2WSDLCommand extends AbstractDataModelOperation { - private static final String IMPL = "Impl"; //$NON-NLS-1$ + private static final String SERVICE_EXT = "/services/"; //$NON-NLS-1$ private static final String WSDL_EXT = "wsdl"; //$NON-NLS-1$ - private static final String DOT = "."; //$NON-NLS-1$ private final String WSDL_FOLDER = "wsdl"; //$NON-NLS-1$ private WebServicesParser webServicesParser; private JavaWSDLParameter javaWSDLParam; @@ -97,25 +95,15 @@ public class Skeleton2WSDLCommand extends AbstractDataModelOperation Service service = null; Port port = null; if (definition != null) { - StringBuffer beanName = new StringBuffer(); - beanName.append(WSDLUtils.getPackageName(definition)); - beanName.append(DOT); - try{ - service = (Service) definition.getServices().values().iterator().next(); - port = (Port) service.getPorts().values().iterator().next(); - Binding binding = port.getBinding(); - beanName.append(binding.getQName().getLocalPart()); - beanName.append(IMPL); - javaWSDLParam.setBeanName(beanName.toString()); + + // beanName and beanPackageName are now set in BackupSkelImplCommand + + service = (Service) definition.getServices().values().iterator().next(); + port = (Port) service.getPorts().values().iterator().next(); + + javaWSDLParam.setPortTypeName(WSDLUtils.getPortTypeName(definition)); + javaWSDLParam.setServiceName(WSDLUtils.getServiceElementName(definition)); - javaWSDLParam.setPortTypeName(WSDLUtils.getPortTypeName(definition)); - javaWSDLParam.setServiceName( - WSDLUtils.getServiceElementName(definition)); - javaWSDLParam.setBeanPackage(WSDLUtils.getPackageName(definition)); - } - catch(Throwable e){ - e.printStackTrace(); - } } else { IStatus status = StatusUtils.errorStatus( NLS.bind(AxisConsumptionUIMessages.MSG_ERROR_WSDL_NO_DEFINITION, new String[] {wsdlURL})); diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/skeleton/AxisSkeletonDefaultingCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/skeleton/AxisSkeletonDefaultingCommand.java index ed1c61239..bd5cccceb 100644 --- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/skeleton/AxisSkeletonDefaultingCommand.java +++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/skeleton/AxisSkeletonDefaultingCommand.java @@ -35,6 +35,7 @@ public class AxisSkeletonDefaultingCommand extends AbstractDataModelOperation javaWSDLParam.setServerSide(JavaWSDLParameter.SERVER_SIDE_BEAN); javaWSDLParam.setSkeletonDeploy(true); javaWSDLParam.setMetaInfOnly(false); + javaWSDLParam.setInputWsdlLocation(wsdlURI_); return Status.OK_STATUS; } diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java index 6877b5790..83c3d9552 100644 --- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java +++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java @@ -14,6 +14,7 @@ package org.eclipse.jst.ws.internal.axis.creation.ui.wizard.wsdl; import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand; import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsFragment; import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsWidget; +import org.eclipse.jst.ws.internal.axis.creation.ui.task.BackupSkelImplCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.AxisSkeletonDefaultingCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidget; import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidgetDefaultingCommand; @@ -125,6 +126,9 @@ public class WSWSDLAxisType implements CommandWidgetBinding dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "OutputJavaFolder", SkeletonConfigWidget.class); dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "ShowMapping", SkeletonConfigWidget.class); + // BackupSkelImplCommand + dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", BackupSkelImplCommand.class); + // AxisMappingsFragment dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "ShowMapping", AxisMappingsFragment.class); dataRegistry.addMapping(SkeletonConfigWidget.class, "ShowMapping", AxisMappingsFragment.class); diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java index f331d8cba..ac5c83384 100644 --- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java +++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java @@ -31,6 +31,7 @@ import org.eclipse.jst.ws.internal.axis.creation.ui.command.PublishServerCommand import org.eclipse.jst.ws.internal.axis.creation.ui.command.TDAxisInputCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.command.UpdateWEBXMLCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.task.BUCheckAxisDeploymentDescriptors; +import org.eclipse.jst.ws.internal.axis.creation.ui.task.BackupSkelImplCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.task.DefaultsForServerJavaWSDLCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.task.Skeleton2WSDLCommand; import org.eclipse.jst.ws.internal.axis.creation.ui.task.TDCheckAxisDeploymentDescriptors; @@ -118,6 +119,7 @@ public class AxisWebService extends AbstractWebService // commands.add(new SimpleFragment( "AxisMappingsWidget" )); commands.add(new TDCheckAxisDeploymentDescriptors()); commands.add(new CopyAxisJarCommand()); + commands.add(new BackupSkelImplCommand()); commands.add(new WSDL2JavaCommand()); commands.add(new Skeleton2WSDLCommand()); commands.add(new UpdateWEBXMLCommand(getWebServiceInfo())); @@ -296,6 +298,10 @@ public class AxisWebService extends AbstractWebService // CopyAxisJarCommand dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", CopyAxisJarCommand.class, "Project", projectTransformer); + // BackupSkelImplCommand + dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", BackupSkelImplCommand.class); + dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "JavaWSDLParam", BackupSkelImplCommand.class); + // Skeleton2WSDLCommand dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", Skeleton2WSDLCommand.class); dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", Skeleton2WSDLCommand.class, "ServerProject", projectTransformer); |