blob: cf6247bbf0c826f0e00a4370fa5ef69cfd4db750 [file] [log] [blame]
/*******************************************************************************
* 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;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.wsdl.Definition;
import javax.wsdl.PortType;
import javax.xml.namespace.QName;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IType;
import org.eclipse.scout.commons.CompareUtility;
import org.eclipse.scout.commons.StringUtility;
import org.eclipse.scout.sdk.ui.wizard.AbstractWorkspaceWizard;
import org.eclipse.scout.sdk.util.type.TypeUtility;
import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager;
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.BindingFileCreateOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.BuildJaxWsEntryCreateOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.ExternalFileCopyOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.JaxWsServletRegistrationOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.SunJaxWsEntryCreateOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.WsProviderImplNewOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.WsStubGenerationOperation;
import org.eclipse.scout.sdk.ws.jaxws.operation.WsdlCreateOperation;
import org.eclipse.scout.sdk.ws.jaxws.resource.WsdlResource;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.JaxWsServletRegistrationWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WebserviceEnum;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsPropertiesExistingWsdlWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsPropertiesNewWsdlWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsProviderImplClassWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsStubWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsdlLocationWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WsdlSelectionWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.util.GlobalBindingRegistrationHelper;
import org.eclipse.scout.sdk.ws.jaxws.util.GlobalBindingRegistrationHelper.SchemaCandidate;
import org.eclipse.scout.sdk.ws.jaxws.util.JaxWsSdkUtility;
import org.eclipse.scout.sdk.ws.jaxws.util.JaxWsSdkUtility.SeparatorType;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.WsdlArtefact.TypeEnum;
import org.eclipse.scout.sdk.ws.jaxws.util.ServletRegistrationUtility;
import org.eclipse.scout.sdk.ws.jaxws.util.ServletRegistrationUtility.Registration;
import org.eclipse.scout.sdk.ws.jaxws.util.listener.IOperationFinishedListener;
public class WsProviderNewWizard extends AbstractWorkspaceWizard {
private IScoutBundle m_bundle;
private WsdlSelectionWizardPage m_wsdlSelectionWizardPage;
private WsdlLocationWizardPage m_wsdlLocationWizardPage;
private JaxWsServletRegistrationWizardPage m_servletRegistrationWizardPage;
private WsPropertiesNewWsdlWizardPage m_wsPropertiesNewWsdlWizardPage;
private WsPropertiesExistingWsdlWizardPage m_wsPropertiesExistingWsdlWizardPage;
private WsProviderImplClassWizardPage m_wsProviderImplClassWizardPage;
private WsStubWizardPage m_wsStubWizardPage;
private JaxWsServletRegistrationOperation m_servletRegistrationOperation;
private ExternalFileCopyOperation[] m_copyOperations;
private BuildJaxWsEntryCreateOperation m_buildJaxWsEntryCreateOperation;
private SunJaxWsEntryCreateOperation m_sunJaxWsEntryCreateOperation;
private WsdlCreateOperation m_wsdlCreateOperation;
private WsStubGenerationOperation m_stubGenerationOperation;
private WsProviderImplNewOperation m_wsProviderImplNewOperation;
private QName m_portTypeQName;
private String m_alias;
private boolean m_createBindingFile;
private String m_wsdlFileName;
public WsProviderNewWizard(IScoutBundle bundle) {
m_bundle = bundle;
m_copyOperations = new ExternalFileCopyOperation[0];
setWindowTitle(Texts.get("CreateWsProvider"));
}
@Override
public void addPages() {
// new or existing WSDL
m_wsdlSelectionWizardPage = new WsdlSelectionWizardPage(m_bundle);
m_wsdlSelectionWizardPage.setTitle(Texts.get("CreateWsProvider"));
m_wsdlSelectionWizardPage.setWsdlFolder(JaxWsSdkUtility.getFolder(m_bundle, JaxWsConstants.PATH_WSDL_PROVIDER, false)); // initial value
m_wsdlSelectionWizardPage.setRootWsdlFolder(JaxWsSdkUtility.getFolder(m_bundle, JaxWsConstants.PATH_WSDL_PROVIDER, false));
m_wsdlSelectionWizardPage.addPropertyChangeListener(new P_WsdlSelectionPropertyListener());
addPage(m_wsdlSelectionWizardPage);
// WSDL selection
m_wsdlLocationWizardPage = new WsdlLocationWizardPage(m_bundle);
m_wsdlLocationWizardPage.setTitle(Texts.get("CreateWsProvider"));
m_wsdlLocationWizardPage.setExcludePage(m_wsdlSelectionWizardPage.isNewWsdl());
m_wsdlLocationWizardPage.setWsdlFolderVisible(false);
m_wsdlLocationWizardPage.setWsdlFolder(JaxWsSdkUtility.getFolder(m_bundle, JaxWsConstants.PATH_WSDL_PROVIDER, false)); // initial value
m_wsdlLocationWizardPage.setRootWsdlFolder(JaxWsSdkUtility.getFolder(m_bundle, JaxWsConstants.PATH_WSDL_PROVIDER, false));
m_wsdlLocationWizardPage.setExcludePage(true);
m_wsdlLocationWizardPage.addPropertyChangeListener(new P_WsdlLocationPropertyListener());
addPage(m_wsdlLocationWizardPage);
// Servlet registration
m_servletRegistrationWizardPage = new JaxWsServletRegistrationWizardPage(m_bundle, false);
m_servletRegistrationWizardPage.setTitle(Texts.get("CreateWsProvider"));
m_servletRegistrationWizardPage.addPropertyChangeListener(new P_ServletRegistrationPropertyListener());
m_servletRegistrationWizardPage.initializeDefaultValues(m_bundle);
Registration registration = ServletRegistrationUtility.getServletRegistration(m_bundle);
m_servletRegistrationWizardPage.setExcludePage(registration != null && !StringUtility.isNullOrEmpty(registration.getAlias()));
addPage(m_servletRegistrationWizardPage);
// WS properties of new WSDL Wizard Page
m_wsPropertiesNewWsdlWizardPage = new WsPropertiesNewWsdlWizardPage(m_bundle);
m_wsPropertiesNewWsdlWizardPage.setTitle(Texts.get("CreateWsProvider"));
m_wsPropertiesNewWsdlWizardPage.setJaxWsServletAlias(m_servletRegistrationWizardPage.getAlias());
m_wsPropertiesNewWsdlWizardPage.addPropertyChangeListener(new P_WsPropertiesNewWsdlPropertyListener());
m_wsPropertiesNewWsdlWizardPage.setExcludePage(true);
addPage(m_wsPropertiesNewWsdlWizardPage);
// WS properties of existing WSDL Wizard Page
m_wsPropertiesExistingWsdlWizardPage = new WsPropertiesExistingWsdlWizardPage(m_bundle, WebserviceEnum.Provider);
m_wsPropertiesExistingWsdlWizardPage.setTitle(Texts.get("CreateWsProvider"));
m_wsPropertiesExistingWsdlWizardPage.setJaxWsServletAlias(m_servletRegistrationWizardPage.getAlias());
m_wsPropertiesExistingWsdlWizardPage.addPropertyChangeListener(new P_WsPropertiesExistingWsdlPropertyListener());
m_wsPropertiesExistingWsdlWizardPage.setExcludePage(true);
addPage(m_wsPropertiesExistingWsdlWizardPage);
// WS Stub
m_wsStubWizardPage = new WsStubWizardPage(m_bundle);
m_wsStubWizardPage.setTitle(Texts.get("CreateWsProvider"));
addPage(m_wsStubWizardPage);
// Implementing class
m_wsProviderImplClassWizardPage = new WsProviderImplClassWizardPage(m_bundle);
m_wsProviderImplClassWizardPage.setTitle(Texts.get("CreateWsProvider"));
addPage(m_wsProviderImplClassWizardPage);
// set default value
m_wsdlSelectionWizardPage.setNewWsdl(true);
}
@Override
protected boolean beforeFinish() throws CoreException {
IFolder wsdlFolder = m_wsdlLocationWizardPage.getWsdlFolder();
if (!m_wsdlSelectionWizardPage.isNewWsdl()) {
File wsdlFile = m_wsdlLocationWizardPage.getWsdlFile();
List<ExternalFileCopyOperation> copyOperations = new LinkedList<ExternalFileCopyOperation>();
if (isCopyRequired(m_wsdlLocationWizardPage.getWsdlFolder(), wsdlFile)) {
ExternalFileCopyOperation op = new ExternalFileCopyOperation();
op.setBundle(m_bundle);
op.setOverwrite(true);
op.setExternalFile(m_wsdlLocationWizardPage.getWsdlFile());
op.setWorkspacePath(wsdlFolder.getProjectRelativePath());
copyOperations.add(op);
}
for (File file : m_wsdlLocationWizardPage.getAdditionalFiles()) {
if (isCopyRequired(m_wsdlLocationWizardPage.getWsdlFolder(), file)) {
ExternalFileCopyOperation op = new ExternalFileCopyOperation();
op.setBundle(m_bundle);
op.setOverwrite(true);
op.setExternalFile(file);
op.setWorkspacePath(wsdlFolder.getProjectRelativePath());
copyOperations.add(op);
}
}
m_copyOperations = copyOperations.toArray(new ExternalFileCopyOperation[copyOperations.size()]);
}
m_createBindingFile = m_wsStubWizardPage.isCreateBindingFile();
QName serviceQName = null;
QName portQName = null;
String urlPattern;
String wsdlFileName;
String targetNamespace;
// prepare jaxWsServletRegistrationOperation
m_servletRegistrationOperation = new JaxWsServletRegistrationOperation();
m_servletRegistrationOperation.setBundle(m_bundle);
m_servletRegistrationOperation.setRegistrationBundle(m_servletRegistrationWizardPage.getRegistrationBundle());
m_servletRegistrationOperation.setJaxWsAlias(m_servletRegistrationWizardPage.getAlias());
// prepare buildJaxWs.xml operation
m_buildJaxWsEntryCreateOperation = new BuildJaxWsEntryCreateOperation(WebserviceEnum.Provider);
m_buildJaxWsEntryCreateOperation.setBundle(m_bundle);
if (m_wsdlSelectionWizardPage.isNewWsdl()) {
m_alias = m_wsPropertiesNewWsdlWizardPage.getAlias();
targetNamespace = m_wsPropertiesNewWsdlWizardPage.getTargetNamespace();
}
else {
m_alias = m_wsPropertiesExistingWsdlWizardPage.getAlias();
targetNamespace = m_wsdlLocationWizardPage.getWsdlDefinition().getTargetNamespace();
}
m_buildJaxWsEntryCreateOperation.setAlias(m_alias);
// build properties and binding file
Map<String, List<String>> buildProperties = JaxWsSdkUtility.getDefaultBuildProperties();
// custom stub package
String defaultPackageName;
if (m_wsdlSelectionWizardPage.isNewWsdl()) {
defaultPackageName = JaxWsSdkUtility.targetNamespaceToPackageName(targetNamespace);
}
else {
Definition wsdlDefinition = m_wsdlLocationWizardPage.getWsdlDefinition();
defaultPackageName = JaxWsSdkUtility.resolveStubPackageName(null, wsdlDefinition);
}
if (!CompareUtility.equals(m_wsStubWizardPage.getPackageName(), defaultPackageName)) {
// register custom package name
JaxWsSdkUtility.addBuildProperty(buildProperties, JaxWsConstants.OPTION_PACKAGE, m_wsStubWizardPage.getPackageName());
}
m_buildJaxWsEntryCreateOperation.setBuildProperties(buildProperties);
// prepare sunJaxWs.xml operation
if (m_wsdlSelectionWizardPage.isNewWsdl()) {
// new WSDL file
serviceQName = new QName(targetNamespace, m_wsPropertiesNewWsdlWizardPage.getServiceName());
portQName = new QName(targetNamespace, m_wsPropertiesNewWsdlWizardPage.getPortName());
m_portTypeQName = new QName(targetNamespace, m_wsPropertiesNewWsdlWizardPage.getPortTypeName());
urlPattern = m_wsPropertiesNewWsdlWizardPage.getUrlPattern();
wsdlFileName = m_wsPropertiesNewWsdlWizardPage.getWsdlName();
m_wsdlCreateOperation = new WsdlCreateOperation();
m_wsdlCreateOperation.setBundle(m_bundle);
m_wsdlCreateOperation.setAlias(m_alias);
WsdlResource wsdlResource = new WsdlResource(m_bundle);
wsdlResource.setFile(JaxWsSdkUtility.getFile(m_bundle, wsdlFolder.getProjectRelativePath().append(m_wsPropertiesNewWsdlWizardPage.getWsdlName()).toPortableString(), false));
m_wsdlCreateOperation.setWsdlResource(wsdlResource);
m_wsdlCreateOperation.setTargetNamespace(targetNamespace);
m_wsdlCreateOperation.setService(m_wsPropertiesNewWsdlWizardPage.getServiceName());
m_wsdlCreateOperation.setPortName(m_wsPropertiesNewWsdlWizardPage.getPortName());
m_wsdlCreateOperation.setPortType(m_wsPropertiesNewWsdlWizardPage.getPortTypeName());
m_wsdlCreateOperation.setBinding(m_wsPropertiesNewWsdlWizardPage.getBinding());
m_wsdlCreateOperation.setUrlPattern(m_wsPropertiesNewWsdlWizardPage.getUrlPattern());
m_wsdlCreateOperation.setServiceOperationName(m_wsPropertiesNewWsdlWizardPage.getServiceOperationName());
m_wsdlCreateOperation.setWsdlStyle(m_wsPropertiesNewWsdlWizardPage.getWsdlStyle());
}
else {
// existing WSDL file
if (m_wsPropertiesExistingWsdlWizardPage.getService() != null) {
serviceQName = m_wsPropertiesExistingWsdlWizardPage.getService().getQName();
}
if (m_wsPropertiesExistingWsdlWizardPage.getPort() != null) {
if (serviceQName != null) {
portQName = new QName(serviceQName.getNamespaceURI(), m_wsPropertiesExistingWsdlWizardPage.getPort().getName());
}
else {
portQName = new QName(m_wsPropertiesExistingWsdlWizardPage.getPort().getName());
}
}
m_portTypeQName = m_wsPropertiesExistingWsdlWizardPage.getPortType().getQName();
urlPattern = m_wsPropertiesExistingWsdlWizardPage.getUrlPattern();
wsdlFileName = m_wsdlLocationWizardPage.getWsdlFile().getName();
}
m_sunJaxWsEntryCreateOperation = new SunJaxWsEntryCreateOperation();
m_sunJaxWsEntryCreateOperation.setBundle(m_bundle);
m_sunJaxWsEntryCreateOperation.setImplTypeQualifiedName(StringUtility.join(".", m_wsProviderImplClassWizardPage.getPackageName(), m_wsProviderImplClassWizardPage.getTypeName()));
m_sunJaxWsEntryCreateOperation.setAlias(m_alias);
m_sunJaxWsEntryCreateOperation.setServiceQName(serviceQName);
m_sunJaxWsEntryCreateOperation.setPortQName(portQName);
m_sunJaxWsEntryCreateOperation.setUrlPattern(urlPattern);
m_sunJaxWsEntryCreateOperation.setWsdlFile(JaxWsSdkUtility.normalizePath(wsdlFolder.getProjectRelativePath().toPortableString(), SeparatorType.TrailingType) + wsdlFileName);
m_stubGenerationOperation = new WsStubGenerationOperation();
m_stubGenerationOperation.setBundle(m_bundle);
m_stubGenerationOperation.setAlias(m_alias);
m_stubGenerationOperation.setWsdlFolder(wsdlFolder);
m_stubGenerationOperation.setProperties(buildProperties);
m_stubGenerationOperation.setWsdlFileName(wsdlFileName);
m_stubGenerationOperation.addOperationFinishedListener(new P_StubGenerationFinishedListener());
m_wsProviderImplNewOperation = new WsProviderImplNewOperation();
m_wsProviderImplNewOperation.setBundle(m_bundle);
m_wsProviderImplNewOperation.setPackageName(m_wsProviderImplClassWizardPage.getPackageName());
m_wsProviderImplNewOperation.setTypeName(m_wsProviderImplClassWizardPage.getTypeName());
m_wsProviderImplNewOperation.setCreateScoutWebServiceAnnotation(m_wsProviderImplClassWizardPage.isAnnotateImplClass());
m_wsProviderImplNewOperation.setSessionFactoryQName(m_wsProviderImplClassWizardPage.getSessionFactory());
m_wsProviderImplNewOperation.setAuthenticationHandlerQName(m_wsProviderImplClassWizardPage.getAuthenticationHandler());
m_wsProviderImplNewOperation.setCredentialValidationStrategyQName(m_wsProviderImplClassWizardPage.getCredentialValidationStrategy());
return true;
}
@Override
protected boolean performFinish(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException, IllegalArgumentException {
JaxWsSdk.getDefault().getMarkerQueueManager().suspend();
try {
m_servletRegistrationOperation.run(monitor, workingCopyManager);
for (ExternalFileCopyOperation op : m_copyOperations) {
op.validate();
op.run(monitor, workingCopyManager);
}
if (m_wsdlCreateOperation != null) {
m_wsdlCreateOperation.validate();
m_wsdlCreateOperation.run(monitor, workingCopyManager);
}
// create binding file(s)
if (m_createBindingFile) {
Map<String, List<String>> buildProperties = m_buildJaxWsEntryCreateOperation.getBuildProperties();
// get WSDL resource to determine associated XML schemas
WsdlResource wsdlResource;
if (m_wsdlCreateOperation != null) {
wsdlResource = m_wsdlCreateOperation.getWsdlResource();
}
else {
IFile wsdlFile = JaxWsSdkUtility.getFile(m_bundle, m_sunJaxWsEntryCreateOperation.getWsdlFileName(), false);
wsdlResource = new WsdlResource(m_bundle);
wsdlResource.setFile(wsdlFile);
}
// iterate through schemas to create respective binding files
SchemaCandidate[] schemaCandidates = GlobalBindingRegistrationHelper.getSchemaCandidates(wsdlResource.getFile());
for (int i = 0; i < schemaCandidates.length; i++) {
SchemaCandidate candidate = schemaCandidates[i];
// schema targetNamespace must only be specified if multiple schemas exist
String schemaTargetNamespace = null;
if (schemaCandidates.length > 1) {
schemaTargetNamespace = SchemaUtility.getSchemaTargetNamespace(candidate.getSchema());
}
String bindingFileName = JaxWsSdkUtility.createUniqueBindingFileNamePath(m_bundle, m_alias, schemaTargetNamespace);
BindingFileCreateOperation op = new BindingFileCreateOperation();
op.setBundle(m_bundle);
op.setWsdlDestinationFolder(m_wsdlLocationWizardPage.getWsdlFolder());
op.setSchemaTargetNamespace(schemaTargetNamespace);
if (candidate.getWsdlArtefact().getTypeEnum() == TypeEnum.ReferencedWsdl) {
IFile referencedWsdlFile = JaxWsSdkUtility.toFile(m_bundle, candidate.getWsdlArtefact().getFile());
op.setWsdlLocation(referencedWsdlFile);
}
op.setProjectRelativeFilePath(new Path(bindingFileName));
JaxWsSdkUtility.addBuildProperty(buildProperties, JaxWsConstants.OPTION_BINDING_FILE, bindingFileName);
// Global binding file section can only be defined in one file -> pick first
if (i == 0) {
op.setCreateGlobalBindingSection(true);
}
op.validate();
op.run(monitor, workingCopyManager);
}
m_buildJaxWsEntryCreateOperation.setBuildProperties(buildProperties);
}
try {
m_stubGenerationOperation.validate();
m_stubGenerationOperation.run(monitor, workingCopyManager);
IFile stubJarFile = JaxWsSdkUtility.getStubJarFile(m_bundle, m_buildJaxWsEntryCreateOperation.getBuildProperties(), m_sunJaxWsEntryCreateOperation.getWsdlFileName());
IType portTypeInterfaceType = JaxWsSdkUtility.resolvePortTypeInterfaceType(m_portTypeQName, stubJarFile);
// wait for stub JAR to be part of the classpth
int maxWaitLoops = 10;
while (portTypeInterfaceType == null && maxWaitLoops > 0) {
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
JaxWsSdk.logError(e);
}
portTypeInterfaceType = JaxWsSdkUtility.resolvePortTypeInterfaceType(m_portTypeQName, stubJarFile);
maxWaitLoops--;
}
m_wsProviderImplNewOperation.setPortTypeInterfaceType(portTypeInterfaceType);
m_wsProviderImplNewOperation.validate();
m_wsProviderImplNewOperation.run(monitor, workingCopyManager);
String fqnPortType = m_wsProviderImplNewOperation.getCreatedType().getFullyQualifiedName();
// wait for port type to be part of the hierarchy
maxWaitLoops = 10;
while (!TypeUtility.existsType(fqnPortType) && maxWaitLoops > 0) {
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
JaxWsSdk.logError(e);
}
maxWaitLoops--;
}
}
catch (Exception e) {
JaxWsSdk.logError(e);
}
m_buildJaxWsEntryCreateOperation.validate();
m_buildJaxWsEntryCreateOperation.run(monitor, workingCopyManager);
// creation of JAX-WS entry must be at the very end as this causes load of node page
m_sunJaxWsEntryCreateOperation.validate();
m_sunJaxWsEntryCreateOperation.run(monitor, workingCopyManager);
return true;
}
catch (Exception e) {
JaxWsSdk.logError(e);
return false;
}
finally {
JaxWsSdk.getDefault().getMarkerQueueManager().resume();
}
}
private boolean isCopyRequired(IFolder wsdlFolder, File wsdlFile) {
IFile potentialSameFile = JaxWsSdkUtility.getFile(m_bundle, wsdlFolder.getProjectRelativePath().toPortableString(), wsdlFile.getName(), false);
if (potentialSameFile != null && potentialSameFile.exists()) {
IPath potentialSameFilePath = new Path(potentialSameFile.getLocationURI().getRawPath());
IPath wsdlFilePath = new Path(wsdlFile.getAbsolutePath());
if (potentialSameFilePath.equals(wsdlFilePath)) {
return false;
}
}
return true;
}
private class P_WsdlSelectionPropertyListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (WsdlSelectionWizardPage.PROP_CREATE_NEW_WSDL.equals(event.getPropertyName())) {
boolean createNewWsdl = (Boolean) event.getNewValue();
m_wsdlLocationWizardPage.setExcludePage(createNewWsdl);
m_wsPropertiesNewWsdlWizardPage.setExcludePage(!createNewWsdl);
m_wsPropertiesExistingWsdlWizardPage.setExcludePage(createNewWsdl);
}
else if (WsdlSelectionWizardPage.PROP_WSDL_FOLDER.equals(event.getPropertyName())) {
m_wsdlLocationWizardPage.setWsdlFolder((IFolder) event.getNewValue());
}
}
}
private class P_WsdlLocationPropertyListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (WsdlLocationWizardPage.PROP_WSDL_DEFINITION.equals(event.getPropertyName())) {
Definition wsdlDefinition = (Definition) event.getNewValue();
m_wsPropertiesExistingWsdlWizardPage.setWsdlDefinition(wsdlDefinition);
if (wsdlDefinition != null) {
String defaultPackageName = JaxWsSdkUtility.resolveStubPackageName(null, wsdlDefinition);
m_wsStubWizardPage.setDefaultPackageName(defaultPackageName);
m_wsStubWizardPage.setPackageName(defaultPackageName);
}
else {
m_wsStubWizardPage.setDefaultPackageName(null);
}
}
}
}
private class P_WsPropertiesExistingWsdlPropertyListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (WsPropertiesExistingWsdlWizardPage.PROP_PORT_TYPE.equals(event.getPropertyName())) {
String portTypeName = null;
PortType portType = (PortType) event.getNewValue();
if (portType != null) {
portTypeName = portType.getQName().getLocalPart();
m_wsProviderImplClassWizardPage.setTypeName(JaxWsSdkUtility.getPlainPortTypeName(portTypeName));
}
else {
m_wsProviderImplClassWizardPage.setTypeName(null);
}
}
}
}
private class P_WsPropertiesNewWsdlPropertyListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (WsPropertiesNewWsdlWizardPage.PROP_TARGET_NAMESPACE.equals(event.getPropertyName())) {
String targetNamespace = (String) event.getNewValue();
String defaultPackageName = JaxWsSdkUtility.targetNamespaceToPackageName(targetNamespace);
m_wsStubWizardPage.setDefaultPackageName(defaultPackageName);
m_wsStubWizardPage.setPackageName(defaultPackageName);
}
else if (WsPropertiesNewWsdlWizardPage.PROP_PORT_TYPE_NAME.equals(event.getPropertyName())) {
m_wsProviderImplClassWizardPage.setTypeName(JaxWsSdkUtility.getPlainPortTypeName((String) event.getNewValue()));
}
}
}
private class P_ServletRegistrationPropertyListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (JaxWsServletRegistrationWizardPage.PROP_ALIAS.equals(event.getPropertyName())) {
if (m_wsPropertiesNewWsdlWizardPage != null) {
m_wsPropertiesNewWsdlWizardPage.setJaxWsServletAlias(m_servletRegistrationWizardPage.getAlias());
}
if (m_wsPropertiesExistingWsdlWizardPage != null) {
m_wsPropertiesExistingWsdlWizardPage.setJaxWsServletAlias(m_servletRegistrationWizardPage.getAlias());
}
}
}
}
private class P_StubGenerationFinishedListener implements IOperationFinishedListener {
@Override
public void operationFinished(boolean success, Throwable exception) {
// nop at the time
}
}
}