package votorola.s.gwt.scene.feed.ss; // Copyright 2011-2012, Christian Weilbach, Michael Allan.  Permission is hereby
// granted, free of charge, to any person obtaining a copy of this software and associated
// documentation files (the "Votorola Software"), to deal in the Votorola Software without
// restriction, including without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicence, and/or sell copies of the Votorola Software, and to permit persons to
// whom the Votorola Software is furnished to do so, subject to the following conditions: The
// preceding copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Votorola Software. THE VOTOROLA SOFTWARE IS PROVIDED "AS IS", WITHOUT
// WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE VOTOROLA
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE VOTOROLA SOFTWARE.

import com.google.gson.stream.JsonWriter;
import java.io.IOException;


/** A mutable and serializeable message.
  */
public final class MessageJig implements votorola.s.gwt.stage.Message, SerialJig
{


   // - M e s s a g e  --------------------------------------------------------------------------


    public String content() { return content; }

        private String content;


        /** Sets the content.
          */
        public void setContent( String s ) { content = s; }


        private void content( final JsonWriter out ) throws IOException
        {
            if( content == null ) throw new NullPointerException(); // meet contract of Message

            out.name( "content" ).value( content );
            content = null;
        }

    public String location() { return location; }

        private String location;


        /** Set a url for the message.
          */
        public void setLocation( String s ) { location = s; }


        private void location( final JsonWriter out ) throws IOException
        {
            if( location == null ) throw new IllegalArgumentException(); // meet contract of Message

            out.name( "location" ).value( location );
            location = null;
        }
        
    public int id() { return id; }
    
        private int id = 0;
        
        /**
         * Set id of the message in the db.
         */
        public void setId( final int _id ) {
            id = _id;
        }
        
        private void id( final JsonWriter out ) throws IOException
        {
            out.name("id").value( id );
            id = 0;
        }



   // - S e r i a l - J i g --------------------------------------------------------------


    public void serialize( final JsonWriter out ) throws IOException
    {
        out.beginObject();
        id( out );
        content( out );
        location( out );
        out.endObject();
    }



}