/* * 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.shared.annotations; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.github.nmorel.gwtjackson.shared.AbstractTester; import com.github.nmorel.gwtjackson.shared.ObjectReaderTester; import com.github.nmorel.gwtjackson.shared.ObjectWriterTester; /** * @author Nicolas Morel */ public final class JsonAnyGetterSetterTester extends AbstractTester { public static class BeanWithAnyGetterAndAnySetter { private String aString; private int anInt; private Double notVisibleDouble; private List<String> notVisibleList; public String getaString() { return aString; } public void setaString( String aString ) { this.aString = aString; } public int getAnInt() { return anInt; } public void setAnInt( int anInt ) { this.anInt = anInt; } @JsonAnyGetter private Map other() { Map map = new LinkedHashMap(); map.put( "notVisibleDouble", notVisibleDouble ); map.put( "notVisibleList", notVisibleList ); return map; } @JsonAnySetter private void other( String property, Object value ) { if ( "notVisibleDouble".equals( property ) ) { notVisibleDouble = (Double) value; } else if ( "notVisibleList".equals( property ) ) { notVisibleList = (List<String>) value; } } } public static final JsonAnyGetterSetterTester INSTANCE = new JsonAnyGetterSetterTester(); private JsonAnyGetterSetterTester() { } public void testSerialize( ObjectWriterTester<BeanWithAnyGetterAndAnySetter> writer ) { BeanWithAnyGetterAndAnySetter bean = new BeanWithAnyGetterAndAnySetter(); bean.aString = "visibleString"; bean.anInt = 478552; bean.notVisibleDouble = 85.24d; bean.notVisibleList = new ArrayList<String>( Arrays.asList( "Hello", "World", "!" ) ); String expected = "{\"aString\":\"visibleString\"," + "\"anInt\":478552," + "\"notVisibleDouble\":85.24," + "\"notVisibleList\":[\"Hello\",\"World\",\"!\"]" + "}"; String result = writer.write( bean ); assertEquals( expected, result ); } public void testDeserialize( ObjectReaderTester<BeanWithAnyGetterAndAnySetter> reader ) { String input = "{\"aString\":\"visibleString\"," + "\"anInt\":478552," + "\"notVisibleDouble\":85.24," + "\"notVisibleList\":[\"Hello\",\"World\",\"!\"]" + "}"; BeanWithAnyGetterAndAnySetter result = reader.read( input ); assertEquals( "visibleString", result.aString ); assertEquals( 478552, result.anInt ); assertEquals( 85.24d, result.notVisibleDouble ); assertEquals( Arrays.asList( "Hello", "World", "!" ), result.notVisibleList ); } }