package examples.handler;

import java.util.ArrayList;
import java.util.List;

import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import javax.xml.namespace.QName;

import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.HandlerRegistry;

import weblogic.utils.Debug;


/**
 * @author Copyright (c) 2002 by BEA Systems. All Rights Reserved.
 */

public final class Client {

 public static void main( String[] args ) throws Exception{

   //set weblogic ServiceFactory
   System.setProperty( "javax.xml.rpc.ServiceFactory",
     "weblogic.webservice.core.rpc.ServiceFactoryImpl" );

   //create service factory
   ServiceFactory factory = ServiceFactory.newInstance();
  
   //define qnames
   String targetNamespace = "http://foo.bar.com/echostring";

   QName serviceName = new QName( targetNamespace, "EchoService");

   QName portName = new QName( targetNamespace, "EchoServicePort");

   QName operationName = new QName( "f");

   //create service
   Service service = factory.createService( serviceName ); 

   //setup Handler(s)

   HandlerRegistry registry = service.getHandlerRegistry();

   List hList = new ArrayList();
   hList.add(
     new HandlerInfo(HelloWorldHandler.class, null, null)
   );

   registry.setHandlerChain(portName, hList);

   //create call
   Call call = service.createCall();

   //set port and operation name
   call.setPortTypeName( portName );
   call.setOperationName( operationName );

    //add parameters
   call.addParameter( "param", new QName( "http://www.w3.org/2001/XMLSchema",
     "string" ), ParameterMode.IN );

   call.addParameter( "result", new QName( "http://www.w3.org/2001/XMLSchema",
     "string" ), ParameterMode.OUT );

   //set end point address
   call.setTargetEndpointAddress( "http://localhost:7001/handler/EchoService");

   // Add in client-side handlers:



   Object result = call.invoke( new Object[]{ "BEAS" } );
   
   System.out.println("** Got result: "+result);



 }


}