SmartGWT can load WSDL service definitions and call web service operations with automatic JSON<->XML translation. (Smart GWT) : Web Services « GWT « Java






SmartGWT can load WSDL service definitions and call web service operations with automatic JSON<->XML translation. (Smart GWT)

  

/*
 * SmartGWT (GWT for SmartClient)
 * Copyright 2008 and beyond, Isomorphic Software, Inc.
 *
 * SmartGWT is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License version 3
 * as published by the Free Software Foundation.  SmartGWT is also
 * available under typical commercial license terms - see
 * http://smartclient.com/license
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 */


package com.smartgwt.sample.showcase.client;

import java.util.LinkedHashMap;
import java.util.Map;

import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.data.WSDLLoadCallback;
import com.smartgwt.client.data.WebService;
import com.smartgwt.client.data.WebServiceCallback;
import com.smartgwt.client.data.XMLTools;
import com.smartgwt.client.rpc.RPCResponse;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.form.fields.TextItem;

public class Showcase implements EntryPoint {
  public void onModuleLoad() {
    RootPanel.get().add(getViewPanel());
  }

  public Canvas getViewPanel() {
    final ZipForm form = new ZipForm();
    form.setLeft(50);
    form.setTop(50);
    form.setNumCols(3);
    form.setCellSpacing(5);

    TextItem zipField = new TextItem();
    zipField.setName("ZipCode");
    zipField.addKeyPressHandler(new KeyPressHandler() {
      public void onKeyPress(KeyPressEvent event) {
        if (event.getKeyName().equals("Enter")) {
          form.callService();
        }
      }
    });

    ButtonItem findButton = new ButtonItem("findCity", "Find City");
    findButton.setStartRow(false);
    findButton.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        form.callService();
      }
    });

    StaticTextItem cityText = new StaticTextItem();
    cityText.setName("City");
    form.setItems(zipField, findButton, cityText);

    XMLTools.loadWSDL("http://www.webservicex.net/uszip.asmx?WSDL", new WSDLLoadCallback() {
      public void execute(WebService webService) {
        zipCodeService = webService;
      }
    });

    return form;

  }

  class ZipForm extends DynamicForm {
    public void callService() {
      if (zipCodeService == null) {
        SC.say("Please try again in a moment  - still loading web service descriptor");
      } else {
        setValue("City", "Loading...");
        Map data = new LinkedHashMap();
        data.put("USZip", getValueAsString("ZipCode"));
        zipCodeService.callOperation("GetInfoByZIP", data, "//CITY", new WebServiceCallback() {

          public void execute(Object[] data, JavaScriptObject xmlDoc, RPCResponse rpcResponse,
              JavaScriptObject wsRequest) {
            ZipForm.this.setValue("City", (String) data[0]);
          }
        });
      }
    }
  }

  private WebService zipCodeService;

}

   
    
  








SmartGWT.zip( 9,880 k)

Related examples in the same category

1.XPath binding allows declarative integration with web services (Smart GWT)