/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.xml.ws.typeprovider;
import gw.fs.IDirectory;
import gw.fs.IFile;
import gw.internal.xml.IXmlLoggerFactory;
import gw.internal.xml.config.XmlServices;
import gw.internal.xml.ws.WsiAdditions;
import gw.internal.xml.xsd.typeprovider.XmlSchemaIndex;
import gw.internal.xml.xsd.typeprovider.XmlSchemaResourceTypeLoaderBase;
import gw.internal.xml.xsd.typeprovider.schema.XmlSchema;
import gw.lang.reflect.RefreshKind;
import gw.lang.reflect.module.IModule;
import gw.util.ILogger;
import gw.util.Pair;
import java.net.URL;
import java.util.Map;
public class WsdlTypeLoader extends XmlSchemaResourceTypeLoaderBase<Object> {
private ILogger _logger;
// This constructor is called reflectively
@SuppressWarnings( { "UnusedDeclaration" } )
public WsdlTypeLoader( IModule module ) {
super( "wsdl", module );
}
public ILogger getLogger() {
if (_logger == null) {
_logger = XmlServices.getLogger( IXmlLoggerFactory.Category.Loading );
}
return _logger;
}
@Override
public String getSchemaSchemaTypeName() {
return "gw.xsd.w3c.wsdl.Definitions";
}
protected XmlSchemaIndex<Object> loadSchemaForNamespace( String namespace, IFile resourceFile, Map<Pair<URL,String>, XmlSchema> caches ) {
Wsdl ret = null;
try {
// WSDL loading does not use schema caches
ret = WsiAdditions.getInstance().createWsdl( this, namespace, resourceFile, caches );
}
catch ( Exception ex ) {
ex.printStackTrace();
}
return ret;
}
@Override
public String getElementsNamespacePrefix() {
return ".elements";
}
@Override
public String getTypesNamespacePrefix() {
return ".types";
}
@Override
public String getEnumerationsNamespacePrefix() {
return ".enums";
}
@Override
public String getAnonymousNamespacePrefix() {
return ".anonymous";
}
@Override
public boolean handlesNonPrefixLoads() {
return true;
}
protected String[] getAdditionalSubPackages() {
return new String[] { "faults", "ports", "soapheaders" };
}
}