com.vii.brillien.kernel.axiom.transport.Communication Maven / Gradle / Ivy
/*
* Copyright (c) 2011 Imre Fazekas.
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of the Brillien nor the names of its
* terms and concepts may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package com.vii.brillien.kernel.axiom.transport;
import com.vii.brillien.kernel.BrillienException;
import java.util.Map;
/**
* This class defines all functionality needed by a communication defined by Powerobject model.
* It realizes a wrapper around a message extending its functionality with Type management.
*/
public interface Communication extends Message {
/**
* According to the specification of Powerobject model, these constants defines the basic types of communication.
*/
final int TYPE_UNDEFINED = -1;
final int TYPE_GET = 1;
final int TYPE_AGET = 2;
final int TYPE_SET = 3;
final int TYPE_DELEGATED_GET = 4;
final int TYPE_RESULT = 5;
final int TYPE_ERROR = 6;
/**
* Paramters of the message
*/
Object[] acquireParameters();
/**
* Paramters of the message parsed as json messages.
* String will be parsed. Exception will be thrown if the parsing process fails.
*/
Object[] acquireParameters( Class[] types ) throws BrillienException;
/**
* Sets the parameters of the message
* Objects will be converted to json messages. Exception will be thrown if the conversion process fails.
*/
void giveParameters(Object... parameters) throws BrillienException;
/**
* Sets the response to this message. A Json content is supposed.
*/
void giveResponse(Object response) throws BrillienException;
/**
* Prepares the message for response sending. This includes "to" and "from" information replacement and message type will be set to "Result" type.
*/
void prepareForResponse() throws BrillienException;
/**
* Prepares the message for response sending. This includes "to" and "from" information replacement and message type will be set to "Result" type.
*/
void prepareForResponse( Object response ) throws BrillienException;
/**
* Prepares the message for error message sending. This includes "to" and "from" information replacement and message type will be set to "Result" type.
*/
void prepareForError( String message ) throws BrillienException;
/**
* Resposne object if exists. The response will be parsed as a Json content. This method should be used if simple types response is expected like String, boolean, etc.
*/
T acquireResponse( ) throws BrillienException;
/**
* Resposne object if exists. The response will be parsed as a Json content.
*/
T acquireResponse( Class type ) throws BrillienException;
/**
* Resposne object if exists. The response will be parsed as a Json content.
*/
T acquireResponse( Class type, Map typeHints ) throws BrillienException;
/**
* Resposne object if exists. The response will be parsed as a Json content.
*/
T acquireResponse( Class type, String typeHint, Class hintClass ) throws BrillienException;
/**
* Processes an incoming message
*/
void processRepresentation(M message) throws BrillienException;
/**
* Compose a message from this Communication object
*/
M createRepresentation() throws BrillienException;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy