package org.jboss.axis.client;
import org.jboss.axis.AxisFault;
import org.jboss.axis.Message;
import org.jboss.axis.message.SOAPHeaderElementAxisImpl;
import org.jboss.axis.utils.Messages;
import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;
import javax.xml.rpc.Service;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.Properties;
import java.util.Vector;
public abstract class Stub implements javax.xml.rpc.Stub
{
protected Service service = null;
protected boolean maintainSessionSet = false;
protected boolean maintainSession = false;
protected Properties cachedProperties = new Properties();
protected String cachedUsername = null;
protected String cachedPassword = null;
protected URL cachedEndpoint = null;
protected Integer cachedTimeout = null;
protected QName cachedPortName = null;
private Vector headers = new Vector();
private Vector attachments = new Vector();
private boolean firstCall = true;
protected boolean firstCall()
{
boolean ret = firstCall;
firstCall = false;
return ret;
}
public void _setProperty(String name, Object value)
{
if (name == null || value == null)
{
throw new JAXRPCException(Messages.getMessage(name == null ?
"badProp03" : "badProp04"));
}
else if (name.equals(Call.USERNAME_PROPERTY))
{
if (!(value instanceof String))
{
throw new JAXRPCException(Messages.getMessage("badProp00", new String[]{
name, "java.lang.String", value.getClass().getName()}));
}
cachedUsername = (String)value;
}
else if (name.equals(Call.PASSWORD_PROPERTY))
{
if (!(value instanceof String))
{
throw new JAXRPCException(Messages.getMessage("badProp00", new String[]{
name, "java.lang.String", value.getClass().getName()}));
}
cachedPassword = (String)value;
}
else if (name.equals(Stub.ENDPOINT_ADDRESS_PROPERTY))
{
if (!(value instanceof String))
{
throw new JAXRPCException(Messages.getMessage("badProp00", new String[]{
name, "java.lang.String", value.getClass().getName()}));
}
try
{
cachedEndpoint = new URL((String)value);
}
catch (MalformedURLException mue)
{
throw new JAXRPCException(mue.getMessage());
}
}
else if (name.equals(Call.SESSION_MAINTAIN_PROPERTY))
{
if (!(value instanceof Boolean))
{
throw new JAXRPCException(Messages.getMessage("badProp00", new String[]
{name,
"java.lang.Boolean",
value.getClass().getName()}));
}
maintainSessionSet = true;
maintainSession = ((Boolean)value).booleanValue();
}
else if (name.startsWith("java.") || name.startsWith("javax."))
{
throw new JAXRPCException(Messages.getMessage("badProp05", name));
}
else
{
cachedProperties.put(name, value);
}
}
public Object _getProperty(String name)
{
if (name != null)
{
if (name.equals(Call.USERNAME_PROPERTY))
{
return cachedUsername;
}
else if (name.equals(Call.PASSWORD_PROPERTY))
{
return cachedPassword;
}
else if (name.equals(Stub.ENDPOINT_ADDRESS_PROPERTY))
{
return cachedEndpoint.toString();
}
else if (name.equals(Call.SESSION_MAINTAIN_PROPERTY))
{
return maintainSessionSet ? new Boolean(maintainSession) : null;
}
else if (name.startsWith("java.") || name.startsWith("javax."))
{
throw new JAXRPCException(Messages.getMessage("badProp05", name));
}
else
{
return cachedProperties.get(name);
}
}
else
{
return null;
}
}
public Object removeProperty(String name)
{
return cachedProperties.remove(name);
}
public Iterator _getPropertyNames()
{
return cachedProperties.keySet().iterator();
}
public void setUsername(String username)
{
cachedUsername = username;
}
public String getUsername()
{
return cachedUsername;
}
public void setPassword(String password)
{
cachedPassword = password;
}
public String getPassword()
{
return cachedPassword;
}
public int getTimeout()
{
return cachedTimeout == null ? 0 : cachedTimeout.intValue();
}
public void setTimeout(int timeout)
{
cachedTimeout = new Integer(timeout);
}
public QName getPortName()
{
return cachedPortName;
}
public void setPortName(QName portName)
{
cachedPortName = portName;
}
public void setPortName(String portName)
{
setPortName(new QName(portName));
}
public void setMaintainSession(boolean session)
{
maintainSessionSet = true;
maintainSession = session;
cachedProperties.put(Call.SESSION_MAINTAIN_PROPERTY, new Boolean(session));
}
public void setHeader(String namespace, String partName, String headerValue)
{
headers.add(new SOAPHeaderElementAxisImpl(namespace, partName, headerValue));
}
public void setHeader(SOAPHeaderElementAxisImpl header)
{
headers.add(header);
}
public void extractAttachments(Call call)
{
attachments.clear();
Message resMessage = call.getResponseMessage();
if (resMessage != null && resMessage.countAttachments() > 0)
{
Iterator iterator = resMessage.getAttachments();
while (iterator.hasNext())
{
attachments.add(iterator.next());
}
}
}
public void addAttachment(Object handler)
{
attachments.add(handler);
}
public SOAPHeaderElementAxisImpl getHeader(String namespace, String partName)
{
for (int i = 0; i < headers.size(); i++)
{
SOAPHeaderElementAxisImpl header = (SOAPHeaderElementAxisImpl)headers.get(i);
if (header.getNamespaceURI().equals(namespace) &&
header.getName().equals(partName))
return header;
}
return null;
}
public SOAPHeaderElementAxisImpl[] getHeaders()
{
SOAPHeaderElementAxisImpl[] array = new SOAPHeaderElementAxisImpl[headers.size()];
headers.copyInto(array);
return array;
}
public Object[] getAttachments()
{
Object[] array = new Object[attachments.size()];
attachments.copyInto(array);
attachments.clear();
return array;
}
public void clearHeaders()
{
headers.clear();
}
public void clearAttachments()
{
attachments.clear();
}
protected void setRequestHeaders(org.jboss.axis.client.Call call) throws AxisFault
{
SOAPHeaderElementAxisImpl[] headers = getHeaders();
for (int i = 0; i < headers.length; i++)
{
call.addHeader(headers[i]);
}
}
protected void setAttachments(org.jboss.axis.client.Call call) throws AxisFault
{
Object[] attachments = getAttachments();
for (int i = 0; i < attachments.length; i++)
{
call.addAttachmentPart(attachments[i]);
}
}
protected void getResponseHeaders(org.jboss.axis.client.Call call) throws AxisFault
{
}
}