001    /*
002      GRANITE DATA SERVICES
003      Copyright (C) 2012 GRANITE DATA SERVICES S.A.S.
004    
005      This file is part of Granite Data Services.
006    
007      Granite Data Services is free software; you can redistribute it and/or modify
008      it under the terms of the GNU Library General Public License as published by
009      the Free Software Foundation; either version 2 of the License, or (at your
010      option) any later version.
011    
012      Granite Data Services is distributed in the hope that it will be useful, but
013      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014      FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015      for more details.
016    
017      You should have received a copy of the GNU Library General Public License
018      along with this library; if not, see <http://www.gnu.org/licenses/>.
019    */
020    
021    package org.granite.client.messaging.transport;
022    
023    import java.io.IOException;
024    import java.io.OutputStream;
025    
026    import org.granite.client.messaging.codec.MessagingCodec;
027    
028    /**
029     * @author Franck WOLFF
030     */
031    public class DefaultTransportMessage<M> implements TransportMessage {
032    
033            private final String id;
034            private final boolean connect;
035            private final String clientId;
036            private final String sessionId;
037            private final M message;
038            private final MessagingCodec<M> codec;
039    
040            public DefaultTransportMessage(String id, boolean connect, String clientId, String sessionId, M message, MessagingCodec<M> codec) {
041                    this.id = id;
042                    this.connect = connect;
043                    this.clientId = clientId;
044                    this.sessionId = sessionId;
045                    this.message = message;
046                    this.codec = codec;
047            }
048    
049            public String getId() {
050                    return id;
051            }
052            
053            public boolean isConnect() {
054                    return connect;
055            }
056            
057            public String getClientId() {
058                    return clientId;
059            }
060            
061            public String getSessionId() {
062                    return sessionId;
063            }
064    
065            public String getContentType() {
066                    return codec.getContentType();
067            }
068    
069            @Override
070            public void encode(OutputStream os) throws IOException {
071                    codec.encode(message, os);
072            }
073    }