// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/client/value/GenericTestValue.java
// public class GenericTestValue<T extends TestValue> implements IsSerializable{
// 
//   private T testValue;
// 
//   public GenericTestValue(){
// 
//   }
// 
//   public GenericTestValue(T testValue){
//     this.testValue = testValue;
//   }
// 
//   public T getTestValue(){
//     return testValue;
//   }
// 
//   public void setTestValue(T testValue){
//     this.testValue = testValue;
//   }
// 
//   @Override
//   public boolean equals(Object o){
//     if(this == o) return true;
//     if(!(o instanceof GenericTestValue)) return false;
// 
//     GenericTestValue that = (GenericTestValue)o;
// 
//     if(!testValue.equals(that.testValue)) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode(){
//     return testValue.hashCode();
//   }
// }
// 
// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/client/value/TestValue.java
// public class TestValue implements Serializable {
// 
//   private String value;
// 
//   public TestValue(){}
// 
//   public TestValue(String value){
//     this.value = value;
//   }
// 
//   public String getValue() {
//     return value;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (!(o instanceof TestValue)) return false;
// 
//     TestValue testValue = (TestValue) o;
// 
//     return value == null ? (testValue.value == null) : value.equals(testValue.value);
//   }
// 
//   @Override
//   public int hashCode() {
//     return value.hashCode();
//   }
// }
// 
// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/shared/RpcTestValue.java
// public class RpcTestValue implements IsSerializable {
// 
//   private long id;
// 
//   public RpcTestValue(){}
// 
//   public RpcTestValue(long id){
//     this.id = id;
//   }
// 
//   public long getId(){
//     return id;
//   }
// 
//   public void setId(long id){
//     this.id = id;
//   }
// 
//   @Override
//   public boolean equals(Object o){
//     if(this == o) return true;
//     if(!(o instanceof RpcTestValue)) return false;
// 
//     RpcTestValue that = (RpcTestValue)o;
// 
//     if(id != that.id) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode(){
//     return (int)(id ^ (id >>> 32));
//   }
// }


import com.google.gwt.user.client.rpc.AsyncCallback;
import com.seanchenxi.gwt.storage.client.value.GenericTestValue;
import com.seanchenxi.gwt.storage.client.value.TestValue;
import com.seanchenxi.gwt.storage.shared.RpcTestMapKey;
import com.seanchenxi.gwt.storage.shared.RpcTestMapValue;
import com.seanchenxi.gwt.storage.shared.RpcTestValue;
import java.util.List;
import java.util.Map;
/*
 * Copyright 2013 Xi CHEN
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.seanchenxi.gwt.storage.client.service;



/**
 * Created by: Xi
 */
public interface TestServiceAsync {

  void getRpcTestValue(AsyncCallback<RpcTestValue> async);

  void getRpcTestValueList(AsyncCallback<List<RpcTestValue>> async);

  void getRpcTestValueStringMap(AsyncCallback<Map<RpcTestMapKey, RpcTestMapValue>> async);

  void testDeserialization(TestValue className, String serialized, TestValue stored, AsyncCallback<TestValue> async);

  void testGenericDeserialization(GenericTestValue<TestValue> value1, String serialized, AsyncCallback<GenericTestValue<TestValue>> async);

// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/client/value/GenericTestValue.java
// public class GenericTestValue<T extends TestValue> implements IsSerializable{
// 
//   private T testValue;
// 
//   public GenericTestValue(){
// 
//   }
// 
//   public GenericTestValue(T testValue){
//     this.testValue = testValue;
//   }
// 
//   public T getTestValue(){
//     return testValue;
//   }
// 
//   public void setTestValue(T testValue){
//     this.testValue = testValue;
//   }
// 
//   @Override
//   public boolean equals(Object o){
//     if(this == o) return true;
//     if(!(o instanceof GenericTestValue)) return false;
// 
//     GenericTestValue that = (GenericTestValue)o;
// 
//     if(!testValue.equals(that.testValue)) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode(){
//     return testValue.hashCode();
//   }
// }
// 
// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/client/value/TestValue.java
// public class TestValue implements Serializable {
// 
//   private String value;
// 
//   public TestValue(){}
// 
//   public TestValue(String value){
//     this.value = value;
//   }
// 
//   public String getValue() {
//     return value;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (!(o instanceof TestValue)) return false;
// 
//     TestValue testValue = (TestValue) o;
// 
//     return value == null ? (testValue.value == null) : value.equals(testValue.value);
//   }
// 
//   @Override
//   public int hashCode() {
//     return value.hashCode();
//   }
// }
// 
// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/shared/RpcTestValue.java
// public class RpcTestValue implements IsSerializable {
// 
//   private long id;
// 
//   public RpcTestValue(){}
// 
//   public RpcTestValue(long id){
//     this.id = id;
//   }
// 
//   public long getId(){
//     return id;
//   }
// 
//   public void setId(long id){
//     this.id = id;
//   }
// 
//   @Override
//   public boolean equals(Object o){
//     if(this == o) return true;
//     if(!(o instanceof RpcTestValue)) return false;
// 
//     RpcTestValue that = (RpcTestValue)o;
// 
//     if(id != that.id) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode(){
//     return (int)(id ^ (id >>> 32));
//   }
// }


// Path: examples/serializer-test/src/main/java/com/seanchenxi/gwt/storage/client/service/TestServiceAsync.java
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.seanchenxi.gwt.storage.client.value.GenericTestValue;
import com.seanchenxi.gwt.storage.client.value.TestValue;
import com.seanchenxi.gwt.storage.shared.RpcTestMapKey;
import com.seanchenxi.gwt.storage.shared.RpcTestMapValue;
import com.seanchenxi.gwt.storage.shared.RpcTestValue;
import java.util.List;
import java.util.Map;

/*
 * Copyright 2013 Xi CHEN
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.seanchenxi.gwt.storage.client.service;



/**
 * Created by: Xi
 */
public interface TestServiceAsync {

  void getRpcTestValue(AsyncCallback<RpcTestValue> async);

  void getRpcTestValueList(AsyncCallback<List<RpcTestValue>> async);

  void getRpcTestValueStringMap(AsyncCallback<Map<RpcTestMapKey, RpcTestMapValue>> async);

  void testDeserialization(TestValue className, String serialized, TestValue stored, AsyncCallback<TestValue> async);

  void testGenericDeserialization(GenericTestValue<TestValue> value1, String serialized, AsyncCallback<GenericTestValue<TestValue>> async);

  void testSerialization(TestValue value, String serialized, TestValue stored, AsyncCallback<String> async);