V22LiteNumericJSON.java :  » Utilities » protostuff » com » dyuproject » protostuff » codegen » Android Open Source

Android Open Source » Utilities » protostuff 
protostuff » com » dyuproject » protostuff » codegen » V22LiteNumericJSON.java
package com.dyuproject.protostuff.codegen;

import java.io.IOException;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;

import com.google.protobuf.ByteString;
import com.google.protobuf.MessageLite;
import com.google.protobuf.MessageLite.Builder;

import com.dyuproject.protostuff.json.ProtobufConvertor;
import com.dyuproject.protostuff.json.ProtobufJSON;

import com.dyuproject.protostuff.codegen.V22Lite.Bar;
import com.dyuproject.protostuff.codegen.V22Lite.Baz;
import com.dyuproject.protostuff.codegen.V22Lite.Foo;

public final class V22LiteNumericJSON extends ProtobufJSON
{

    public V22LiteNumericJSON()
    {
        super();
    }

    public V22LiteNumericJSON(JsonFactory factory)
    {
        super(factory);
    }

    @SuppressWarnings("unchecked")
    protected <T extends MessageLite, B extends Builder> ProtobufConvertor<T, B> getConvertor(Class<?> messageType)
    {
        
        if(messageType==Bar.class)
            return (ProtobufConvertor<T, B>)CONVERTOR_Bar;
        
        if(messageType==Baz.class)
            return (ProtobufConvertor<T, B>)CONVERTOR_Baz;
        
        if(messageType==Foo.class)
            return (ProtobufConvertor<T, B>)CONVERTOR_Foo;
        
        return null;
    }

    
    static final ProtobufConvertor<Bar,Bar.Builder> CONVERTOR_Bar = new ProtobufConvertor<Bar,Bar.Builder>()
    {

        public final void generateTo(JsonGenerator generator, Bar message) throws IOException
        {
            generator.writeStartObject();
                        
            if(message.hasSomeInt())
                generator.writeNumberField("1", message.getSomeInt());
                                    
            if(message.hasSomeString())
                generator.writeStringField("2", message.getSomeString());
                                    
            if (message.hasBaz())
            {
                generator.writeFieldName("3");
                CONVERTOR_Baz.generateTo(generator, message.getBaz());
            }
                                    
            if(message.hasSomeEnum())
                generator.writeNumberField("4", message.getSomeEnum().getNumber());
                                    
            if (message.hasSomeBytes())
            {
                generator.writeFieldName("5");
                generator.writeBinary(message.getSomeBytes().toByteArray());
            }
                                    
            if(message.hasSomeBoolean())
                generator.writeBooleanField("6", message.getSomeBoolean());
                                    
            if(message.hasSomeFloat())
                generator.writeNumberField("7", message.getSomeFloat());
                                    
            if(message.hasSomeDouble())
                generator.writeNumberField("8", message.getSomeDouble());
                                    
            if(message.hasSomeLong())
                generator.writeNumberField("9", message.getSomeLong());
                        
            generator.writeEndObject();
        }

        public final Bar.Builder parseFrom(JsonParser parser) throws IOException
        {
            Bar.Builder builder = Bar.newBuilder();
            mergeFrom(parser, builder);
            return builder;
        }

        public final void mergeFrom(JsonParser parser, Bar.Builder builder) throws IOException
        {
            for(JsonToken t = parser.nextToken(); t!=JsonToken.END_OBJECT; t=parser.nextToken())
            {
                if(t!=JsonToken.FIELD_NAME)
                {
                    throw new IOException("Expected token: field_name but was " + 
                            parser.getCurrentToken() + " on message " + 
                            Bar.class);
                }
                String name = parser.getCurrentName();
                switch( Integer.parseInt(name) )
                {
                    
                    case 1:
                        
                        parser.nextToken();
                        builder.setSomeInt(parser.getIntValue());
                        
                        break;
                    
                    case 2:
                                                
                        parser.nextToken();
                        builder.setSomeString(parser.getText());
                        
                        break;
                    
                    case 3:
                        
                        parser.nextToken();
                        builder.setBaz(CONVERTOR_Baz.parseFrom(parser));
                        
                        break;
                    
                    case 4:
                        
                        parser.nextToken();
                        builder.setSomeEnum(Bar.Status.valueOf(parser.getIntValue()));
                        
                        break;
                    
                    case 5:
                        
                        parser.nextToken();
                        builder.setSomeBytes(ByteString.copyFrom(parser.getBinaryValue()));
                        
                        break;
                    
                    case 6:
                        
                        JsonToken jt = parser.nextToken();
                        if(jt==JsonToken.VALUE_TRUE)
                            builder.setSomeBoolean(true);
                        else if(jt==JsonToken.VALUE_FALSE)
                            builder.setSomeBoolean(false);
                        else
                            throw new IOException("Expected token: true/false but was " + jt);
                        
                        break;
                    
                    case 7:
                        
                        parser.nextToken();
                        builder.setSomeFloat(parser.getFloatValue());
                        
                        break;
                    
                    case 8:
                        
                        parser.nextToken();
                        builder.setSomeDouble(parser.getDoubleValue());
                        
                        break;
                    
                    case 9:
                        
                        parser.nextToken();
                        builder.setSomeLong(parser.getLongValue());
                        
                        break;
                    
                    default:
                        throw new IOException("Field unknown: " + name + " on message " + Bar.class);
                }
            }
        }

    };

    
    static final ProtobufConvertor<Baz,Baz.Builder> CONVERTOR_Baz = new ProtobufConvertor<Baz,Baz.Builder>()
    {

        public final void generateTo(JsonGenerator generator, Baz message) throws IOException
        {
            generator.writeStartObject();
                        
            if(message.hasId())
                generator.writeNumberField("1", message.getId());
                                    
            if(message.hasName())
                generator.writeStringField("2", message.getName());
                                    
            if(message.hasTimestamp())
                generator.writeNumberField("3", message.getTimestamp());
                        
            generator.writeEndObject();
        }

        public final Baz.Builder parseFrom(JsonParser parser) throws IOException
        {
            Baz.Builder builder = Baz.newBuilder();
            mergeFrom(parser, builder);
            return builder;
        }

        public final void mergeFrom(JsonParser parser, Baz.Builder builder) throws IOException
        {
            for(JsonToken t = parser.nextToken(); t!=JsonToken.END_OBJECT; t=parser.nextToken())
            {
                if(t!=JsonToken.FIELD_NAME)
                {
                    throw new IOException("Expected token: field_name but was " + 
                            parser.getCurrentToken() + " on message " + 
                            Baz.class);
                }
                String name = parser.getCurrentName();
                switch( Integer.parseInt(name) )
                {
                    
                    case 1:
                        
                        parser.nextToken();
                        builder.setId(parser.getLongValue());
                        
                        break;
                    
                    case 2:
                                                
                        parser.nextToken();
                        builder.setName(parser.getText());
                        
                        break;
                    
                    case 3:
                        
                        parser.nextToken();
                        builder.setTimestamp(parser.getLongValue());
                        
                        break;
                    
                    default:
                        throw new IOException("Field unknown: " + name + " on message " + Baz.class);
                }
            }
        }

    };

    
    static final ProtobufConvertor<Foo,Foo.Builder> CONVERTOR_Foo = new ProtobufConvertor<Foo,Foo.Builder>()
    {

        public final void generateTo(JsonGenerator generator, Foo message) throws IOException
        {
            generator.writeStartObject();
                        
            generator.writeFieldName("1");
            generator.writeStartArray();
            
            for (int t : message.getSomeIntList())
                generator.writeNumber(t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("2");
            generator.writeStartArray();
            
            for (String t : message.getSomeStringList())
                generator.writeString(t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("3");
            generator.writeStartArray();
            
            for (Bar t : message.getBarList())
                CONVERTOR_Bar.generateTo(generator, t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("4");
            generator.writeStartArray();
            
            for (Foo.EnumSample t : message.getSomeEnumList())
                generator.writeNumber(t.getNumber());
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("5");
            generator.writeStartArray();
            
            for (ByteString t : message.getSomeBytesList())
                generator.writeBinary(t.toByteArray());
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("6");
            generator.writeStartArray();
            
            for (boolean t : message.getSomeBooleanList())
                generator.writeBoolean(t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("7");
            generator.writeStartArray();
            
            for (float t : message.getSomeFloatList())
                generator.writeNumber(t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("8");
            generator.writeStartArray();
            
            for (double t : message.getSomeDoubleList())
                generator.writeNumber(t);
            
            generator.writeEndArray();
                                    
            generator.writeFieldName("9");
            generator.writeStartArray();
            
            for (long t : message.getSomeLongList())
                generator.writeNumber(t);
            
            generator.writeEndArray();
                        
            generator.writeEndObject();
        }

        public final Foo.Builder parseFrom(JsonParser parser) throws IOException
        {
            Foo.Builder builder = Foo.newBuilder();
            mergeFrom(parser, builder);
            return builder;
        }

        public final void mergeFrom(JsonParser parser, Foo.Builder builder) throws IOException
        {
            for(JsonToken t = parser.nextToken(); t!=JsonToken.END_OBJECT; t=parser.nextToken())
            {
                if(t!=JsonToken.FIELD_NAME)
                {
                    throw new IOException("Expected token: field_name but was " + 
                            parser.getCurrentToken() + " on message " + 
                            Foo.class);
                }
                String name = parser.getCurrentName();
                switch( Integer.parseInt(name) )
                {
                    
                    case 1:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeInt(parser.getIntValue());
                            
                        }
                        
                        break;
                    
                    case 2:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeString(parser.getText());
                            
                        }
                        
                        break;
                    
                    case 3:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addBar(CONVERTOR_Bar.parseFrom(parser));
                            
                        }
                        
                        break;
                    
                    case 4:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeEnum(Foo.EnumSample.valueOf(parser.getIntValue()));
                            
                        }
                        
                        break;
                    
                    case 5:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeBytes(ByteString.copyFrom(parser.getBinaryValue()));
                            
                        }
                        
                        break;
                    
                    case 6:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            if(t1==JsonToken.VALUE_TRUE)
                                builder.addSomeBoolean(true);
                            else if(t1==JsonToken.VALUE_FALSE)
                                builder.addSomeBoolean(false);
                            else
                                throw new IOException("Expected token: true/false but was " + t1);
                            
                        }
                        
                        break;
                    
                    case 7:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeFloat(parser.getFloatValue());
                            
                        }
                        
                        break;
                    
                    case 8:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeDouble(parser.getDoubleValue());
                            
                        }
                        
                        break;
                    
                    case 9:
                                                
                        if(parser.nextToken()!=JsonToken.START_ARRAY)
                        {
                            throw new IOException("Expected token: [ but was " + 
                                    parser.getCurrentToken() + " on message " + 
                                    Foo.class);
                        }
                        for(JsonToken t1=parser.nextToken(); t1!=JsonToken.END_ARRAY; t1=parser.nextToken())
                        {
                                                        
                            builder.addSomeLong(parser.getLongValue());
                            
                        }
                        
                        break;
                    
                    default:
                        throw new IOException("Field unknown: " + name + " on message " + Foo.class);
                }
            }
        }

    };

    
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.