You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-dev@ws.apache.org by ow...@apache.org on 2003/03/06 16:54:40 UTC
cvs commit: xml-axis-wsif/java/src/org/apache/wsif WSIFServiceFactory.java WSIFConstants.java
owenb 2003/03/06 07:54:40
Modified: java/src/org/apache/wsif/base WSIFServiceImpl.java
WSIFServiceFactoryImpl.java
java/src/org/apache/wsif WSIFServiceFactory.java
WSIFConstants.java
Log:
Add the ability to set features on a WSIFServiceFactory. Remove the automaticallyMapType methods
and use a feature instead.
Features supported are:
- Setting automatic mapping of types on or off
- Setting a username and password for use in retrieving documents though an authenticating proxy
- Setting a WSIFMapper and WSIFMappingConvention to be used when mapping types
- Setting service caching on or off
Revision Changes Path
1.34 +191 -29 xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceImpl.java
Index: WSIFServiceImpl.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceImpl.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- WSIFServiceImpl.java 5 Mar 2003 16:56:16 -0000 1.33
+++ WSIFServiceImpl.java 6 Mar 2003 15:54:40 -0000 1.34
@@ -58,8 +58,10 @@
package org.apache.wsif.base;
import java.io.IOException;
+import java.net.PasswordAuthentication;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
@@ -98,6 +100,7 @@
import org.apache.wsif.spi.WSIFProvider;
import org.apache.wsif.util.WSIFPluggableProviders;
import org.apache.wsif.util.WSIFUtils;
+import org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl;
import org.apache.wsif.wsdl.ClosableLocator;
import org.apache.wsif.wsdl.WSIFWSDLLocatorImpl;
@@ -132,9 +135,10 @@
private boolean typeMapInitialised = false;
// Flag to indicate that we have parsed the schema to find the types
private boolean schemaTypesInitialised = false;
- // If the WSDLLocator needed to parse the schema cannot be created by calling
- // new WSIFWSDLLocatorImpl((String) null, (String) null, null), store it
+ // WSDLLocator needed to find imported xsd files if parsing the schema
private WSDLLocator specialistLocator = null;
+
+ protected Map features = null;
/**
* Create a WSIF service instance from WSDL document URL.
@@ -153,17 +157,34 @@
String serviceNS,
String serviceName,
String portTypeNS,
- String portTypeName)
+ String portTypeName,
+ Map factoryFeatures)
throws WSIFException {
Trc.entry(this, wsdlLoc, serviceNS, serviceName, portTypeNS, portTypeName);
+ this.features = factoryFeatures;
+
// load WSDL defintion
Definition def = null;
try {
- def = WSIFUtils.readWSDL(null, wsdlLoc);
+ // Check if we need to read the wsdl through an authenticating proxy
+ PasswordAuthentication pa = getProxyAuthentication();
+ if (pa != null
+ && (wsdlLoc.startsWith("http://")
+ || wsdlLoc.startsWith("ftp://"))) {
+ def = WSIFUtils.readWSDLThroughAuthProxy(wsdlLoc, pa);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator =
+ new AuthenticatingProxyWSDLLocatorImpl(wsdlLoc, pa);
+ }
+ if (def == null) {
+ def = WSIFUtils.readWSDL(null, wsdlLoc);
+ }
checkWSDL(def);
} catch (WSDLException ex) {
- Trc.exception(ex);
+ Trc.exception(ex);
throw new WSIFException("could not load " + wsdlLoc, ex);
}
@@ -197,24 +218,41 @@
String serviceNS,
String serviceName,
String portTypeNS,
- String portTypeName)
+ String portTypeName,
+ Map factoryFeatures)
throws WSIFException {
Trc.entry(this, wsdlLoc, cl, serviceNS, serviceName, portTypeNS, portTypeName);
+ this.features = factoryFeatures;
+
// load WSDL defintion
Definition def = null;
try {
- def = WSIFUtils.readWSDL(null, wsdlLoc, cl);
+ // Check if we need to read the wsdl through an authenticating proxy
+ PasswordAuthentication pa = getProxyAuthentication();
+ if (pa != null
+ && (wsdlLoc.startsWith("http://")
+ || wsdlLoc.startsWith("ftp://"))) {
+ def = WSIFUtils.readWSDLThroughAuthProxy(wsdlLoc, pa);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator =
+ new AuthenticatingProxyWSDLLocatorImpl(wsdlLoc, pa);
+ }
+ if (def == null) {
+ def = WSIFUtils.readWSDL(null, wsdlLoc, cl);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator = new WSIFWSDLLocatorImpl(null, wsdlLoc, cl);
+ }
checkWSDL(def);
} catch (WSDLException ex) {
Trc.exception(ex);
throw new WSIFException("could not load " + wsdlLoc, ex);
}
- // Store a locator with a reference to the classloader in case autoTypeMappings
- // is off but we use stub invocations later
- specialistLocator = new WSIFWSDLLocatorImpl(null, wsdlLoc, cl);
-
// select WSDL service if given name
Service service = WSIFUtils.selectService(def, serviceNS, serviceName);
@@ -232,8 +270,8 @@
* The equivalent {@link org.apache.wsif.WSIFServiceFactory}.getService method
* should be used to create a WSIFService.
*/
- WSIFServiceImpl(Definition def) throws WSIFException {
- this(def, null);
+ WSIFServiceImpl(Definition def, Map factoryFeatures) throws WSIFException {
+ this(def, null, factoryFeatures);
}
/**
@@ -242,8 +280,8 @@
* The equivalent {@link org.apache.wsif.WSIFServiceFactory}.getService method
* should be used to create a WSIFService.
*/
- WSIFServiceImpl(Definition def, Service service) throws WSIFException {
- this(def, service, null);
+ WSIFServiceImpl(Definition def, Service service, Map factoryFeatures) throws WSIFException {
+ this(def, service, null, factoryFeatures);
}
/**
@@ -252,10 +290,30 @@
* The equivalent {@link org.apache.wsif.WSIFServiceFactory}.getService method
* should be used to create a WSIFService.
*/
- WSIFServiceImpl(Definition def, Service service, PortType portType)
+ WSIFServiceImpl(Definition def, Service service, PortType portType, Map factoryFeatures)
throws WSIFException {
- Trc.entry(this, def, service, portType);
+ Trc.entry(this, def, service, portType, factoryFeatures);
+ this.features = factoryFeatures;
+ try {
+ PasswordAuthentication pa = getProxyAuthentication();
+ if (pa != null) {
+ def =
+ WSIFUtils.readWSDLThroughAuthProxy(
+ def.getDocumentBaseURI(),
+ pa);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator =
+ new AuthenticatingProxyWSDLLocatorImpl(
+ def.getDocumentBaseURI(),
+ pa);
+ }
+ } catch (WSDLException we) {
+ Trc.ignoredException(we);
+ }
+
init(def, service, portType);
if (Trc.ON)
Trc.exit(deep());
@@ -267,9 +325,29 @@
* The equivalent {@link org.apache.wsif.WSIFServiceFactory}.getService method
* should be used to create a WSIFService.
*/
- WSIFServiceImpl(Definition def, String serviceNS, String serviceName)
+ WSIFServiceImpl(Definition def, String serviceNS, String serviceName, Map factoryFeatures)
throws WSIFException {
- Trc.entry(this, def, serviceNS, serviceName);
+ Trc.entry(this, def, serviceNS, serviceName, factoryFeatures);
+
+ this.features = factoryFeatures;
+ try {
+ PasswordAuthentication pa = getProxyAuthentication();
+ if (pa != null) {
+ def =
+ WSIFUtils.readWSDLThroughAuthProxy(
+ def.getDocumentBaseURI(),
+ pa);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator =
+ new AuthenticatingProxyWSDLLocatorImpl(
+ def.getDocumentBaseURI(),
+ pa);
+ }
+ } catch (WSDLException we) {
+ Trc.ignoredException(we);
+ }
// select WSDL service if given by name or only one
Service service = WSIFUtils.selectService(def, serviceNS, serviceName);
@@ -289,9 +367,30 @@
String serviceNS,
String serviceName,
String portTypeNS,
- String portTypeName)
+ String portTypeName,
+ Map factoryFeatures)
throws WSIFException {
- Trc.entry(this, def, serviceNS, serviceName, portTypeNS, portTypeName);
+ Trc.entry(this, def, serviceNS, serviceName, portTypeNS, portTypeName, factoryFeatures);
+
+ this.features = factoryFeatures;
+ try {
+ PasswordAuthentication pa = getProxyAuthentication();
+ if (pa != null) {
+ def =
+ WSIFUtils.readWSDLThroughAuthProxy(
+ def.getDocumentBaseURI(),
+ pa);
+
+ // We'll need to use a non default WSDLLocator to help find imported
+ // xsd files if parsing the schema, so store it
+ specialistLocator =
+ new AuthenticatingProxyWSDLLocatorImpl(
+ def.getDocumentBaseURI(),
+ pa);
+ }
+ } catch (WSDLException we) {
+ Trc.ignoredException(we);
+ }
checkWSDLForWSIF(def);
@@ -334,6 +433,13 @@
this.schemaTypes = (ArrayList) svc.schemaTypes.clone();
this.mapCon = svc.mapCon;
this.mapper = svc.mapper;
+ if (svc.features instanceof Hashtable) {
+ this.features = (Map) ((Hashtable) svc.features).clone();
+ } else if (svc.features instanceof HashMap) {
+ this.features = (Map) ((HashMap) svc.features).clone();
+ } else {
+ this.features = svc.features;
+ }
}
/**
@@ -823,10 +929,31 @@
myPortsArr[count++] = port;
}
- // Set up the WSIFMapper and WSIFMappingConvention for use by this service
- mapCon = WSIFMappingConventionFactory.newMappingConvention();
- mapper = WSIFMapperFactory.newMapper();
- mapper.setMappingConvention(mapCon);
+ // Set up the WSIFMapper and WSIFMappingConvention appropriately
+ String mapperClass = null;
+ String mappingConvClass = null;
+ try {
+ mapperClass =
+ (String) features.get(
+ WSIFConstants.WSIF_FEATURE_MAPPER_CLASS);
+ } catch (ClassCastException cce) {
+ Trc.ignoredException(cce);
+ }
+ try {
+ mappingConvClass =
+ (String) features.get(
+ WSIFConstants.WSIF_FEATURE_MAPPINGCONVENTION_CLASS);
+ } catch (ClassCastException cce) {
+ Trc.ignoredException(cce);
+ }
+
+ overrideMapper(mapperClass);
+ overrideMappingConvention(mappingConvClass);
+
+ // If automatic mapping of types is required, generate the list of SchemaType objects
+ if (autoMapTypesOn()) {
+ populateSchemaTypes(specialistLocator);
+ }
}
@@ -973,7 +1100,11 @@
* @throws A WSIFException if the WSIFMapper cannot be found or set
*/
protected void overrideMapper(String mapperClassName) throws WSIFException {
- mapper = WSIFMapperFactory.newMapper(mapperClassName);
+ if (mapperClassName != null) {
+ mapper = WSIFMapperFactory.newMapper(mapperClassName);
+ } else {
+ mapper = WSIFMapperFactory.newMapper();
+ }
}
/**
@@ -983,7 +1114,11 @@
* @throws A WSIFException if the WSIFMappingConvention cannot be found or set
*/
protected void overrideMappingConvention(String mappingConvClassName) throws WSIFException {
- mapCon = WSIFMappingConventionFactory.newMappingConvention(mappingConvClassName);
+ if (mappingConvClassName != null) {
+ mapCon = WSIFMappingConventionFactory.newMappingConvention(mappingConvClassName);
+ } else {
+ mapCon = WSIFMappingConventionFactory.newMappingConvention();
+ }
mapper.setMappingConvention(mapCon);
}
@@ -1014,8 +1149,8 @@
}
}
- // Add the list of types to the context message so that providers can
- // use the information if needed
+ // Add a read-only version of the list of types to the context message
+ // so that providers can use the information if needed
WSIFMessage ctx = getContext();
ctx.setObjectPart(
WSIFConstants.CONTEXT_SCHEMA_TYPES,
@@ -1077,6 +1212,33 @@
}
typeMapInitialised = true;
}
+ }
+
+ private boolean autoMapTypesOn() {
+ if (features == null) {
+ return false;
+ }
+ Object on = features.get(WSIFConstants.WSIF_FEATURE_AUTO_MAP_TYPES);
+ if (on != null && on instanceof Boolean) {
+ if (((Boolean) on).booleanValue()) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ private PasswordAuthentication getProxyAuthentication() {
+ if (features != null) {
+ Object pa =
+ features.get(WSIFConstants.WSIF_FEATURE_PROXY_AUTHENTICATION);
+ if (pa != null && pa instanceof PasswordAuthentication) {
+ return (PasswordAuthentication) pa;
+ }
+ }
+ return null;
}
public String deep() {
1.11 +59 -64 xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceFactoryImpl.java
Index: WSIFServiceFactoryImpl.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/base/WSIFServiceFactoryImpl.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- WSIFServiceFactoryImpl.java 26 Feb 2003 15:55:18 -0000 1.10
+++ WSIFServiceFactoryImpl.java 6 Mar 2003 15:54:40 -0000 1.11
@@ -66,6 +66,7 @@
import javax.wsdl.xml.WSDLLocator;
import javax.xml.namespace.QName;
+import org.apache.wsif.WSIFConstants;
import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
@@ -81,10 +82,8 @@
public class WSIFServiceFactoryImpl extends WSIFServiceFactory {
private boolean useCache = false;
- private boolean autoMapTypes = false;
- private String mapperClassName = null;
- private String mappingConventionClassName = null;
private Map cache = new Hashtable();
+ private Map features = new Hashtable();
/**
* Create a WSIFService from WSDL document URL.
@@ -140,12 +139,8 @@
serviceNS,
serviceName,
portTypeNS,
- portTypeName);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, wsdlLoc, null);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ portTypeName,
+ getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -214,12 +209,8 @@
serviceNS,
serviceName,
portTypeNS,
- portTypeName);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, wsdlLoc, cl);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ portTypeName,
+ getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -248,12 +239,7 @@
}
}
- WSIFServiceImpl wsi = new WSIFServiceImpl(def);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, def.getDocumentBaseURI(), null);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ WSIFServiceImpl wsi = new WSIFServiceImpl(def, getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -284,12 +270,7 @@
}
}
- WSIFServiceImpl wsi = new WSIFServiceImpl(def, service);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, def.getDocumentBaseURI(), null);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ WSIFServiceImpl wsi = new WSIFServiceImpl(def, service, getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -323,12 +304,7 @@
}
}
- WSIFServiceImpl wsi = new WSIFServiceImpl(def, service, portType);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, def.getDocumentBaseURI(), null);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ WSIFServiceImpl wsi = new WSIFServiceImpl(def, service, portType, getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -387,12 +363,8 @@
serviceNS,
serviceName,
portTypeNS,
- portTypeName);
-
- if (autoMapTypes) {
- WSDLLocator loc = new WSIFWSDLLocatorImpl(null, def.getDocumentBaseURI(), null);
- configureServiceImplMappingInfo(wsi, loc);
- }
+ portTypeName,
+ getFeatures());
if (useCache && !key.equals("")) {
cache.put(key, wsi);
@@ -408,32 +380,65 @@
* specified has already been created and if so a reference to that instance
* of WSIFService is returned.
* @param on Flag to indicate whether or not caching of services should be used
+ * @deprecated Use <code>setFeature(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING, new Boolean(true))</code>
+ * or <code>setFeature(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING, new Boolean(false))</code> instead
*/
public void cachingOn(boolean on) {
Trc.entry(this,on);
- useCache = on;
+ setFeature(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING, new Boolean(on));
Trc.exit();
}
-
-
+
/**
- * @see WSIFServiceFactory#automaticallyMapTypes(boolean on)
+ * @see org.apache.wsif.WSIFServiceFactory#setFeature(String, Object)
*/
- public void automaticallyMapTypes(boolean on) {
- Trc.entry(this,on);
- autoMapTypes = on;
+ public void setFeature(String name, Object value) {
+ Trc.entry(this, name, value);
+ if (WSIFConstants.WSIF_FEATURE_SERVICE_CACHING.equals(name)) {
+ if (value != null && value instanceof Boolean) {
+ if (((Boolean) value).booleanValue()) {
+ useCache = true;
+ } else {
+ useCache = false;
+ }
+ }
+ }
+ features.put(name, value);
Trc.exit();
- }
+ }
/**
- * @see WSIFServiceFactory#automaticallyMapTypes(boolean on, String mapperClassName, String conventionClassName)
+ * @see org.apache.wsif.WSIFServiceFactory#setFeatures(Map)
*/
- public void automaticallyMapTypes(boolean on, String mapperClassName, String conventionClassName) {
- Trc.entry(this, new Boolean(on), mapperClassName, conventionClassName);
- autoMapTypes = on;
- this.mapperClassName = mapperClassName;
- this.mappingConventionClassName = conventionClassName;
- Trc.exit();
+ public void setFeatures(Map map) {
+ Trc.entry(this, map);
+ features.clear();
+ features.putAll(map);
+ if (map.containsKey(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING)) {
+ Object value = map.get(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING);
+ if (value != null && value instanceof Boolean) {
+ if (((Boolean) value).booleanValue()) {
+ useCache = true;
+ } else {
+ useCache = false;
+ }
+ }
+ }
+ Trc.exit();
+ }
+
+ /**
+ * @see org.apache.wsif.WSIFServiceFactory#getFeature(String)
+ */
+ public Object getFeature(String name) {
+ return features.get(name);
+ }
+
+ /**
+ * @see org.apache.wsif.WSIFServiceFactory#getFeatures()
+ */
+ public Map getFeatures() {
+ return (Map) ((Hashtable)features).clone();
}
private String genCacheKey(
@@ -548,15 +553,5 @@
ret = "";
Trc.exit(ret);
return ret;
- }
-
- private void configureServiceImplMappingInfo(WSIFServiceImpl ser, WSDLLocator loc) throws WSIFException {
- ser.populateSchemaTypes(loc);
- if (mapperClassName != null) {
- ser.overrideMapper(mapperClassName);
- }
- if (mappingConventionClassName != null) {
- ser.overrideMappingConvention(mappingConventionClassName);
- }
}
}
1.12 +36 -20 xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceFactory.java
Index: WSIFServiceFactory.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceFactory.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- WSIFServiceFactory.java 26 Feb 2003 15:55:23 -0000 1.11
+++ WSIFServiceFactory.java 6 Mar 2003 15:54:40 -0000 1.12
@@ -57,6 +57,7 @@
package org.apache.wsif;
+import java.util.Map;
import javax.wsdl.Definition;
import javax.wsdl.PortType;
import javax.wsdl.Service;
@@ -161,29 +162,44 @@
/**
* Set caching on services on/off. Off is the default
* @param on Flag to indicate whether or not caching of services should be used
+ * @deprecated Use <code>setFeature(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING, new Boolean(true))</code>
+ * or <code>setFeature(WSIFConstants.WSIF_FEATURE_SERVICE_CACHING, new Boolean(false))</code> instead
*/
public void cachingOn(boolean on) {
}
+
+ /**
+ * Set a feature on the WSIFServiceFactory. The names of supported features are stored as constants
+ * in the {@link WSIFConstants} class. The names of these constants have a convention of starting
+ * <code>WSIF_FEATURE_</code>.
+ * For more information about individual features, see the field details for the feature constants.
+ * <br><br><b>Note:</b> features should be set before calls to the getService methods.<br>
+ * @param name The name of the feature to set
+ * @param value The value of the feature
+ */
+ public abstract void setFeature(String name, Object value);
+
+ /**
+ * Set features on the WSIFServiceFactory. Calling this method will replace the currently set features
+ * with those configured in the Map passed in.
+ * The names of supported features are stored as constants
+ * in the {@link WSIFConstants} class. The names of these constants have a convention of starting
+ * <code>WSIF_FEATURE_</code>.
+ * For more information about individual features, see the field details for the feature constants.
+ * <br><br><b>Note:</b> features should be set before calls to the getService methods.<br>
+ * @param map A Map containing all the features to set on the factory
+ */
+ public abstract void setFeatures(Map map);
- /**
- * Set a flag to indicate whether or not instances of WSIFService created by this factory, will
- * attempt to automatically calculate mappings between xml names and Java class names for the
- * types in the wsdl.
- * @param on Whether automcatic mapping of types is on or off. The default is off
- */
- public void automaticallyMapTypes(boolean on) {
- }
+ /**
+ * Get the map of features currently being used by the factory.
+ * @return The map of features
+ */
+ public abstract Map getFeatures();
- /**
- * Set a flag to indicate whether or not instances of WSIFService created by this factory, will
- * attempt to automatically calculate mappings between xml names and Java class names for the
- * types in the wsdl. This method also allows the user to programatically specify the names of the
- * WSIFMapper and WSIFMappingConvention classes to be used by WSIFServices created by this factory.
- * A null value for a class name will be ignored i.e. no overriding will take place.
- * @param on Whether automcatic mapping of types is on or off. The default is off
- * @param mapperClassName The WSIFMapper implementation class name
- * @param conventionClassName The WSIFMappingConvention implementation class name
- */
- public void automaticallyMapTypes(boolean on, String mapperClassName, String conventionClassName) {
- }
+ /**
+ * Get the value for a feature currently being used by the factory.
+ * @return The feature value
+ */
+ public abstract Object getFeature(String name);
}
1.21 +51 -5 xml-axis-wsif/java/src/org/apache/wsif/WSIFConstants.java
Index: WSIFConstants.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFConstants.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- WSIFConstants.java 5 Mar 2003 16:56:15 -0000 1.20
+++ WSIFConstants.java 6 Mar 2003 15:54:40 -0000 1.21
@@ -191,11 +191,11 @@
"message";
/**
- * WSIF context part name for the schema types iterator
+ * WSIF context part name for the list of schema types
*/
public static final String CONTEXT_SCHEMA_TYPES =
"org.apache.wsif.schematypes";
-
+
/**
* SOAP faults WSIFMessage part name for the fault code
*/
@@ -278,12 +278,58 @@
"http://xml.apache.org/xml-soap";
/**
- * Property name that specifies a WSIFMapper implementation class
+ * Property name that specifies a WSIFMapper implementation class. This property can be
+ * set as a System property or in the wsif,properties file.
+ * @see org.apache.wsif.mapping.WSIFMapperFactory
*/
public static final String WSIF_MAPPER_PROPERTY = "org.apache.wsif.mapper";
/**
- * Property name that specifies a WSIFMappingConvention implementation class
+ * Property name that specifies a WSIFMappingConvention implementation class. This property can be
+ * set as a System property or in the wsif,properties file.
+ * @see org.apache.wsif.mapping.WSIFMappingConventionFactory
+ */
+ public static final String WSIF_MAPPINGCONVENTION_PROPERTY = "org.apache.wsif.mappingconvention";
+
+ /**
+ * Feature name for service caching. The value of this feature should be a <code>java.lang.Boolean</code>
+ * object<br><br>
+ * Setting this feature as <code>true</code> will cause the WSIFServiceFactory to store shallow
+ * copies of any WSIFService instances it creates and to reuse these whenever possible rather than
+ * creating new WSIFService instances. This can provide a performance improvement if you are creating
+ * and using the same WSIFServices multiple times.
+ */
+ public static final String WSIF_FEATURE_SERVICE_CACHING = "org.apache.wsif.servicecaching";
+
+ /**
+ * Feature name for automatic mapping of types. The value of this feature should be a
+ * <code>java.lang.Boolean</code> object<br><br>
+ * Setting this feature as <code>true</code> will cause instances of WSIFService created by this factory,
+ * to attempt to automatically calculate mappings between xml names and Java class names for the
+ * types in the wsdl.
+ */
+ public static final String WSIF_FEATURE_AUTO_MAP_TYPES = "org.apache.wsif.automaptypes";
+
+ /**
+ * Feature name for the name of a WSIFMapper class to be used. The value for this feature should be
+ * a String giving the name of the WSIFMapper implementation class to be used by all WSIFServices
+ * created by the factory. Setting this feature will override the use of the org.apache.wsif.mapper
+ * property for WSIFServices created by the factory.
+ */
+ public static final String WSIF_FEATURE_MAPPER_CLASS = "org.apache.wsif.mapper";
+
+ /**
+ * Feature name for the name of a WSIFMappingConvention class to be used. The value for this feature
+ * should be a String giving the name of the WSIFMappingConvention implementation class to be used by
+ * all WSIFServices created by the factory. Setting this feature will override the use of the
+ * org.apache.wsif.mappingconvention property for WSIFServices created by the factory.
+ */
+ public static final String WSIF_FEATURE_MAPPINGCONVENTION_CLASS = "org.apache.wsif.mappingconvention";
+
+ /**
+ * Feature name for a authenticating proxy username and password to be used when reading wsdl files and
+ * parsing schemas. The value for this feature should be a <code>java.net.PasswordAuthentication</code>
+ * object which encapsultes the username and password.
*/
- public static final String WSIF_MAPPINGCONVENTION_PROPERTY = "org.apache.wsif.mappingconvention";
+ public static final String WSIF_FEATURE_PROXY_AUTHENTICATION = "org.apache.wsif.proxyauthentication";
}