/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
/**
*
*/
package org.ebayopensource.turmeric.eclipse.ui.wizards.pages;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import javax.wsdl.Definition;
import javax.wsdl.Service;
import javax.wsdl.WSDLException;
import org.apache.commons.lang.StringUtils;
import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants;
import org.ebayopensource.turmeric.eclipse.exception.validation.ValidationInterruptedException;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOARepositorySystem;
import org.ebayopensource.turmeric.eclipse.resources.util.SOAServiceUtil;
import org.ebayopensource.turmeric.eclipse.soatools.configtool.ConfigTool;
import org.ebayopensource.turmeric.eclipse.ui.UIActivator;
import org.ebayopensource.turmeric.eclipse.ui.resources.SOAMessages;
import org.ebayopensource.turmeric.eclipse.utils.io.IOUtil;
import org.ebayopensource.turmeric.eclipse.utils.lang.StringUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.EclipseMessageUtils;
import org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil;
import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil;
import org.ebayopensource.turmeric.eclipse.utils.wsdl.WSDLUtil;
import org.ebayopensource.turmeric.eclipse.validator.core.ISOAValidator;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.RegExConstants;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
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.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
/**
* The Class AbstractNewServiceFromWSDLWizardPage.
*
* @author yayu
*/
public abstract class AbstractNewServiceFromWSDLWizardPage extends
AbstractNewServiceWizardPage {
private Text wsdlURLText;
private Button importWSDLFileButton;
/** The ns2pkg viewer. */
protected TableViewer ns2pkgViewer;
private boolean hasWSDLError;
private Button overrideNamespaceBtn;
private Text namespaceText;
/** The public service name text. */
protected Text publicServiceNameText;
/** The wsdl. */
protected Definition wsdl;
/** The service location. */
protected String serviceLocation = null;
/**
* Instantiates a new abstract new service from wsdl wizard page.
*
* @param pageName the page name
* @param title the title
* @param description the description
*/
public AbstractNewServiceFromWSDLWizardPage(String pageName, String title,
String description) {
super(pageName, title, description);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#dialogChanged()
*/
@Override
protected boolean dialogChanged() {
return dialogChanged(false);
}
/**
* Checks for wsdl error.
*
* @return true, if successful
*/
protected boolean hasWsdlError() {
return hasWSDLError;
}
/**
* Dialog changed.
*
* @param validateWsdl the validate wsdl
* @return true, if successful
*/
protected boolean dialogChanged(boolean validateWsdl) {
if (wsdlURLText != null) {
String wsdlUrl = getWSDLURL();
if (StringUtils.isBlank(wsdlUrl)) {
updateStatus(wsdlURLText, "WSDL URL must be specified.");
hasWSDLError = false;
return false;
}
if (IOUtil.validateURL(wsdlUrl) == false) {
updateStatus(wsdlURLText, "Invalid WSDL Url.");
hasWSDLError = false;
return false;
}
}
boolean result = super.dialogChanged();
if (result == false)
return result;
if (publicServiceNameText != null
&& (validateName(
publicServiceNameText,
getPublicServiceName(),
RegExConstants.SERVICE_NAME_EXP,
"The service name ["
+ getPublicServiceName()
+ "] in WSDL file is not valid against the pattern \""
+ RegExConstants.SERVICE_NAME_EXP
+ "\". Please correct service name in WSDL and run this wizard again.") == false)) {
return false;
}
if (this.namespaceText != null
&& StringUtils.isBlank(getTargetNamespace())) {
updateStatus(namespaceText, SOAMessages.NMSPACE_ERR);
return false;
}
if ((hasWSDLError == true || validateWsdl == true)
&& wsdlURLText != null) {
hasWSDLError = false;
final ISOARepositorySystem activeRepositorySystem = GlobalRepositorySystem
.instanceOf().getActiveRepositorySystem();
ISOAValidator validator = activeRepositorySystem.getWSDLValidator();
IStatus validationModel = null;
try {
String wsdlurltext = getWSDLURL();
Object wsdl = null;
if (wsdlurltext.startsWith("http:") || wsdlurltext.startsWith("https")) {
try {
wsdl = new URL(wsdlurltext);
} catch (MalformedURLException e) {
wsdl = new Path(wsdlurltext);
}
} else {
wsdl = wsdlurltext;
}
validationModel = validator.validate(wsdl);
} catch (ValidationInterruptedException e) {
processException(e);
}
if (validationModel.isOK() == false) {
updatePageStatus(wsdlURLText, validationModel);
hasWSDLError = true;
return false;
}
}
updateStatus(null);
return true;
}
/**
* Adds the service impl type combo box.
*
* @param parent the parent
*/
protected void addServiceImplTypeComboBox(final Composite parent) {
final CCombo combo = super.createCCombo(parent, "Service Implementation Type",
false,new String[]{"Service Impl", "Service Impl Factory"}, "the implementation type of the new service");
combo.select(0);
}
/**
* Adds the wsdl.
*
* @param composite the composite
* @return the text
*/
protected Text addWSDL(final Composite composite) {
final Label label = new Label(composite, SWT.NULL);
label.setText("&WSDL: ");
wsdlURLText = new Text(composite, SWT.BORDER | SWT.SINGLE);
wsdlURLText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
false, 1, 1));
final FocusListener focusListener = new FocusAdapter() {
@Override
public void focusLost(final FocusEvent e) {
final Runnable runnable = new Runnable() {
@Override
public void run() {
if (StringUtils.isNotBlank(getWSDLURL())
&& setServiceNameFromWSDL(getWSDLURL())) {
dialogChanged(true);
} else {
dialogChanged(false);
}
}
};
BusyIndicator.showWhile(null, runnable);
}
};
wsdlURLText.addFocusListener(focusListener);
wsdlURLText.setText(SOAProjectConstants.EMPTY_STRING);
UIUtil.decorateControl(this, wsdlURLText,
"either browse to or enter the service WSDL location");
wsdlURLText.setEditable(true);
importWSDLFileButton = new Button(composite, SWT.PUSH);
importWSDLFileButton.setAlignment(SWT.RIGHT);
importWSDLFileButton.setText("B&rowse...");
final SelectionListener selectionListener = new SelectionListener() {
@Override
public void widgetDefaultSelected(final SelectionEvent e) {
widgetSelected(e);
}
@Override
public void widgetSelected(final SelectionEvent e) {
final String fileName = UIUtil.fileDialog(
"Select WSDL Interface File", "*.wsdl");
if (StringUtils.isBlank(fileName))
return;
final Runnable runnable = new Runnable() {
@Override
public void run() {
if (setServiceNameFromWSDL(String.valueOf(WSDLUtil
.toURL(new File(fileName)))) == true) {
dialogChanged(true);
}
}
};
BusyIndicator.showWhile(null, runnable);
}
};
importWSDLFileButton.addSelectionListener(selectionListener);
importWSDLFileButton.setLayoutData(new GridData(SWT.BEGINNING,
SWT.CENTER, false, false, 2, 1));
return wsdlURLText;
}
/**
* Adds the target namespace.
*
* @param parent the parent
* @param defaultNamespace the default namespace
* @param allowOverride the allow override
* @return the composite
*/
protected Composite addTargetNamespace(final Composite parent,
final String defaultNamespace, final boolean allowOverride) {
final String namespace = StringUtils.isNotBlank(defaultNamespace)
? defaultNamespace : "";
final ModifyListener nsModifyListener = new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
targetNamespaceModified(getTargetNamespace());
dialogChanged();
}
};
namespaceText = super.createLabelTextField(parent,
"&Target Namespace:",
namespace, nsModifyListener,
!allowOverride, false, "the target namespace of the service");
if (allowOverride == true) {
overrideNamespaceBtn = createOverrideButton(parent,
namespaceText, null);
}
return parent;
}
/**
* Target namespace modified.
*
* @param newNamespace the new namespace
*/
protected void targetNamespaceModified(String newNamespace) {
if (StringUtils.isNotBlank(newNamespace)) {
final String defaultPkgName = ConfigTool
.getDefaultPackageNameFromNamespace(newNamespace);
if (StringUtils.isNotBlank(defaultPkgName)) {
if (overrideServicePackageButton != null
&& overrideServicePackageButton.getSelection() == false) {
setServicePackage(getDefaultServicePackageName(defaultPkgName));
}
if (overrideServiceImplementationButton != null
&& overrideServiceImplementationButton.getSelection() == false) {
setServiceImplementation(getDefaultServiceImplName(defaultPkgName));
}
}
}
}
/**
* Populate service namespace.
*
* @return the string
*/
public String populateServiceNamespace() {
return getOrganizationProvider()
.generateServiceNamespace(getServiceDomain(), getDomainClassifier(), getServiceVersion());
}
/**
* Adds the wsdl package to namespace.
*
* @param parent the parent
*/
protected void addWSDLPackageToNamespace(final Composite parent) {
ns2pkgViewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL
| SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
final Table table = ns2pkgViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
final GridData gridData = new GridData(GridData.FILL_BOTH);
gridData.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
table.setLayoutData(gridData);
gridData.heightHint =50;
final TableLayout layout = new TableLayout();
layout.addColumnData(new ColumnWeightData(50, 75, true));
layout.addColumnData(new ColumnWeightData(50, 75, true));
table.setLayout(layout);
{// columns
TableColumn column = new TableColumn(table, SWT.LEFT);
column.setText("Namespace");
column.setImage(UIActivator.getImageFromRegistry("element.gif"));
column = new TableColumn(table, SWT.LEFT);
column.setText("Package Name");
column.setImage(UIActivator.getImageFromRegistry("package.gif"));
}
ns2pkgViewer.setContentProvider(new IStructuredContentProvider() {
public Object[] getElements(Object inputElement) {
final Set<NamespaceToPackageModel> result = new LinkedHashSet<NamespaceToPackageModel>();
if (inputElement instanceof Definition) {
Definition wsdl = (Definition) inputElement;
for (final String namespace : WSDLUtil
.getAllTargetNamespaces(wsdl)) {
//we do not need the default namespace to be displayed
if (getOrganizationProvider().shouldShowInNamespaceToPackageViewer(namespace)) {
final String defaultPkgName = ConfigTool
.getTypePackageNameFromNamespace(namespace, WSDLUtil.getServiceNameFromWSDL(wsdl));
result.add(new NamespaceToPackageModel(namespace,
defaultPkgName));
}
}
}
return result.toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput,
Object newInput) {
}
});
ns2pkgViewer.setLabelProvider(new ITableLabelProvider() {
@Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
@Override
public String getColumnText(Object element, int columnIndex) {
if ((element instanceof NamespaceToPackageModel) == false) {
return SOAProjectConstants.EMPTY_STRING;
}
switch (columnIndex) {
case 0: {
return ((NamespaceToPackageModel) element).namespace;
}
case 1:
return ((NamespaceToPackageModel) element).pacakgeName;
}
return SOAProjectConstants.EMPTY_STRING;
}
@Override
public void addListener(ILabelProviderListener listener) {
}
@Override
public void dispose() {
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
}
});
ns2pkgViewer.setColumnProperties(new String[] { PROP_NAME_NAMESPACE,
PROP_NAME_PACKAGE });
ns2pkgViewer.setCellEditors(new CellEditor[] {
new TextCellEditor(table), new TextCellEditor(table) });
ns2pkgViewer.setCellModifier(new ICellModifier() {
@Override
public boolean canModify(Object element, String property) {
return PROP_NAME_PACKAGE.equals(property);
}
@Override
public Object getValue(Object element, String property) {
if ((element instanceof NamespaceToPackageModel) == false) {
return SOAProjectConstants.EMPTY_STRING;
}
if (PROP_NAME_NAMESPACE.equals(property)) {
return ((NamespaceToPackageModel) element).namespace;
} else if (PROP_NAME_PACKAGE.equals(property)) {
return ((NamespaceToPackageModel) element).pacakgeName;
}
return SOAProjectConstants.EMPTY_STRING;
}
@Override
public void modify(Object element, String property, Object value) {
if ((element instanceof TableItem) == false
|| PROP_NAME_PACKAGE.equals(property) == false)
return;
final NamespaceToPackageModel model = (NamespaceToPackageModel) ((TableItem) element)
.getData();
final String newValue = String.valueOf(value).trim();
if (model.pacakgeName.equals(newValue) == false) {
final IStatus status = validatePackageName(newValue);
((TableItem) element).setText(1, newValue);
model.pacakgeName = newValue;
updatePageStatus(ns2pkgViewer.getTable(), status);
if (status.isOK()) {
((TableItem) element).setImage(1, null);
dialogChanged(true);
} else {
((TableItem) element).setImage(1, UIActivator
.getImageFromRegistry("error.gif"));
}
}
}
});
}
private IStatus validatePackageName(final String newPkgValue) {
if (StringUtils.isBlank(newPkgValue)) {
return EclipseMessageUtils
.createErrorStatus("Package name can not be either null or empty string");
}
if (getNamespaceToPackageMappings().containsValue(newPkgValue)) {
return EclipseMessageUtils
.createErrorStatus("Package name must be unique->"
+ newPkgValue);
}
return JDTUtil.validatePacakgeName(newPkgValue);
}
/**
* Gets the namespace to package mappings.
*
* @return the namespace to package mappings
*/
public Map<String, String> getNamespaceToPackageMappings() {
final Map<String, String> result = new LinkedHashMap<String, String>();
for (final TableItem item : ns2pkgViewer.getTable().getItems()) {
NamespaceToPackageModel model = (NamespaceToPackageModel) item
.getData();
result.put(model.namespace.trim(), model.pacakgeName.trim());
}
return result;
}
private static class NamespaceToPackageModel {
private String namespace;
private String pacakgeName = SOAProjectConstants.EMPTY_STRING;
public NamespaceToPackageModel(String namespace, String pacakgeName) {
super();
this.namespace = namespace;
this.pacakgeName = pacakgeName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((namespace == null) ? 0 : namespace.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final NamespaceToPackageModel other = (NamespaceToPackageModel) obj;
if (namespace == null) {
if (other.namespace != null)
return false;
} else if (!namespace.equals(other.namespace))
return false;
return true;
}
}
private static final String PROP_NAME_NAMESPACE = "namespace";
private static final String PROP_NAME_PACKAGE = "package";
private boolean setServiceNameFromWSDL(final String wsdlURL) {
final Definition oldWsdl = this.wsdl;
try {
final Definition definition = WSDLUtil.readWSDL(wsdlURL);
this.wsdl = definition;
final Collection<?> services = definition.getServices().values();
if (services.size() > 0) { // we believe that the wsdl should
// contain only one service
final Service service = (Service) services.toArray()[0];
setServiceName(service.getQName().getLocalPart());
} else
setServiceName(SOAProjectConstants.EMPTY_STRING);
if (!StringUtils.equals(wsdlURL, getWSDLURL()))
wsdlURLText.setText(wsdlURL);
this.ns2pkgViewer.setInput(definition);
wsdlChanged(definition);
serviceLocation = WSDLUtil.getServiceLocationFromWSDL(definition);
} catch (final WSDLException wsdlE) {
this.wsdl = oldWsdl;
getContainer().showPage(this);
resetServiceName();
updateStatus(this.wsdlURLText, StringUtil.toString(
"Problem acquiring WSDL from URL: ", wsdlURL, ". ", wsdlE
.getLocalizedMessage()));
wsdlURLText.setText(wsdlURL);
return false;
}
return true;
}
/**
* Gets the current wsdl definition.
*
* @return the current wsdl definition
*/
protected Definition getCurrentWSDLDefinition() {
return this.wsdl;
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.AbstractSOAProjectWizardPage#domainClassifierChanged()
*/
@Override
protected void domainClassifierChanged() {
final Text adminText = getResourceNameText();
if (adminText != null && overrideAdminNameButton != null
&& overrideAdminNameButton.getSelection() == false) {
getResourceNameText().setText(computeServiceName());
}
if (namespaceText != null && overrideNamespaceBtn != null
&& overrideNamespaceBtn.getSelection() == false) {
namespaceText.setText(populateServiceNamespace());
}
if (typeNamespaceText != null &&
overrideTypeNSButton.getSelection() == false) {
typeNamespaceText.setText(getTargetNamespace());
}
dialogChanged();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#setServiceName(java.lang.String)
*/
@Override
protected void setServiceName(String serviceName) {
if (serviceName != null) {
if (publicServiceNameText != null) {
publicServiceNameText.setText(serviceName);
super.setServiceName(computeServiceName());
} else {
super.setServiceName(serviceName);
}
}
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#addServiceVersion(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Text addServiceVersion(Composite composite) {
final Text text = super.addServiceVersion(composite);
text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
serviceVersionChanged(text.getText());
}
});
return text;
}
/**
* Service version changed.
*
* @param newServiceVersion the new service version
*/
protected void serviceVersionChanged(String newServiceVersion) {
if (publicServiceNameText != null) {
//we only set the service name if we use public service name text field
if ((getResourceNameText() == adminNameText
&& overrideAdminNameButton != null
&& overrideAdminNameButton.getSelection() == true) == false) {
//admin name is available and user choose NOT to override
AbstractNewServiceFromWSDLWizardPage
.super.setServiceName(computeServiceName());
}
}
if (namespaceText!= null && overrideNamespaceBtn != null
&& overrideNamespaceBtn.getSelection() == false) {
namespaceText.setText(populateServiceNamespace());
if (typeNamespaceText != null && overrideTypeNSButton != null
&& overrideTypeNSButton.getSelection() == false) {
typeNamespaceText.setText(namespaceText.getText());
}
}
}
/**
* Adds the service name.
*
* @param composite the composite
* @param editable the editable
* @return the text
*/
protected Text addServiceName(final Composite composite, boolean editable) {
final ModifyListener svcNameListener = new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
if (publicServiceNameText != null) {
if (servicePackageText != null && overrideServicePackageButton != null) {
if (overrideServicePackageButton.getSelection() == false) {
String pkgName = getDefaultServicePackageName();
if (pkgName != null && pkgName.startsWith(".") == false) {
servicePackageText.setText(pkgName);
}
}
}
if (serviceImplementationText != null && overrideServiceImplementationButton != null) {
if (!overrideServiceImplementationButton.getSelection())
serviceImplementationText
.setText(getDefaultServiceImplName());
}
/*final ControlDecoration dec =
getErrorDecorations().get(serviceImplementationText);
if ((serviceImplementationText.isEnabled()
&& serviceImplementationText.getEditable()
&& serviceImplementationText.isFocusControl())
|| (dec != null && StringUtils.isNotBlank(dec.getDescriptionText())))
dialogChanged();*/
}
if (getResourceNameText() == adminNameText &&
overrideAdminNameButton != null
&& overrideAdminNameButton.getSelection() == true)
//adminname exist and has been overriden
return;
AbstractNewServiceFromWSDLWizardPage
.super.setServiceName(computeServiceName());
}
};
publicServiceNameText = createLabelTextField(composite, "&Service Name:",
"", svcNameListener, "the name of the new service in the WSDL file");
publicServiceNameText.setEditable(editable);
publicServiceNameText.addModifyListener(modifyListener);
return publicServiceNameText;
}
/**
* {@inheritDoc}
*/
@Override
public String getPublicServiceName() {
String publicSvcName = getTextValue(publicServiceNameText);
return publicSvcName;
}
/**
* Compute service name.
*
* @return the string
*/
public String computeServiceName() {
final String serviceName = getPublicServiceName();
if (StringUtils.isEmpty(serviceName))
return DEFAULT_TEXT_VALUE;
String domainClassifier = getDomainClassifier();
if (StringUtils.isBlank(domainClassifier)) {
domainClassifier = getOrganizationProvider().getNamespacePartFromTargetNamespace(getTargetNamespace());
}
return SOAServiceUtil.computeAdminName(serviceName, domainClassifier, getServiceVersion());
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#getDefaultResourceName()
*/
@Override
public String getDefaultResourceName() {
final String defaultName = computeServiceName();
if (StringUtils.isNotBlank(defaultName))
return defaultName;
else
return super.getDefaultResourceName();
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#getDefaultServicePackageNamePrefix()
*/
@Override
protected String getDefaultServicePackageNamePrefix() {
return SOAServiceUtil.generatePackageNamePrefix(getTargetNamespace());
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#getDefaultIMplPackageNamePrefix()
*/
@Override
protected String getDefaultIMplPackageNamePrefix() {
return SOAServiceUtil.generatePackageNamePrefix(getTargetNamespace());
}
/**
* Gets the target namespace.
*
* @return the target namespace
*/
public String getTargetNamespace() {
String result = getTextValue(namespaceText);
if (StringUtils.isBlank(result) && wsdl != null) {
try {
return WSDLUtil.getTargetNamespace(wsdl);
} catch (WSDLException e) {
SOALogger.getLogger().error(e);
}
}
return result;
}
/**
* Gets the target namespace text.
*
* @return the target namespace text
*/
public Text getTargetNamespaceText() {
return namespaceText;
}
/**
* Sets the target namespace.
*
* @param namespace the new target namespace
*/
public void setTargetNamespace(String namespace) {
if (StringUtils.isNotBlank(namespace) && this.namespaceText != null)
this.namespaceText.setText(namespace);
}
/**
* Gets the wSDLURL.
*
* @return the wSDLURL
*/
public String getWSDLURL() {
if (wsdlURLText == null || StringUtils.isBlank(wsdlURLText.getText()))
return "";
return getTextValue(wsdlURLText);
}
/* (non-Javadoc)
* @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceWizardPage#getDefaultValue(org.eclipse.swt.widgets.Text)
*/
@Override
public String getDefaultValue(Text text) {
if (text == this.namespaceText) {
return populateServiceNamespace();
} else {
return super.getDefaultValue(text);
}
}
/**
* Wsdl changed.
*
* @param wsdl the wsdl
*/
public abstract void wsdlChanged(final Definition wsdl);
/**
* get service location specified in wsdl.
* @return
*/
public String getServiceLocation() {
return serviceLocation;
}
/**
* set service location of selected wsdl
* @param serviceLocation
*/
public void setServiceLocation(String serviceLocation) {
this.serviceLocation = serviceLocation;
}
}