blob: 61eb01686eebf3b13f0fb3f241d3894cdb20eef8 [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.operation;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.scout.commons.StringUtility;
import org.eclipse.scout.commons.xmlparser.ScoutXmlDocument;
import org.eclipse.scout.commons.xmlparser.ScoutXmlDocument.ScoutXmlElement;
import org.eclipse.scout.sdk.operation.IOperation;
import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager;
import org.eclipse.scout.sdk.workspace.IScoutBundle;
import org.eclipse.scout.sdk.ws.jaxws.resource.IResourceListener;
import org.eclipse.scout.sdk.ws.jaxws.resource.ResourceFactory;
import org.eclipse.scout.sdk.ws.jaxws.resource.XmlResource;
import org.eclipse.scout.sdk.ws.jaxws.swt.model.BuildJaxWsBean;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.WebserviceEnum;
public class BuildJaxWsEntryCreateOperation implements IOperation {
private IScoutBundle m_bundle;
private String m_alias;
private String m_wsdlFile;
private Map<String, List<String>> m_buildProperties;
private WebserviceEnum m_webserviceEnum;
private BuildJaxWsBean m_createdBuildJaxWsBean;
public BuildJaxWsEntryCreateOperation(WebserviceEnum webserviceEnum) {
m_webserviceEnum = webserviceEnum;
}
@Override
public void validate() throws IllegalArgumentException {
if (m_bundle == null) {
throw new IllegalArgumentException("bundle not set");
}
if (!StringUtility.hasText(m_alias)) {
throw new IllegalArgumentException("alias must not be empty");
}
}
@Override
public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException, IllegalArgumentException {
XmlResource buildJaxWsResource = ResourceFactory.getBuildJaxWsResource(m_bundle);
if (buildJaxWsResource.getFile() == null || !buildJaxWsResource.getFile().exists()) {
// create build-jaxws.xml file
BuildJaxWsFileCreateOperation op = new BuildJaxWsFileCreateOperation(m_bundle);
op.run(monitor, workingCopyManager);
}
ScoutXmlDocument xmlDocument = buildJaxWsResource.loadXml();
ScoutXmlElement xml;
if (m_webserviceEnum == WebserviceEnum.Provider) {
xml = xmlDocument.getRoot().addChild(BuildJaxWsBean.XML_PROVIDER);
}
else {
xml = xmlDocument.getRoot().addChild(BuildJaxWsBean.XML_CONSUMER);
}
BuildJaxWsBean bean = new BuildJaxWsBean(xml, m_webserviceEnum);
bean.setAlias(m_alias);
if (m_webserviceEnum == WebserviceEnum.Consumer) {
bean.setWsdl(m_wsdlFile); // if provider, this is stored in sun-jaxws.xml
}
bean.setProperties(m_buildProperties);
m_createdBuildJaxWsBean = bean;
ResourceFactory.getBuildJaxWsResource(m_bundle).storeXml(m_createdBuildJaxWsBean.getXml().getDocument(), IResourceListener.EVENT_BUILDJAXWS_ENTRY_ADDED, monitor, m_alias);
}
@Override
public String getOperationName() {
return BuildJaxWsEntryCreateOperation.class.getName();
}
public IScoutBundle getBundle() {
return m_bundle;
}
public void setBundle(IScoutBundle bundle) {
m_bundle = bundle;
}
public String getAlias() {
return m_alias;
}
public void setAlias(String alias) {
m_alias = alias;
}
public Map<String, List<String>> getBuildProperties() {
return m_buildProperties;
}
public void setBuildProperties(Map<String, List<String>> buildProperties) {
m_buildProperties = buildProperties;
}
/**
* only used for webservice consumer
*
* @return
*/
public String getWsdlFile() {
return m_wsdlFile;
}
/**
* only used for webservice consumer
*
* @param wsdlFile
*/
public void setWsdlFile(String wsdlFile) {
m_wsdlFile = wsdlFile;
}
/**
* After execution, to get the created {@link BuildJaxWsBean}.
*
* @return
*/
public BuildJaxWsBean getCreatedBuildJaxWsBean() {
return m_createdBuildJaxWsBean;
}
}