/* * Copyright 2014 Nicolas Morel * * 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.github.nmorel.gwtjackson.benchmark.client.mechanism; import com.github.nmorel.gwtjackson.benchmark.client.data.DataContainer; import com.github.nmorel.gwtjackson.client.JsonDeserializationContext; import com.github.nmorel.gwtjackson.client.JsonSerializationContext; import com.github.nmorel.gwtjackson.client.ObjectMapper; import com.github.nmorel.gwtjackson.client.exception.JsonDeserializationException; import com.github.nmorel.gwtjackson.client.exception.JsonSerializationException; import com.google.gwt.core.client.GWT; import org.fusesource.restygwt.client.JsonEncoderDecoder; /** * @author Nicolas Morel */ public class RestyGwt extends Mechanism { private static class DataContainerMapperDecorator implements ObjectMapper<DataContainer> { private DataContainerMapper mapper; @Override public DataContainer read( String input ) throws JsonDeserializationException { return mapper.decode( input ); } @Override public DataContainer read( String input, JsonDeserializationContext ctx ) throws JsonDeserializationException { throw new UnsupportedOperationException(); } @Override public String write( DataContainer value ) throws JsonSerializationException { return mapper.encode( value ).toString(); } @Override public String write( DataContainer value, JsonSerializationContext ctx ) throws JsonSerializationException { throw new UnsupportedOperationException(); } } public static interface DataContainerMapper extends JsonEncoderDecoder<DataContainer> {} private static final DataContainerMapperDecorator decorator = new DataContainerMapperDecorator(); public RestyGwt() { super( "RestyGWT" ); } @Override protected ObjectMapper<DataContainer> newMapper() { decorator.mapper = GWT.create( DataContainerMapper.class ); return decorator; } }