FileDocCategorySizeDatePackage
WSDLBookServiceClient.javaAPI DocExample4167Mon Dec 16 13:21:28 GMT 2002ora.jwsnut.chapter6.client

WSDLBookServiceClient.java

package ora.jwsnut.chapter6.client;

// JAX-RPC imports
import javax.xml.rpc.Service;
import javax.xml.rpc.Stub;

// Service imports
import ora.jwsnut.chapter6.wsdlbookservice.BookInfo;
import ora.jwsnut.chapter6.wsdlbookservice.BookQuery;
import ora.jwsnut.chapter6.wsdlbookservice.BookServiceException;

// Import for service
import ora.jwsnut.chapter6.wsdlbookservice.BookService_Impl;

public class WSDLBookServiceClient {
    
    private static final int GET_BOOKS = 0;
    private static final int GET_AUTHOR = 1;
    private static final int GET_EDITOR = 2;
    private static final int GET_PRICE = 3;
    
    private static final String[] commands = {
            "author", "editor", "price"
    };
    
    public static void main(String[] args) {
        
        try {
            if (args.length == 1) {
                usage();
            }
            
            // Make sure that the arguments are legal
            int command = -1;
            String name = null;
            if (args.length != 0) {
                String request = args[0];
                StringBuffer sb = new StringBuffer();
                sb.append(args[1]);
                for (int i = 2; i < args.length; i++) {
                    sb.append(' ');
                    sb.append(args[i]);                    
                }                
                name = sb.toString();
                System.out.println("NAME = [" + name + "]");
                for (int i = 0; i < commands.length; i++) {
                    if (request.equals(commands[i])) {
                        command = i + 1;
                        break;
                    }
                }
                
                if (command == -1) {
                    // Not found
                    usage();
                }
            } else {
                command = GET_BOOKS;
            }

            // Get a reference to the stub
            BookService_Impl service = new BookService_Impl();
            BookQuery bookQuery = (BookQuery)service.getBookQueryPort();

            // Perform the RPC and print the results          
            switch (command) {
            case GET_BOOKS:
                BookInfo[] books = bookQuery.getBookInfo();
                for (int i = 0; i < books.length; i++) {
                    BookInfo info = books[i];
                    System.out.println(info.getTitle() + " by " +
                                info.getAuthor() + ", edited by " +
                                info.getEditor() + ", price USD " +
                                info.getPrice());
                }
                break;                
            
            case GET_AUTHOR:
                String author = bookQuery.getAuthor(name);
                System.out.println(author != null ? author :
                                    "No matching book found");
                break;
                    
            case GET_EDITOR:
                String editor = bookQuery.getEditor(name);
                System.out.println(editor != null ? editor :
                                    "No matching book found");
                break;
                
            case GET_PRICE:
                double price = bookQuery.getPrice(name);
                System.out.println("Price = " + price + " USD.");
                break;                
            }
            System.exit(0);
        } catch (Throwable t) {
            System.out.println("CLASS: " + t.getClass().getName() + "\n\n");
            System.out.println(t.getMessage());
            t.printStackTrace(System.out);
        }
    }  
    
    private static void usage() {
        System.err.println("Usage: WSDLBookServiceClient [args]");
        System.err.println("\tNo arguments - lists all known books");
        System.err.println("\tauthor name     Finds the author for a book");
        System.err.println("\teditor name     Finds the editor for a book");
        System.err.println("\tprice name      Finds the price for a book");
        System.exit(1);
    }
}