/******************************************************************************* | |
* Copyright (c) 2011 BSI Business Systems Integration AG. | |
* 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: | |
* Daniel Wiehl (BSI Business Systems Integration AG) - initial API and implementation | |
******************************************************************************/ | |
package org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page; | |
import java.beans.PropertyChangeListener; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
import java.util.HashSet; | |
import java.util.LinkedList; | |
import java.util.List; | |
import java.util.Set; | |
import org.eclipse.core.resources.IResource; | |
import org.eclipse.core.runtime.IStatus; | |
import org.eclipse.core.runtime.MultiStatus; | |
import org.eclipse.core.runtime.Status; | |
import org.eclipse.jdt.internal.corext.util.JavaConventionsUtil; | |
import org.eclipse.scout.commons.StringUtility; | |
import org.eclipse.scout.commons.beans.BasicPropertySupport; | |
import org.eclipse.scout.commons.xmlparser.ScoutXmlDocument; | |
import org.eclipse.scout.commons.xmlparser.ScoutXmlDocument.ScoutXmlElement; | |
import org.eclipse.scout.sdk.ui.fields.StyledTextField; | |
import org.eclipse.scout.sdk.ui.wizard.AbstractWorkspaceWizardPage; | |
import org.eclipse.scout.sdk.workspace.IScoutBundle; | |
import org.eclipse.scout.sdk.ws.jaxws.JaxWsConstants; | |
import org.eclipse.scout.sdk.ws.jaxws.JaxWsSdk; | |
import org.eclipse.scout.sdk.ws.jaxws.Texts; | |
import org.eclipse.scout.sdk.ws.jaxws.operation.WsdlStyleEnum; | |
import org.eclipse.scout.sdk.ws.jaxws.resource.ResourceFactory; | |
import org.eclipse.scout.sdk.ws.jaxws.swt.model.SunJaxWsBean; | |
import org.eclipse.scout.sdk.ws.jaxws.util.JaxWsSdkUtility; | |
import org.eclipse.scout.sdk.ws.jaxws.util.JaxWsSdkUtility.SeparatorType; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.events.ModifyEvent; | |
import org.eclipse.swt.events.ModifyListener; | |
import org.eclipse.swt.events.SelectionAdapter; | |
import org.eclipse.swt.events.SelectionEvent; | |
import org.eclipse.swt.layout.FormAttachment; | |
import org.eclipse.swt.layout.FormData; | |
import org.eclipse.swt.layout.FormLayout; | |
import org.eclipse.swt.layout.GridData; | |
import org.eclipse.swt.layout.GridLayout; | |
import org.eclipse.swt.widgets.Button; | |
import org.eclipse.swt.widgets.Composite; | |
import org.eclipse.swt.widgets.Control; | |
import org.eclipse.swt.widgets.Label; | |
@SuppressWarnings("restriction") | |
public class WsPropertiesNewWsdlWizardPage extends AbstractWorkspaceWizardPage { | |
public static final String PROP_WSDL_NAME = "wsdlName"; | |
public static final String PROP_DERIVE_OTHER_NAME = "deriveOtherNames"; | |
public static final String PROP_ALIAS = "alias"; | |
public static final String PROP_URL_PATTERN = "urlPattern"; | |
public static final String PROP_TARGET_NAMESPACE = "targetNamespace"; | |
public static final String PROP_SERVICE_NAME = "serviceName"; | |
public static final String PROP_PORT_NAME = "port"; | |
public static final String PROP_BINDING_NAME = "bindingName"; | |
public static final String PROP_PORT_TYPE_NAME = "portTypeName"; | |
public static final String PROP_SERVICE_OPERATION_NAME = "serviceOperationName"; | |
public static final String PROP_WSDL_STYLE = "wsdlStyle"; | |
private BasicPropertySupport m_propertySupport; | |
private IScoutBundle m_bundle; | |
private String m_jaxWsServletAlias; | |
private StyledTextField m_wsdlNameField; | |
private Button m_deriveOtherNameButton; | |
private StyledTextField m_alias; | |
private StyledTextField m_urlPattern; | |
private StyledTextField m_targetNamespaceField; | |
private StyledTextField m_serviceNameField; | |
private StyledTextField m_portNameField; | |
private StyledTextField m_bindingNameField; | |
private StyledTextField m_portTypeNameField; | |
private StyledTextField m_serviceOperationNameField; | |
private Composite m_wsdlStyleRadioComposite; | |
private List<Button> m_wsdlStyleRadioButtons; | |
private ScoutXmlDocument m_sunJaxWsXml; | |
private Set<String> m_illegalAliasNames; | |
private Set<String> m_illegalUrlPatterns; | |
private boolean m_showOnlyWsdlProperties; | |
public WsPropertiesNewWsdlWizardPage(IScoutBundle bundle) { | |
super(WsPropertiesNewWsdlWizardPage.class.getName()); | |
setTitle(Texts.get("ConfigureWebserviceProperties")); | |
setDescription(Texts.get("ConfigureWebserviceProperties")); | |
m_bundle = bundle; | |
m_propertySupport = new BasicPropertySupport(this); | |
m_sunJaxWsXml = ResourceFactory.getSunJaxWsResource(bundle).loadXml(); | |
m_wsdlStyleRadioButtons = new LinkedList<Button>(); | |
m_jaxWsServletAlias = JaxWsConstants.JAX_WS_ALIAS; | |
loadIllegalValues(); | |
applyDefaults(); | |
} | |
private void applyDefaults() { | |
setDeriveOtherNames(true); | |
setWsdlStyle(WsdlStyleEnum.DocumentLiteralWrapped); | |
} | |
@Override | |
public void postActivate() { | |
if (isShowOnlyWsdlProperties()) { | |
deriveOtherNames(); | |
} | |
} | |
@Override | |
protected void createContent(Composite parent) { | |
m_wsdlNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("WsdlName")); | |
m_wsdlNameField.setText(getWsdlName()); | |
m_wsdlNameField.setReadOnlySuffix("WebService.wsdl"); | |
m_wsdlNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setWsdlNameInternal(m_wsdlNameField.getText()); | |
pingStateChanging(); | |
deriveOtherNames(); | |
} | |
}); | |
m_wsdlNameField.setVisible(!isShowOnlyWsdlProperties()); | |
m_deriveOtherNameButton = new Button(parent, SWT.CHECK); | |
m_deriveOtherNameButton.setSelection(isDeriveOtherNames()); | |
m_deriveOtherNameButton.setText(Texts.get("DeriveOtherNamesFormWsdlFileName")); | |
m_deriveOtherNameButton.setVisible(!isShowOnlyWsdlProperties()); | |
m_deriveOtherNameButton.addSelectionListener(new SelectionAdapter() { | |
@Override | |
public void widgetSelected(SelectionEvent e) { | |
setDeriveOtherNames(m_deriveOtherNameButton.getSelection()); | |
deriveOtherNames(); | |
} | |
}); | |
m_alias = getFieldToolkit().createStyledTextField(parent, Texts.get("Alias")); | |
m_alias.setText(getWsdlName()); | |
m_alias.setVisible(!isShowOnlyWsdlProperties()); | |
m_alias.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setAliasInternal(m_alias.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_urlPattern = getFieldToolkit().createStyledTextField(parent, Texts.get("UrlPattern")); | |
m_urlPattern.setText(getWsdlName()); | |
m_urlPattern.setReadOnlyPrefix(JaxWsSdkUtility.normalizePath(m_jaxWsServletAlias, SeparatorType.BothType)); | |
m_urlPattern.setVisible(!isShowOnlyWsdlProperties()); | |
m_urlPattern.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setUrlPatternInternal(m_urlPattern.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_targetNamespaceField = getFieldToolkit().createStyledTextField(parent, Texts.get("TargetNamespace")); | |
m_targetNamespaceField.setText(getTargetNamespace()); | |
m_targetNamespaceField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setTargetNamespaceInternal(m_targetNamespaceField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_serviceNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("Service")); | |
m_serviceNameField.setText(getServiceName()); | |
m_serviceNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setServiceNameInternal(m_serviceNameField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_portNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("Port")); | |
m_portNameField.setText(getServiceName()); | |
m_portNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setPortNameInternal(m_portNameField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_bindingNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("Binding")); | |
m_bindingNameField.setText(getBinding()); | |
m_bindingNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setBindingNameInternal(m_bindingNameField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_portTypeNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("PortType")); | |
m_portTypeNameField.setText(getPortTypeName()); | |
m_portTypeNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setPortTypeNameInternal(m_portTypeNameField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
m_serviceOperationNameField = getFieldToolkit().createStyledTextField(parent, Texts.get("ServiceOperation")); | |
m_serviceOperationNameField.setText(getPortTypeName()); | |
m_serviceOperationNameField.addModifyListener(new ModifyListener() { | |
@Override | |
public void modifyText(ModifyEvent e) { | |
setServiceOperationNameInternal(m_serviceOperationNameField.getText()); | |
pingStateChanging(); | |
} | |
}); | |
Label wsdlStyleLabel = new Label(parent, SWT.NONE); | |
wsdlStyleLabel.setText(Texts.get("WsdlStyle")); | |
m_wsdlStyleRadioComposite = new Composite(parent, SWT.NONE); | |
m_wsdlStyleRadioComposite.setLayout(new GridLayout(1, true)); | |
for (WsdlStyleEnum wsdlStyleEnum : WsdlStyleEnum.values()) { | |
createWsdlStyleRadioButton(wsdlStyleEnum); | |
} | |
// layout | |
parent.setLayout(new FormLayout()); | |
Control previousWidget = null; | |
if (!isShowOnlyWsdlProperties()) { | |
FormData formData = new FormData(); | |
formData.top = new FormAttachment(0, 0); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_wsdlNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_wsdlNameField, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(40, 5); | |
formData.right = new FormAttachment(100, 0); | |
m_deriveOtherNameButton.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_deriveOtherNameButton, 20, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_alias.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_alias, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_urlPattern.setLayoutData(formData); | |
previousWidget = m_urlPattern; | |
} | |
FormData formData = new FormData(); | |
if (isShowOnlyWsdlProperties()) { | |
formData.top = new FormAttachment(0, 0); | |
} | |
else { | |
formData.top = new FormAttachment(previousWidget, 30, SWT.BOTTOM); | |
} | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_targetNamespaceField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_targetNamespaceField, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_serviceNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_serviceNameField, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_portNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_portNameField, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_bindingNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_bindingNameField, 5, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_portTypeNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_portTypeNameField, 30, SWT.BOTTOM); | |
formData.left = new FormAttachment(0, 0); | |
formData.right = new FormAttachment(100, 0); | |
m_serviceOperationNameField.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(m_serviceOperationNameField, 30, SWT.BOTTOM); | |
formData.right = new FormAttachment(40, 0); | |
wsdlStyleLabel.setLayoutData(formData); | |
formData = new FormData(); | |
formData.top = new FormAttachment(wsdlStyleLabel, -5, SWT.TOP); | |
formData.left = new FormAttachment(40, 5); | |
formData.right = new FormAttachment(100, 0); | |
m_wsdlStyleRadioComposite.setLayoutData(formData); | |
} | |
protected void createWsdlStyleRadioButton(WsdlStyleEnum wsdlStyleEnum) { | |
Button button = new Button(m_wsdlStyleRadioComposite, SWT.RADIO); | |
button.setData("ID", wsdlStyleEnum); | |
button.setText(wsdlStyleEnum.getLabel()); | |
button.setSelection((wsdlStyleEnum == getWsdlStyle())); | |
button.addSelectionListener(new SelectionAdapter() { | |
@Override | |
public void widgetSelected(SelectionEvent e) { | |
try { | |
setStateChanging(true); | |
setWsdlStyle((WsdlStyleEnum) e.widget.getData("ID")); | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
}); | |
// layout | |
button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); | |
m_wsdlStyleRadioButtons.add(button); | |
} | |
@Override | |
protected void validatePage(MultiStatus multiStatus) { | |
if (!isControlCreated()) { | |
return; | |
} | |
// WSDL name | |
if (!isShowOnlyWsdlProperties()) { | |
if (StringUtility.isNullOrEmpty(getWsdlName())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", m_wsdlNameField.getLabelText()))); | |
} | |
IStatus validationStatus = m_bundle.getProject().getWorkspace().validateName(getWsdlName(), IResource.FILE); | |
multiStatus.add(validationStatus); | |
// alias | |
if (StringUtility.isNullOrEmpty(getAlias())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", m_alias.getLabelText()))); | |
} | |
else if (m_illegalAliasNames.contains(getAlias())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XWithYDoesAlreadyExist", m_alias.getLabelText(), getAlias()))); | |
} | |
else { | |
IStatus status = m_bundle.getProject().getWorkspace().validateName(getAlias(), IResource.FILE); | |
if (status.isOK() == false) { | |
multiStatus.add(status); | |
} | |
} | |
// URL pattern | |
if (StringUtility.isNullOrEmpty(getUrlPattern()) || getUrlPattern().equals(m_jaxWsServletAlias)) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", m_urlPattern.getLabelText()))); | |
} | |
else if (!getUrlPattern().startsWith(m_jaxWsServletAlias)) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XshouldStartWithY", m_urlPattern.getLabelText(), m_jaxWsServletAlias))); | |
} | |
else if (!getUrlPattern().matches(".*[\\w\\-]+.*")) { // check for illegal characters | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("InvalidUrlX", getUrlPattern()))); | |
} | |
else if (m_illegalUrlPatterns.contains(getUrlPattern())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XWithYDoesAlreadyExist", m_urlPattern.getLabelText(), getUrlPattern()))); | |
} | |
} | |
// targetName | |
validateTargetNamespace(multiStatus); | |
// service name | |
validateJavaField(multiStatus, m_serviceNameField.getLabelText(), getServiceName()); | |
// port name | |
validateJavaField(multiStatus, m_portNameField.getLabelText(), getPortName()); | |
// binding | |
validateJavaField(multiStatus, m_bindingNameField.getLabelText(), getBinding()); | |
// port type | |
validateJavaField(multiStatus, m_portTypeNameField.getLabelText(), getPortTypeName()); | |
// service operation name | |
if (StringUtility.isNullOrEmpty(getServiceOperationName())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", m_serviceOperationNameField.getLabelText()))); | |
} | |
else { | |
IStatus validationStatus = JavaConventionsUtil.validateMethodName(getServiceOperationName(), m_bundle.getJavaProject()); | |
multiStatus.add(validationStatus); | |
} | |
} | |
public void setWsdlName(String wsdlName) { | |
try { | |
setStateChanging(true); | |
setWsdlNameInternal(wsdlName); | |
if (isControlCreated()) { | |
m_wsdlNameField.setText(wsdlName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setWsdlNameInternal(String wsdlName) { | |
m_propertySupport.setPropertyString(PROP_WSDL_NAME, wsdlName); | |
} | |
public String getWsdlName() { | |
return m_propertySupport.getPropertyString(PROP_WSDL_NAME); | |
} | |
public void setDeriveOtherNames(boolean deriveOtherNames) { | |
try { | |
setStateChanging(true); | |
setDeriveOtherNamesInternal(deriveOtherNames); | |
if (isControlCreated()) { | |
m_deriveOtherNameButton.setSelection(deriveOtherNames); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setDeriveOtherNamesInternal(boolean deriveOtherNames) { | |
m_propertySupport.setPropertyBool(PROP_DERIVE_OTHER_NAME, deriveOtherNames); | |
} | |
public boolean isDeriveOtherNames() { | |
return m_propertySupport.getPropertyBool(PROP_DERIVE_OTHER_NAME); | |
} | |
public void setAlias(String alias) { | |
try { | |
setStateChanging(true); | |
setAliasInternal(alias); | |
if (isControlCreated()) { | |
m_alias.setText(alias); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setAliasInternal(String alias) { | |
m_propertySupport.setPropertyString(PROP_ALIAS, alias); | |
} | |
public String getAlias() { | |
return m_propertySupport.getPropertyString(PROP_ALIAS); | |
} | |
public void setUrlPattern(String urlPattern) { | |
try { | |
setStateChanging(true); | |
setUrlPatternInternal(urlPattern); | |
if (isControlCreated()) { | |
m_urlPattern.setText(urlPattern); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setUrlPatternInternal(String urlPattern) { | |
m_propertySupport.setPropertyString(PROP_URL_PATTERN, urlPattern); | |
} | |
public String getUrlPattern() { | |
return m_propertySupport.getPropertyString(PROP_URL_PATTERN); | |
} | |
public void setJaxWsServletAlias(String jaxWsServletAlias) { | |
m_jaxWsServletAlias = jaxWsServletAlias; | |
if (isControlCreated()) { | |
m_urlPattern.setReadOnlyPrefix(JaxWsSdkUtility.normalizePath(m_jaxWsServletAlias, SeparatorType.BothType)); | |
} | |
} | |
public void setTargetNamespace(String targetNamespace) { | |
try { | |
setStateChanging(true); | |
setTargetNamespaceInternal(targetNamespace); | |
if (isControlCreated()) { | |
m_targetNamespaceField.setText(targetNamespace); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setTargetNamespaceInternal(String targetNamespace) { | |
m_propertySupport.setPropertyString(PROP_TARGET_NAMESPACE, targetNamespace); | |
} | |
public String getTargetNamespace() { | |
return m_propertySupport.getPropertyString(PROP_TARGET_NAMESPACE); | |
} | |
public void setBindingName(String bindingName) { | |
try { | |
setStateChanging(true); | |
setBindingNameInternal(bindingName); | |
if (isControlCreated()) { | |
m_bindingNameField.setText(bindingName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setBindingNameInternal(String bindingName) { | |
m_propertySupport.setPropertyString(PROP_BINDING_NAME, bindingName); | |
} | |
public String getBinding() { | |
return m_propertySupport.getPropertyString(PROP_BINDING_NAME); | |
} | |
public void setServiceName(String serviceName) { | |
try { | |
setStateChanging(true); | |
setServiceNameInternal(serviceName); | |
if (isControlCreated()) { | |
m_serviceNameField.setText(serviceName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setServiceNameInternal(String serviceName) { | |
m_propertySupport.setPropertyString(PROP_SERVICE_NAME, serviceName); | |
} | |
public String getServiceName() { | |
return m_propertySupport.getPropertyString(PROP_SERVICE_NAME); | |
} | |
public void setPortTypeName(String portTypeName) { | |
try { | |
setStateChanging(true); | |
setPortTypeNameInternal(portTypeName); | |
if (isControlCreated()) { | |
m_portTypeNameField.setText(portTypeName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setPortTypeNameInternal(String portTypeName) { | |
m_propertySupport.setPropertyString(PROP_PORT_TYPE_NAME, portTypeName); | |
} | |
public String getPortTypeName() { | |
return m_propertySupport.getPropertyString(PROP_PORT_TYPE_NAME); | |
} | |
public void setPortName(String portName) { | |
try { | |
setStateChanging(true); | |
setPortNameInternal(portName); | |
if (isControlCreated()) { | |
m_portNameField.setText(portName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setPortNameInternal(String portName) { | |
m_propertySupport.setPropertyString(PROP_PORT_NAME, portName); | |
} | |
public String getPortName() { | |
return m_propertySupport.getPropertyString(PROP_PORT_NAME); | |
} | |
public void setServiceOperationName(String serviceOperationName) { | |
try { | |
setStateChanging(true); | |
setServiceOperationNameInternal(serviceOperationName); | |
if (isControlCreated()) { | |
m_serviceOperationNameField.setText(serviceOperationName); | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setServiceOperationNameInternal(String serviceOperationName) { | |
m_propertySupport.setPropertyString(PROP_SERVICE_OPERATION_NAME, serviceOperationName); | |
} | |
public String getServiceOperationName() { | |
return m_propertySupport.getPropertyString(PROP_SERVICE_OPERATION_NAME); | |
} | |
public void setWsdlStyle(WsdlStyleEnum wsdlStyleEnum) { | |
try { | |
setStateChanging(true); | |
setWsdlStyleInternal(wsdlStyleEnum); | |
if (isControlCreated()) { | |
for (Button radioButton : m_wsdlStyleRadioButtons) { | |
radioButton.setSelection(wsdlStyleEnum == (WsdlStyleEnum) radioButton.getData("ID")); | |
} | |
} | |
} | |
finally { | |
setStateChanging(false); | |
} | |
} | |
private void setWsdlStyleInternal(WsdlStyleEnum wsdlStyleEnum) { | |
m_propertySupport.setProperty(PROP_WSDL_STYLE, wsdlStyleEnum); | |
} | |
public WsdlStyleEnum getWsdlStyle() { | |
return (WsdlStyleEnum) m_propertySupport.getProperty(PROP_WSDL_STYLE); | |
} | |
@Override | |
public void addPropertyChangeListener(PropertyChangeListener listener) { | |
m_propertySupport.addPropertyChangeListener(listener); | |
} | |
@Override | |
public void removePropertyChangeListener(PropertyChangeListener listener) { | |
m_propertySupport.removePropertyChangeListener(listener); | |
} | |
private void validateTargetNamespace(MultiStatus multiStatus) { | |
if (StringUtility.isNullOrEmpty(m_targetNamespaceField.getText())) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", m_targetNamespaceField.getLabelText()))); | |
} | |
else { | |
try { | |
new URL(m_targetNamespaceField.getText()); | |
} | |
catch (MalformedURLException e) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("TargetNamespaceMustBeValudUrl"))); | |
} | |
if (!m_targetNamespaceField.getText().endsWith("/")) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, "Target Namespace must end with a slash")); | |
} | |
} | |
} | |
private void validateJavaField(MultiStatus multiStatus, String label, String text) { | |
if (StringUtility.isNullOrEmpty(text)) { | |
multiStatus.add(new Status(IStatus.ERROR, JaxWsSdk.PLUGIN_ID, Texts.get("XMustNotBeEmpty", label))); | |
return; | |
} | |
IStatus validationStatus = m_bundle.getProject().getWorkspace().validateName(text, IResource.FILE); | |
multiStatus.add(validationStatus); | |
validationStatus = JavaConventionsUtil.validateJavaTypeName(text, m_bundle.getJavaProject()); | |
multiStatus.add(validationStatus); | |
if (Character.isLowerCase(text.charAt(0))) { | |
multiStatus.add(new Status(IStatus.WARNING, JaxWsSdk.PLUGIN_ID, Texts.get("UpperCaseHint"))); | |
} | |
} | |
private void deriveOtherNames() { | |
if (!isDeriveOtherNames()) { | |
return; | |
} | |
String serviceName = getWsdlName().substring(0, getWsdlName().length() - ".wsdl".length()); | |
setTargetNamespace(JaxWsSdkUtility.getRecommendedTargetNamespace(m_bundle, serviceName)); | |
setServiceName(serviceName); | |
setPortName(serviceName + "Port"); | |
setBindingName(serviceName + "PortSoapBinding"); | |
setPortTypeName(serviceName + "PortType"); | |
setAlias(serviceName); | |
setUrlPattern(serviceName); | |
setServiceOperationName(JaxWsSdkUtility.toStartWithLowerCase(serviceName.substring(0, serviceName.length() - "WebService".length()))); | |
} | |
private void loadIllegalValues() { | |
Set<String> illegalAliases = new HashSet<String>(); | |
Set<String> illegalUrlPatterns = new HashSet<String>(); | |
if (m_sunJaxWsXml != null) { | |
for (ScoutXmlElement xmlSunJaxWs : m_sunJaxWsXml.getRoot().getChildren(StringUtility.join(":", m_sunJaxWsXml.getRoot().getNamePrefix(), SunJaxWsBean.XML_ENDPOINT))) { | |
SunJaxWsBean sunJaxWsBean = new SunJaxWsBean(xmlSunJaxWs); | |
illegalAliases.add(sunJaxWsBean.getAlias()); | |
illegalUrlPatterns.add(sunJaxWsBean.getUrlPattern()); | |
} | |
} | |
m_illegalAliasNames = illegalAliases; | |
m_illegalUrlPatterns = illegalUrlPatterns; | |
} | |
public boolean isShowOnlyWsdlProperties() { | |
return m_showOnlyWsdlProperties; | |
} | |
public void setShowOnlyWsdlProperties(boolean showOnlyWsdlProperties) { | |
m_showOnlyWsdlProperties = showOnlyWsdlProperties; | |
} | |
} |