blob: 6945d99ad912dcb21bbeb29014fa54b106df0afa [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.websvc.jaxws.spi;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.netbeans.modules.j2ee.dd.api.webservices.WebservicesMetadata;
import org.netbeans.modules.j2ee.metadata.model.api.MetadataModel;
import org.netbeans.spi.project.support.ant.AntProjectHelper;
import org.openide.filesystems.FileObject;
/**
*
* @author Milan Kuchtiak
*/
/** SPI for JAXWSSupport
*/
public interface JAXWSSupportImpl {
public static final String XML_RESOURCES_FOLDER="xml-resources"; //NOI18N
public static final String SERVICES_LOCAL_FOLDER="web-services"; //NOI18N
public static final String CATALOG_FILE="catalog.xml"; //NOI18N
/**
* Add web service to jax-ws.xml intended for web services from java
* @param serviceName service display name (name of the node ws will be presented in Netbeans), e.g. "SearchService"
* @param serviceImpl package name of the implementation class, e.g. "org.netbeans.SerchServiceImpl"
* @param isJsr109 Indicates if the web service is being created in a project that supports a JSR 109 container
*/
public void addService(String serviceName, String serviceImpl, boolean isJsr109);
/** Add web service to jax-ws.xml
* intended for web services from wsdl
* @param name service display name (name of the node ws will be presented in Netbeans), e.g. "SearchService"
* @param serviceImpl package name of the implementation class, e.g. "org.netbeans.SerchServiceImpl"
* @param wsdlUrl url of the local wsdl file, e.g. file:/home/userXY/documents/wsdl/SearchService.wsdl"
* @param serviceName service name (from service wsdl element), e.g. SearchService
* @param portName port name (from service:port element), e.g. SearchServicePort
* @param packageName package name where java artifacts will be generated
* @param isJsr109 Indicates if the web service is being created in a project that supports a JSR 109 container
* @param useProvider indicates if the generated impl is a Provider
* @return returns the unique IDE service name
*/
public String addService(String name, String serviceImpl, String wsdlUrl, String serviceName,
String portName, String packageName, boolean isJsr109, boolean useProvider);
/**
* Returns the list of web services in the project
* @return list of web services
*/
public List/*Service*/ getServices();
/**
* Remove the web service entries from the project properties
* @param serviceName service IDE name
* project.xml files
*/
public void removeService(String serviceName);
/**
* Notification when Service (created from java) is removed from jax-ws.xml
* (JAXWSSupport needs to react when @WebService annotation is removed
* or when impl.class is removed (manually from project)
* @param serviceName service IDE name
*/
public void serviceFromJavaRemoved(String serviceName);
/** Get the name of the implementation class
* given the service (ide) name
* @param serviceName service IDE name
* @return service implementation class package name
*/
public String getServiceImpl(String serviceName);
/** Determine if the web service was created from WSDL
* @param serviceName service name
*/
public boolean isFromWSDL(String serviceName);
/** Get WSDL folder for the project (folder containing wsdl files)
* The folder is used to save remote or local wsdl files to be available within the jar/war files.
* it is usually META-INF/wsdl folder (or WEB-INF/wsdl for web application)
* @param createFolder if (createFolder==true) the folder will be created (if not created before)
* @return the file object (folder) where wsdl files are located in project
*/
public FileObject getWsdlFolder(boolean create) throws java.io.IOException;
/** Get folder for local WSDL and XML artifacts for given service
* This is the location where wsdl/xml files are downloaded to the project.
* JAX-WS java artifacts will be generated from these local files instead of remote.
* @param serviceName service IDE name (the web service node display name)
* @param createFolder if (createFolder==true) the folder will be created (if not created before)
* @return the file object (folder) where wsdl files are located in project
*/
public FileObject getLocalWsdlFolderForService(String serviceName, boolean createFolder);
/** Get folder for local jaxb binding (xml) files for given service
* This is the location where external jaxb binding files are downloaded to the project.
* JAX-WS java artifacts will be generated using these local binding files instead of remote.
* @param serviceName service IDE name (the web service node display name)
* @param createFolder if (createFolder==true) the folder will be created (if not created before)
* @return the file object (folder) where jaxb binding files are located in project
*/
public FileObject getBindingsFolderForService(String serviceName, boolean createFolder);
/**
* Get the AntProjectHelper from the project
*/
public AntProjectHelper getAntProjectHelper();
/** Get EntityCatalog for local copies of wsdl and schema files
*/
public URL getCatalog();
/** Get wsdlLocation information
* Useful for web service from wsdl (the @WebService wsdlLocation attribute)
* @param serviceName service "display" name
*/
public String getWsdlLocation(String serviceName);
/**
* Remove all entries associated with a non-JSR 109 entries
* This may include entries in the module's deployment descriptor,
* and entries in the implementation-specific descriptor file, sun-jaxws.xml.
* This is provided as a service so that the node can also use it for cleanup.
*/
public void removeNonJsr109Entries(String serviceName) throws IOException;
/**
* Returns the directory that contains the deployment descriptor in the project
*/
public FileObject getDeploymentDescriptorFolder();
/**
* Returns a metadata model of a webservices deployment descriptor
*
* @return metadata model of a webservices deployment descriptor
*/
public MetadataModel<WebservicesMetadata> getWebservicesMetadataModel();
}