package org.jboss.metadata;
import java.util.StringTokenizer;
import org.jboss.deployment.DeploymentException;
import org.w3c.dom.Element;
public class EjbPortComponentMetaData
{
private SessionMetaData sessionMetaData;
private String portComponentName;
private String portComponentURI;
private String authMethod;
private String transportGuarantee;
public EjbPortComponentMetaData(SessionMetaData sessionMetaData)
{
this.sessionMetaData = sessionMetaData;
}
public String getPortComponentName()
{
return portComponentName;
}
public String getPortComponentURI()
{
return portComponentURI;
}
public String getURLPattern()
{
String pattern = "/*";
if (portComponentURI != null)
{
int slashIndex = portComponentURI.indexOf('/', 1);
pattern = portComponentURI.substring(slashIndex);
}
return pattern;
}
public String getAuthMethod()
{
return authMethod;
}
public String getTransportGuarantee()
{
return transportGuarantee;
}
public void importStandardXml(Element element)
throws DeploymentException
{
}
public void importJBossXml(Element element) throws DeploymentException
{
portComponentName = MetaData.getUniqueChildContent(element, "port-component-name");
portComponentURI = MetaData.getOptionalChildContent(element, "port-component-uri");
if (portComponentURI != null)
{
if (portComponentURI.charAt(0) != '/')
portComponentURI = "/" + portComponentURI;
StringTokenizer st = new StringTokenizer(portComponentURI, "/");
if (st.countTokens() < 2)
throw new DeploymentException("Expected at least two tokens <port-component-uri>");
String contextRoot = "/" + st.nextToken();
String prevContextRoot = sessionMetaData.getApplicationMetaData().getWebServiceContextRoot();
if (prevContextRoot != null && prevContextRoot.equals(contextRoot) == false)
throw new DeploymentException("Invalid <port-component-uri>, expected to start with: " + prevContextRoot);
sessionMetaData.getApplicationMetaData().setWebServiceContextRoot(contextRoot);
}
authMethod = MetaData.getOptionalChildContent(element, "auth-method");
transportGuarantee = MetaData.getOptionalChildContent(element, "transport-guarantee");
if (MetaData.getOptionalChildContent(element, "port-uri") != null)
throw new DeploymentException("Deprecated element <port-uri>, use <port-component-uri> instead");
}
}