Package net.cloudcodex.server.test

Source Code of net.cloudcodex.server.test.CallRPCFromJavaTest$Proxy

package net.cloudcodex.server.test;

import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.cloudcodex.shared.dto.Result;
import net.cloudcodex.shared.dto.campaign.character.CharacterHeaderDTO;
import net.cloudcodex.shared.dto.home.CharacterSummaryDTO;
import net.cloudcodex.shared.dto.home.HomeDTO;
import net.cloudcodex.shared.dto.msg.MessageDTO;
import net.cloudcodex.shared.dto.msg.SceneDTO;
import net.cloudcodex.shared.rpc.CampaignRPC;
import net.cloudcodex.shared.rpc.HomeRPCAsync;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.googlecode.gwtrpccommlayer.client.impl.GwtRpcClientSideProxy;
import com.googlecode.gwtrpccommlayer.client.impl.GwtRpcCommLayerClient;

public class CallRPCFromJavaTest {
 
  public static class Proxy extends GwtRpcClientSideProxy {
   
    @Override
    protected void onAfterRequest(HttpPost httppost, HttpResponse response) {
      System.err.println("onAfterRequest : " + response.getStatusLine().getStatusCode());
      System.err.println("onAfterRequest : " + ToStringBuilder.reflectionToString(response, ToStringStyle.MULTI_LINE_STYLE));
      for(Header header : response.getAllHeaders()) {
        System.err.println("header : " + header.getName() + " : " + header.getValue());
      }
    }
  }
 
  public static void main(String[] args) throws Exception {
   
    //STEP 1: create the URL that points to your service/servlet
    //URL url = new URL("http://127.0.0.1:8888/_ah/login?email=krazlafas@gmail.com&continue=http://localhost:8888/cloudcodex/home2");

    final DefaultHttpClient  http = new DefaultHttpClient ();
   
    http.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
       
        HttpPost http_get = new HttpPost("http://localhost:8888/_ah/login?continue=http://localhost/&email=krazlafas@gmail.com");
        HttpResponse response = http.execute(http_get);
        if(response.getStatusLine().getStatusCode() != 302) {
            // Response should be a redirect
            System.err.println(response.getStatusLine().getStatusCode());
            return;
        }

        for(Cookie cookie : http.getCookieStore().getCookies()) {
          System.err.println(cookie.getName() + " / '" + cookie.getValue() + "'");
        }

   
    URL urlHome = new URL("http://localhost:8888/cloudcodex/home2");
    GwtRpcCommLayerClient clientHome = new GwtRpcCommLayerClient(urlHome, http.getCookieStore().getCookies());
    clientHome.setGwtRpcClientSizeProxyImplClass(Proxy.class.getName());
    final HomeRPCAsync homeRpc = clientHome.createRemoteServicePojoProxy(HomeRPCAsync.class);

    URL urlCampaign = new URL("http://localhost:8888/cloudcodex/campaign2");
    GwtRpcCommLayerClient clientCampaign = new GwtRpcCommLayerClient(urlCampaign, http.getCookieStore().getCookies());
    clientCampaign.setGwtRpcClientSizeProxyImplClass(Proxy.class.getName());
    final CampaignRPC campaignRpc = clientCampaign.createRemoteServicePojoProxy(CampaignRPC.class);
   
    // asynchronous call
    homeRpc.getHome(new AsyncCallback<Result<HomeDTO>>() {
     
      @Override
      public void onSuccess(Result<HomeDTO> result) {

        System.err.println(result.hasErrors());
        final HomeDTO home = result.getData();
       
        System.err.println(home.getNickname() + " : ");
        for(CharacterSummaryDTO character : home.getCharacters()) {
         
          // synchronous call
          System.err.println("\n----------------\n" + character.getName() + " : ");
          final Result<List<SceneDTO>> result2 =
            campaignRpc.getMessages(character.getCampaign().getId(), character.getId(), null, null);

          final List<SceneDTO> scenes = result2.getData();
          for(SceneDTO scene : scenes) {
            final StringBuffer buffer = new StringBuffer();
            final Map<Long, CharacterHeaderDTO> authors = new HashMap<Long, CharacterHeaderDTO>();
            for(CharacterHeaderDTO header : scene.getCharacters()) {
              if(buffer.length() != 0) {
                buffer.append(", ");
              }
              buffer.append(header.getName());
              authors.put(header.getId(), header);
            }
           
            System.err.println("\n--\nWith : " + buffer + " : ");
            for(MessageDTO message : scene.getMessages()) {
              final CharacterHeaderDTO author = authors.get(message.getAuthor());
              final String authorname = author == null ? "GM" : author.getName();
              System.err.println(authorname + " : " + message.getType() + " / " + message.getContent());
            }
          }
        }
      }
     
      @Override
      public void onFailure(Throwable caught) {
        caught.printStackTrace();       
      }
    });
  }
 
}
TOP

Related Classes of net.cloudcodex.server.test.CallRPCFromJavaTest$Proxy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.