package org.jboss.webservice.metadata;
import org.jboss.logging.Logger;
import org.jboss.webservice.metadata.InitParamMetaData;
import org.jboss.webservice.metadata.HandlerMetaData;
import org.jboss.xml.binding.ContentNavigator;
import org.jboss.xml.binding.ObjectModelFactory;
import org.xml.sax.Attributes;
import java.net.URLClassLoader;
public class WebservicesFactory
implements ObjectModelFactory
{
private static final Logger log = Logger.getLogger(WebservicesFactory.class);
private URLClassLoader resourceLoader;
public WebservicesFactory(URLClassLoader resourceLoader)
{
this.resourceLoader = resourceLoader;
}
public Object newRoot(Object root,
ContentNavigator navigator,
String namespaceURI,
String localName,
Attributes attrs)
{
return new WebservicesMetaData(resourceLoader);
}
public Object newChild(WebservicesMetaData webservices, ContentNavigator navigator, String namespaceURI, String localName,
Attributes attrs)
{
if ("webservice-description".equals(localName))
return new WebserviceDescriptionMetaData(webservices);
else
return null;
}
public void addChild(WebservicesMetaData webservices,
WebserviceDescriptionMetaData webserviceDescription,
ContentNavigator navigator, String namespaceURI, String localName)
{
webservices.addWebserviceDescription(webserviceDescription);
}
public Object newChild(WebserviceDescriptionMetaData webserviceDescription, ContentNavigator navigator, String namespaceURI, String localName,
Attributes attrs)
{
if ("port-component".equals(localName))
return new PortComponentMetaData(webserviceDescription);
else
return null;
}
public void addChild(WebserviceDescriptionMetaData webserviceDescription,
PortComponentMetaData portComponent,
ContentNavigator navigator, String namespaceURI, String localName)
{
webserviceDescription.addPortComponent(portComponent);
}
public Object newChild(PortComponentMetaData portComponent, ContentNavigator navigator, String namespaceURI, String localName,
Attributes attrs)
{
if ("handler".equals(localName))
return new HandlerMetaData();
else
return null;
}
public void addChild(PortComponentMetaData portComponent, HandlerMetaData handler, ContentNavigator navigator, String namespaceURI, String localName)
{
portComponent.addHandler(handler);
}
public Object newChild(HandlerMetaData handler, ContentNavigator navigator, String namespaceURI, String localName,
Attributes attrs)
{
if ("init-param".equals(localName))
return new InitParamMetaData();
else
return null;
}
public void addChild(HandlerMetaData handler, InitParamMetaData param, ContentNavigator navigator, String namespaceURI, String localName)
{
handler.addInitParam(param);
}
public void setValue(WebserviceDescriptionMetaData webserviceDescription, ContentNavigator navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("WebserviceDescriptionMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
if (localName.equals("webservice-description-name"))
webserviceDescription.setWebserviceDescriptionName(value);
else if (localName.equals("wsdl-file"))
webserviceDescription.setWsdlFile(value);
else if (localName.equals("jaxrpc-mapping-file"))
webserviceDescription.setJaxrpcMappingFile(value);
}
public void setValue(PortComponentMetaData portComponent, ContentNavigator navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("PortComponentMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
if (localName.equals("port-component-name"))
portComponent.setPortComponentName(value);
else if (localName.equals("wsdl-port"))
portComponent.setWsdlPort(navigator.resolveQName(value));
else if (localName.equals("service-endpoint-interface"))
portComponent.setServiceEndpointInterface(value);
else if (localName.equals("ejb-link"))
portComponent.setEjbLink(value);
else if (localName.equals("servlet-link"))
portComponent.setServletLink(value);
}
public void setValue(HandlerMetaData handler, ContentNavigator navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("HandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
if (localName.equals("handler-name"))
handler.setHandlerName(value);
else if (localName.equals("handler-class"))
handler.setHandlerClass(value);
else if (localName.equals("soap-header"))
handler.addSoapHeader(navigator.resolveQName(value));
else if (localName.equals("soap-role"))
handler.addSoapRole(value);
}
public void setValue(InitParamMetaData param, ContentNavigator navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("InitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
if (localName.equals("param-name"))
param.setParamName(value);
else if (localName.equals("param-value"))
param.setParamValue(value);
}
}