Package jsonij.legacy.marshal

Source Code of jsonij.legacy.marshal.GenericArrayMarshal$MyMap1

/*
*  Copyright 2011 jmarsden.
*
*  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.
*  under the License.
*/
package jsonij.legacy.marshal;

import cc.plural.jsonij.JSON;
import cc.plural.jsonij.Value;
import cc.plural.jsonij.marshal.JSONMarshalerException;
import cc.plural.jsonij.marshal.JavaMarshaler;
import cc.plural.jsonij.marshal.annotation.JSONIgnore;
import cc.plural.jsonij.parser.ParserException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import jsonij.legacy.marshal.GenericArrayMarshal.RatedBook.QUALITY;
import static org.junit.Assert.assertEquals;
import org.junit.Test;

/**
*
* @author jmarsden
*/
public class GenericArrayMarshal {

    @Test
    public void testGenericArray() throws ParserException, IOException {
        System.out.println("testGenericArray");
        MyArray<Book<String>> bookList = new MyArray<Book<String>>();
        bookList.add(new RatedBook<String>("John Marsden", "Tomorrow When The War Began", "ISBN-0192-2928", QUALITY.GOOD));
        bookList.add(new RatedBook<String>("David Johnsonbaugh", "Discrete Mathematics", "ISBN-0192-2928", QUALITY.BAD));
        JavaMarshaler marshaler = new JavaMarshaler();
        Value output = marshaler.marshalObject(bookList);
        Value expected = JSON.parse("{\"$innerArray\":[{\"$innerArray\":[{\"$innerArray\":[],\"author\":\"John Marsden\",\"title\":\"Tomorrow When The War Began\",\"test\":-99,\"quality\":\"GOOD\"},{\"$innerArray\":[],\"author\":\"David Johnsonbaugh\",\"title\":\"Discrete Mathematics\",\"test\":-99,\"quality\":\"BAD\"},{\"$innerArray\":[\"A String\"],\"author\":\"R.A.Salvatore\",\"title\":\"Homeland\",\"iSBN\":\"ISBN-0192-2928\",\"test\":-99,\"quality\":\"GOOD\"}],\"value\":100}],\"someValue\":\"this is a string\"}\n").getRoot();
        System.out.println(output.toJSON());
        //assertEquals(output, expected);
    }

    @Test
    public void testNestedGenericArray() throws JSONMarshalerException {
        System.out.println("testNestedGenericArray");

        MyOuterArray<MyArray<Book<String>>> bookBookList = new MyOuterArray<MyArray<Book<String>>>();

        MyArray<Book<String>> bookList = new MyArray<Book<String>>();
        RatedBook<String> book = new RatedBook<String>("R.A.Salvatore", "Homeland", "ISBN-0192-2928", QUALITY.GOOD);
        book.add("A String");
        bookList.add(new RatedBook<String>("John Marsden", "Tomorrow When The War Began", QUALITY.GOOD));
        bookList.add(new RatedBook<String>("David Johnsonbaugh", "Discrete Mathematics", QUALITY.BAD));
        bookList.add(book);
        bookBookList.add(bookList);

        JavaMarshaler marshaler = new JavaMarshaler();
        Value output = marshaler.marshalObject(bookBookList);
        System.out.println(output.toJSON());
    }

    @Test
    public void testNestedGenericMap() throws JSONMarshalerException {
        MyMap1<java.lang.String, MyMap2<java.lang.String, Integer>> mapObject = new MyMap1<java.lang.String, MyMap2<java.lang.String, Integer>>();
        MyMap2<java.lang.String, Integer> innerMap = new MyMap2<java.lang.String, Integer>();
        innerMap.put("Some value", 22);
        innerMap.put("Another value", -3000);
        mapObject.put("innerMap1", innerMap);
        innerMap = new MyMap2<java.lang.String, Integer>();
        innerMap.put("blah", 69);
        mapObject.put("innerMap2", innerMap);

        JavaMarshaler marshaler = new JavaMarshaler();
        Value output = marshaler.marshalObject(mapObject);
        System.out.println(output.toJSON());
    }

    public class MyOuterArray<S extends MyArray<?>> extends ArrayList<S> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = 2050949577933010800L;
        String someValue;

        public MyOuterArray() {
            someValue = "this is a string";
        }

        public String getSomeValue() {
            return someValue;
        }

        public void setSomeValue(String someValue) {
            this.someValue = someValue;
        }
    }

    public class MyArray<S extends Book<?>> extends ArrayList<S> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = 8389046563607785747L;
        public int value = 100;
    }

    public class MyMap1<S, M extends Map<?, ?>> extends HashMap<S, M> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = -3727864143653102617L;
        public java.lang.String value = "rah";
    }

    public class MyMap2<S, I> extends HashMap<S, I> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = 6938490107578854400L;
    }

    public static class RatedBook<T> extends Book<T> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = -6664478337797979108L;
        public int test = -99;
        QUALITY quality;

        public enum QUALITY {

            GOOD, BAD
        }

        public RatedBook(String author, String title, QUALITY quality) {
            super(author, title);
            this.quality = quality;
        }

        public RatedBook(String author, String title, String isbn, QUALITY quality) {
            super(author, title, isbn);
            this.quality = quality;
        }

        public QUALITY getQuality() {
            return quality;
        }

        public void setQuality(QUALITY quality) {
            this.quality = quality;
        }
    }

    public static class Book<T> extends ArrayList<T> {

        /**
         * Serial UID
         */
        private static final long serialVersionUID = -366377652330081822L;
        String author;
        String title;
        String isbn;

        public Book() {
            this(null, null);
        }

        public Book(String author, String title) {
            this.author = author;
            this.title = title;
        }

        public Book(String author, String title, String isbn) {
            this.author = author;
            this.title = title;
            this.isbn = isbn;
        }

        public String getAuthor() {
            return author;
        }

        public void setAuthor(String author) {
            this.author = author;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        @JSONIgnore
        public String getISBN() {
            return isbn;
        }

        @JSONIgnore
        public void setISBN(String isbn) {
            this.isbn = isbn;
        }
    }
}
TOP

Related Classes of jsonij.legacy.marshal.GenericArrayMarshal$MyMap1

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.