blob: 81d797147b1c09bf609dcf464225ede34adccb98 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.apache.synapse;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.RelatesTo;
import org.apache.synapse.config.SynapseConfiguration;
import org.apache.synapse.core.SynapseEnvironment;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.commons.logging.Log;
import java.util.Set;
import java.util.Stack;
import java.util.Map;
/**
* The Synapse Message Context is available to all mediators through which it flows. It
* allows one to call to the underlying SynapseEnvironment (i.e. the SOAP engine
* - such as Axis2) where required. It also allows one to access the current
* SynapseConfiguration. Additionally it holds per message properties (i.e. local
* properties valid for the lifetime of the message), and the current SOAPEnvelope
*/
public interface MessageContext {
/**
* Get a reference to the current SynapseConfiguration
*
* @return the current synapse configuration
*/
public SynapseConfiguration getConfiguration();
/**
* Set or replace the Synapse Configuration instance to be used. May be used to
* programatically change the configuration at runtime etc.
*
* @param cfg The new synapse configuration instance
*/
public void setConfiguration(SynapseConfiguration cfg);
/**
* Returns a reference to the host Synapse Environment
* @return the Synapse Environment
*/
public SynapseEnvironment getEnvironment();
/**
* Sets the SynapseEnvironment reference to this context
* @param se the reference to the Synapse Environment
*/
public void setEnvironment(SynapseEnvironment se);
/**
* Return all the entries which are in the MessageContext. This does not represent
* all the declared entries in the configuration, rather only the entries that the
* context has already used. This will not lookup for the entries in the Configuration.
* @return the set of local entries in the context
*/
public Map<String, Object> getContextEntries();
/**
* Sets the entries to the current context and not to the configuration. This can be
* used to forcibly override an existing set of resources in the configuration, because
* the resource lookup will look for the context first. But this only sets the entries
* to the current context
* @param entries the set of local entries to be set
*/
public void setContextEntries(Map<String, Object> entries);
/**
* Return the main sequence from the configuration, or the local message context
* This method looks up for the sequence named Constants.MAIN_SEQUENCE_KEY from
* the local message context to make this look up transactional - i.e. a request and
* response message pair will not see a difference in the main sequence if the main
* sequence was dynamic and changed in between at the registry
* @return the main sequence to be used for mediation
*/
public Mediator getMainSequence();
/**
* Return the fault sequence from the configuration, or the local message context
* This method looks up for the sequence named Constants.FAULT_SEQUENCE_KEY from
* the local message context to make this look up transactional - i.e. a request and
* response message pair will not see a difference in the fault sequence if the fault
* sequence was dynamic and changed in between at the registry
* @return the fault sequence to be used for mediation
*/
public Mediator getFaultSequence();
/**
* Return the sequence with the given key from the configuration, or the local message
* context. This method looks up for the sequence with the given key from the local
* message context to make this look up transactional - i.e. a request and response
* message pair will not see a difference in the said sequence if it was dynamic and
* changed in between at the registry
* @param key the sequence key to be looked up
* @return the sequence mediator mapped to the key
*/
public Mediator getSequence(String key);
/**
* Return the Sequence Template with the given key from the configuration, or the local message
* context. This method looks up for the Template with the given key from the local
* message context to make this look up transactional - i.e. a request and response
* message pair will not see a difference in the said sequence if it was dynamic and
* changed in between at the registry
* @param key the sequence key to be looked up
* @return the Template mediator mapped to the key
*/
public Mediator getSequenceTemplate(String key);
/**
* Return the endpoint with the given key from the configuration, or the local message
* context. This method looks up for the endpoint with the given key from the local
* message context to make this look up transactional - i.e. a request and response
* message pair will not see a difference in the said endpoint if it was dynamic and
* changed in between at the registry
* @param key the endpoint key to be looked up
* @return the endpoint mapped to the key
*/
public Endpoint getEndpoint(String key);
/**
* Get the value of a custom (local) property set on the message instance
* @param key key to look up property
* @return value for the given key
*/
public Object getProperty(String key);
/**
* Get the value of a property set on the message instance, from the local registry
* or the remote registry - by cascading through
* @param key key to look up property
* @return value for the given key
*/
public Object getEntry(String key);
/**
* Get the value of a property set on the message instance or from the local registry
*
* @param key key to look up property
* @return value for the given key
*/
public Object getLocalEntry(String key);
/**
* Set a custom (local) property with the given name on the message instance
* @param key key to be used
* @param value value to be saved
*/
public void setProperty(String key, Object value);
/**
* Returns the Set of keys over the properties on this message context
* @return a Set of keys over message properties
*/
public Set getPropertyKeySet();
/**
* Get the SOAP envelope of this message
* @return the SOAP envelope of the message
*/
public SOAPEnvelope getEnvelope();
/**
* Sets the given envelope as the current SOAPEnvelope for this message
* @param envelope the envelope to be set
* @throws org.apache.axis2.AxisFault on exception
*/
public void setEnvelope(SOAPEnvelope envelope) throws AxisFault;
// --- SOAP Message related methods ------
/**
* Get the faultTo EPR if available
* @return FaultTo epr if available
*/
public EndpointReference getFaultTo();
/**
* Set the faultTo EPR
* @param reference epr representing the FaultTo address
*/
public void setFaultTo(EndpointReference reference);
/**
* Get the from EPR if available
* @return From epr if available
*/
public EndpointReference getFrom();
/**
* Set the from EPR
* @param reference epr representing the From address
*/
public void setFrom(EndpointReference reference);
/**
* Get the message id if available
* @return message id if available
*/
public String getMessageID();
/**
* Set the message id
* @param string message id to be set
*/
public void setMessageID(String string);
/**
* Get the relatesTo of this message
* @return RelatesTo of the message if available
*/
public RelatesTo getRelatesTo();
/**
* Sets the relatesTo references for this message
* @param reference the relatesTo references array
*/
public void setRelatesTo(RelatesTo[] reference);
/**
* Get the replyTo EPR if available
* @return ReplyTo epr of the message if available
*/
public EndpointReference getReplyTo();
/**
* Set the replyTo EPR
* @param reference epr representing the ReplyTo address
*/
public void setReplyTo(EndpointReference reference);
/**
* Get the To EPR
* @return To epr of the message if available
*/
public EndpointReference getTo();
/**
* Set the To EPR
* @param reference the To EPR
*/
public void setTo(EndpointReference reference);
/**
* Sets the WSAAction
* @param actionURI the WSAAction
*/
public void setWSAAction(String actionURI);
/**
* Returns the WSAAction
* @return the WSAAction
*/
public String getWSAAction();
/**
* Returns the SOAPAction of the message
* @return the SOAPAction
*/
public String getSoapAction();
/**
* Set the SOAPAction
* @param string the SOAP Action
*/
public void setSoapAction(String string);
/**
* Set the message
* @param messageID message id to be set
*/
public void setWSAMessageID(String messageID);
/**
* Gets the message name
* @return the WSA MessageID
*/
public String getWSAMessageID();
/**
* If this message using MTOM?
* @return true if using MTOM
*/
public boolean isDoingMTOM();
/**
* If this message using SWA?
* @return true if using SWA
*/
public boolean isDoingSWA();
/**
* Marks as using MTOM
* @param b true to mark as using MTOM
*/
public void setDoingMTOM(boolean b);
/**
* Marks as using SWA
* @param b true to mark as using SWA
*/
public void setDoingSWA(boolean b);
/**
* Is this message over POX?
* @return true if over POX
*/
public boolean isDoingPOX();
/**
* Marks this message as over POX
* @param b true to mark as POX
*/
public void setDoingPOX(boolean b);
/**
* Is this message over GET?
* @return true if over GET
*/
public boolean isDoingGET();
/**
* Marks this message as over REST/GET
* @param b true to mark as REST/GET
*/
public void setDoingGET(boolean b);
/**
* Is this message a SOAP 1.1 message?
* @return true if this is a SOAP 1.1 message
*/
public boolean isSOAP11();
/**
* Mark this message as a response or not.
* @see org.apache.synapse.MessageContext#isResponse()
* @param b true to set this as a response
*/
public void setResponse(boolean b);
/**
* Is this message a response to a synchronous message sent out through Synapse?
* @return true if this message is a response message
*/
public boolean isResponse();
/**
* Marks this message as a fault response
* @see org.apache.synapse.MessageContext#isFaultResponse()
* @param b true to mark this as a fault response
*/
public void setFaultResponse(boolean b);
/**
* Is this message a response to a fault message?
* @return true if this is a response to a fault message
*/
public boolean isFaultResponse();
/**
* This is used to check whether the tracing should be enabled on the current mediator or not
* @return indicate whether tracing is on, off or unset
*/
public int getTracingState();
/**
* This is used to set the value of tracing enable variable
* @param tracingState Set whether the tracing is enabled or not
*/
public void setTracingState(int tracingState);
public Stack<FaultHandler> getFaultStack();
public void pushFaultHandler(FaultHandler fault);
/**
* Return the service level Log for this message context or null
* @return the service level Log for the message
*/
public Log getServiceLog();
}