/* JBoss, the OpenSource WebOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package javax.xml.rpc;

import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;

/** The javax.xml.rpc.Call interface provides support for the dynamic invocation of a service endpoint. The javax.xml.rpc.Service interface acts as a factory for the creation of Call instances. 
 * 
 * @author Scott.Stark@jboss.org
 * @version $Revision: 1.3.6.1 $
 */
public interface Call
{
   public static final String ENCODINGSTYLE_URI_PROPERTY =
      "javax.xml.rpc.encodingstyle.namespace.uri"; 
    public static final String OPERATION_STYLE_PROPERTY =
       "javax.xml.rpc.soap.operation.style"; 
    public static final String PASSWORD_PROPERTY =
       "javax.xml.rpc.security.auth.password"; 
    public static final String SESSION_MAINTAIN_PROPERTY =
       "javax.xml.rpc.session.maintain"; 
    public static final String SOAPACTION_URI_PROPERTY =
       "javax.xml.rpc.soap.http.soapaction.uri"; 
    public static final String SOAPACTION_USE_PROPERTY =
       "javax.xml.rpc.soap.http.soapaction.use"; 
    public static final String USERNAME_PROPERTY =
       "javax.xml.rpc.security.auth.username"; 

   public void removeAllParameters();

   public void invokeOneWay(Object[] objects);

   public String getTargetEndpointAddress();

   public void removeProperty(String s);

   public void setTargetEndpointAddress(String s);

   public Iterator getPropertyNames();

   public List getOutputValues();

   public Map getOutputParams();

   public QName getOperationName();

   public QName getPortTypeName();

   public QName getReturnType();

   public void setOperationName(QName qName);

   public void setPortTypeName(QName qName);

   public void setReturnType(QName qName);

   public boolean isParameterAndReturnSpecRequired(QName qName);

   public void setReturnType(QName qName, Class aClass);

   public Object invoke(Object[] objects) throws RemoteException;

   public Object getProperty(String s);

   public void setProperty(String s, Object o);

   public QName getParameterTypeByName(String s);

   public Object invoke(QName qName, Object[] objects) throws RemoteException;

   public void addParameter(String s, QName qName, ParameterMode parameterMode);

   public void addParameter(String s, QName qName, Class aClass, ParameterMode parameterMode);

}
