001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019:
020: package org.apache.synapse.core;
021:
022: import org.apache.synapse.MessageContext;
023: import org.apache.synapse.mediators.base.SequenceMediator;
024: import org.apache.synapse.endpoints.utils.EndpointDefinition;
025: import org.apache.synapse.statistics.StatisticsCollector;
026:
027: import java.util.concurrent.ExecutorService;
028:
029: /**
030: * The SynapseEnvironment allows access into the the host SOAP engine. It allows
031: * the sending of messages, classloader access etc.
032: */
033: public interface SynapseEnvironment {
034:
035: /**
036: * This method injects a new message into the Synapse engine. This is used by
037: * the underlying SOAP engine to inject messages into Synapse for mediation.
038: * e.g. The SynapseMessageReceiver used by Axis2 invokes this to inject new messages
039: *
040: * @param smc - Synapse MessageContext to be injected
041: * @return boolean true if the message processing should be continued
042: * and false if it should be aborted
043: */
044: public boolean injectMessage(MessageContext smc);
045:
046: /**
047: * This method injects a new message into the Synapse engine for the mediation
048: * by the specified sequence. This is used by custom mediation tasks like splitting message
049: * in EIP mediations. This method will do the mediation asynchronously using a separate
050: * thread from the environment thread pool
051: *
052: * @param smc - Synapse message context to be injected
053: * @param seq - Sequence to be used for mediation
054: */
055: public void injectAsync(MessageContext smc, SequenceMediator seq);
056:
057: /**
058: * This method allows a message to be sent through the underlying SOAP engine. This will
059: * send request messages on (forward), and send the response messages back to the client
060: *
061: * @param endpoint - Endpoint to be used for sending
062: * @param smc - Synapse MessageContext to be sent
063: */
064: public void send(EndpointDefinition endpoint, MessageContext smc);
065:
066: /**
067: * Creates a new Synapse <code>MessageContext</code> instance.
068: *
069: * @return a MessageContext
070: */
071: public MessageContext createMessageContext();
072:
073: /**
074: * This method returns the StatisticsCollector.
075: *
076: * @return Returns the StatisticsCollector
077: */
078: public StatisticsCollector getStatisticsCollector();
079:
080: /**
081: * To set the StatisticsCollector to the environment
082: *
083: * @param statisticsCollector - StatisticsCollector to be set
084: */
085: public void setStatisticsCollector(
086: StatisticsCollector statisticsCollector);
087:
088: /**
089: * This is used by anyone who needs access to a SynapseThreadPool.
090: * It offers the ability to start work.
091: *
092: * @return Returns the ExecutorService
093: */
094: public ExecutorService getExecutorService();
095:
096: /**
097: * Has the Synapse Environment properly initialized?
098: * @return true if the environment is ready for processing
099: */
100: public boolean isInitialized();
101:
102: /**
103: * Set the environment as ready for message processing
104: * @param state true means ready for processing
105: */
106: public void setInitialized(boolean state);
107: }
|