You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by in...@apache.org on 2007/05/11 10:53:16 UTC
svn commit: r537133 - in /webservices/synapse/trunk/java/modules:
core/src/main/java/org/apache/synapse/config/xml/
extensions/src/main/java/org/apache/synapse/mediators/throttle/
Author: indika
Date: Fri May 11 01:53:15 2007
New Revision: 537133
URL: http://svn.apache.org/viewvc?view=rev&rev=537133
Log:
Add capability to route message through the sequences instead of return true and false when access deny or access accept according to the throttle
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java
Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java?view=diff&rev=537133&r1=537132&r2=537133
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java Fri May 11 01:53:15 2007
@@ -98,4 +98,6 @@
String DISPATCHER_ELEMENT = "dispatcher";
QName ATT_KEY_Q = new QName(NULL_NAMESPACE, "key");
QName ATT_ADDRESS_Q = new QName(NULL_NAMESPACE, "address");
+ String ONREJECT = "onReject";
+ String ONACCEPT = "onAccept";
}
Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java?view=diff&rev=537133&r1=537132&r2=537133
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java Fri May 11 01:53:15 2007
@@ -25,6 +25,7 @@
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseException;
import org.apache.synapse.Constants;
+import org.apache.synapse.Mediator;
import org.apache.synapse.config.Entry;
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
@@ -48,6 +49,14 @@
private OMElement inLinePolicy = null;
/** The throttle - hold runtime + configuration data of throttle */
Throttle throttle = null;
+ /** The reference to the sequence which will execute when access deny*/
+ private String onReject = null;
+ /** The in-line sequence which will execute when access deny*/
+ private Mediator onRejectMediator = null;
+ /** The reference to the sequence which will execute when access accept */
+ private String onAccept = null;
+ /** The in-line sequence which will execute when access accept */
+ private Mediator onAcceptMediator = null;
public boolean mediate(MessageContext synCtx) {
boolean shouldTrace = shouldTrace(synCtx.getTracingState());
@@ -74,10 +83,9 @@
* @return boolean which indicate whether this caller can or not access
*/
protected boolean canAccess(MessageContext synContext, boolean shouldTrace) {
-
+ boolean canAccess = true;
if (throttle == null) {
- log.info("Can not find a throttle");
- return true;
+ log.debug("Can not find a throttle");
}
org.apache.axis2.context.MessageContext axis2MessageContext
= ((Axis2MessageContext) synContext).getAxis2MessageContext();
@@ -89,7 +97,7 @@
trace.trace("The IP Address of the caller is cannnot find- The Throttling will" +
"not occur");
}
- log.info("The IP address of the caller can not find - Currently only support caller-IP base"
+ log.debug("The IP address of the caller can not find - Currently only support caller-IP base"
+ "access control - Thottling will not happen ");
return true;
} else {
@@ -99,27 +107,52 @@
ThrottleContext throttleContext
= throttle.getThrottleContext(ThrottleConstants.IP_BASED_THROTTLE_KEY);
if (throttleContext == null) {
- log.info("Can not find a configuartion for the IP Based Throttle");
+ log.debug("Can not find a configuartion for the IP Based Throttle");
return true;
}
try {
AccessController accessControler = AccessControllerFactory.createAccessControler(
ThrottleConstants.IP_BASE);
- boolean canAccess = accessControler.canAccess(throttleContext, remoteIP);
+ canAccess = accessControler.canAccess(throttleContext, remoteIP);
if (!canAccess) {
String msg = "Access has currently been denied by" +
" the IP_BASE throttle for the IP :\t" + remoteIP;
if (shouldTrace) {
trace.trace(msg);
}
- log.info(msg);
+ log.debug(msg);
}
- return canAccess;
}
catch (ThrottleException e) {
- handleException("Error occur during throttling ",e);
+ handleException("Error occur during throttling ", e);
+ }
+ }
+ if (canAccess) {
+ if (onAccept != null) {
+ Mediator mediator = synContext.getSequence(onAccept);
+ if (mediator != null) {
+ return mediator.mediate(synContext);
+ } else {
+ return true;
+ }
+ } else if (onAcceptMediator != null) {
+ return onAcceptMediator.mediate(synContext);
+ } else {
return true;
}
+ } else {
+ if (onReject != null) {
+ Mediator mediator = synContext.getSequence(onReject);
+ if (mediator != null) {
+ return mediator.mediate(synContext);
+ } else {
+ return false;
+ }
+ } else if (onRejectMediator != null) {
+ return onRejectMediator.mediate(synContext);
+ } else {
+ return false;
+ }
}
}
@@ -186,7 +219,7 @@
*/
protected void createThrottleMetaData(OMElement policyOmElement) {
try {
- log.info("Creating a new throttle configuration by parsing the Policy");
+ log.debug("Creating a new throttle configuration by parsing the Policy");
throttle = ThrottlePolicyProcessor
.processPoclicy(PolicyEngine.getPolicy(policyOmElement));
}
@@ -201,7 +234,7 @@
}
private void handleException(String msg, Exception e) {
- log.info(msg);
+ log.debug(msg);
log.error(e);
throw new SynapseException(msg);
}
@@ -244,5 +277,37 @@
*/
public void setInLinePolicy(OMElement inLinePolicy) {
this.inLinePolicy = inLinePolicy;
+ }
+
+ public String getOnReject() {
+ return onReject;
+ }
+
+ public void setOnReject(String onReject) {
+ this.onReject = onReject;
+ }
+
+ public Mediator getOnRejectMediator() {
+ return onRejectMediator;
+ }
+
+ public void setOnRejectMediator(Mediator onRejectMediator) {
+ this.onRejectMediator = onRejectMediator;
+ }
+
+ public String getOnAccept() {
+ return onAccept;
+ }
+
+ public void setOnAccept(String onAccept) {
+ this.onAccept = onAccept;
+ }
+
+ public Mediator getOnAcceptMediator() {
+ return onAcceptMediator;
+ }
+
+ public void setOnAcceptMediator(Mediator onAcceptMediator) {
+ this.onAcceptMediator = onAcceptMediator;
}
}
Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java?view=diff&rev=537133&r1=537132&r2=537133
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java Fri May 11 01:53:15 2007
@@ -24,6 +24,7 @@
import org.apache.synapse.SynapseException;
import org.apache.synapse.config.xml.AbstractMediatorFactory;
import org.apache.synapse.config.xml.Constants;
+import org.apache.synapse.config.xml.SequenceMediatorFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.xml.namespace.QName;
@@ -69,6 +70,37 @@
// after successfully creating the mediator
// set its common attributes such as tracing etc
initMediator(throttleMediator,elem);
+ SequenceMediatorFactory mediatorFactory = new SequenceMediatorFactory();
+ OMAttribute onReject = elem.getAttribute(
+ new QName(Constants.NULL_NAMESPACE, Constants.ONREJECT));
+ if (onReject != null) {
+ String onRejectValue = onReject.getAttributeValue();
+ if (onRejectValue != null) {
+ throttleMediator.setOnReject(onRejectValue.trim());
+ }
+ } else {
+ OMElement onRejectMediatorElement = elem.getFirstChildWithName(
+ new QName(Constants.SYNAPSE_NAMESPACE, Constants.ONREJECT));
+ if (onRejectMediatorElement != null) {
+ throttleMediator.setOnRejectMediator(mediatorFactory.createAnonymousSequence(
+ onRejectMediatorElement));
+ }
+ }
+ OMAttribute onAccept = elem.getAttribute(
+ new QName(Constants.NULL_NAMESPACE, Constants.ONACCEPT));
+ if (onAccept != null) {
+ String onAcceptValue = onAccept.getAttributeValue();
+ if (onAcceptValue != null) {
+ throttleMediator.setOnAccept(onAcceptValue);
+ }
+ } else {
+ OMElement onAcceptMediatorElement = elem.getFirstChildWithName(
+ new QName(Constants.SYNAPSE_NAMESPACE, Constants.ONACCEPT));
+ if (onAcceptMediatorElement != null) {
+ throttleMediator.setOnAcceptMediator(mediatorFactory.createAnonymousSequence(
+ onAcceptMediatorElement));
+ }
+ }
return throttleMediator;
}
Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java?view=diff&rev=537133&r1=537132&r2=537133
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java Fri May 11 01:53:15 2007
@@ -25,8 +25,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.Mediator;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.mediators.base.SequenceMediator;
import org.apache.synapse.config.xml.AbstractMediatorSerializer;
import org.apache.synapse.config.xml.Constants;
+import org.apache.synapse.config.xml.SequenceMediatorSerializer;
/**
* The Serializer for Throttle Mediator saving throttle instance
@@ -58,7 +60,33 @@
throttle.addChild(policy);
}
}
- finalizeSerialization(throttle, throttleMediator);
+ finalizeSerialization(throttle, throttleMediator);
+ String onReject = throttleMediator.getOnReject();
+ if (onReject != null) {
+ throttle.addAttribute(fac.createOMAttribute(Constants.ONREJECT, nullNS, onReject));
+ } else {
+ Mediator mediator = throttleMediator.getOnRejectMediator();
+ SequenceMediatorSerializer serializer = new SequenceMediatorSerializer();
+ if (mediator != null && mediator instanceof SequenceMediator) {
+ OMElement element = serializer.serializeAnonymousSequence(null,
+ (SequenceMediator) mediator);
+ element.setLocalName(Constants.ONREJECT);
+ throttle.addChild(element);
+ }
+ }
+ String onAccept = throttleMediator.getOnAccept();
+ if (onAccept != null) {
+ throttle.addAttribute(fac.createOMAttribute(Constants.ONACCEPT, nullNS, onAccept));
+ } else {
+ Mediator mediator = throttleMediator.getOnAcceptMediator();
+ SequenceMediatorSerializer serializer = new SequenceMediatorSerializer();
+ if (mediator != null && mediator instanceof SequenceMediator) {
+ OMElement element = serializer.serializeAnonymousSequence(null,
+ (SequenceMediator) mediator);
+ element.setLocalName(Constants.ONACCEPT);
+ throttle.addChild(element);
+ }
+ }
if (parent != null) {
parent.addChild(throttle);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org