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/10/30 07:15:37 UTC
svn commit: r589969 - in
/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators:
throttle/ThrottleMediator.java xquery/XQueryMediatorFactory.java
xquery/XQueryMediatorSerializer.java
Author: indika
Date: Mon Oct 29 23:15:36 2007
New Revision: 589969
URL: http://svn.apache.org/viewvc?rev=589969&view=rev
Log:
fixed an issue in throttle mediator- remove static map
Modified:
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/xquery/XQueryMediatorFactory.java
webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorSerializer.java
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?rev=589969&r1=589968&r2=589969&view=diff
==============================================================================
--- 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 Mon Oct 29 23:15:36 2007
@@ -25,6 +25,7 @@
import org.apache.synapse.config.Entry;
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
+import org.apache.axis2.context.ConfigurationContext;
import org.wso2.throttle.*;
import org.wso2.throttle.factory.AccessControllerFactory;
@@ -41,8 +42,7 @@
public class ThrottleMediator extends AbstractMediator {
- /** static map to share all concurrent access controllers */
- public final static Map CONCURRENT_ACCESS_CONTROLLERS = Collections.synchronizedMap(new HashMap());
+ private static final String KEY ="keyOfConcurrentAcessControllers";
/** The key for getting the throttling policy - key refers to a/an [registry] entry */
private String policyKey = null;
/** InLine policy object - XML */
@@ -87,12 +87,27 @@
// for response messages, load the concurrent access controller object
// do this ONLY ONCE - the first time when our iniial reference is null
if (concurrentAccessController == null && id != null) {
- concurrentAccessController =
- (ConcurrentAccessController) CONCURRENT_ACCESS_CONTROLLERS.get(id);
- concurrentLimit = concurrentAccessController.getLimit();
- if (traceOrDebugOn) {
- traceOrDebug(traceOn, "Concurrent access controller for ID : " + id +
- " allows : " + concurrentLimit + " concurrent accesses");
+
+ org.apache.axis2.context.MessageContext axis2MessageContext
+ = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+
+ ConfigurationContext configctx = axis2MessageContext.getConfigurationContext();
+
+ Map accessContollers = (Map) configctx.getProperty(KEY);
+
+ if (accessContollers != null) {
+
+ concurrentAccessController =
+ (ConcurrentAccessController) accessContollers.get(id);
+
+ if (concurrentAccessController != null) {
+
+ concurrentLimit = concurrentAccessController.getLimit();
+ if (traceOrDebugOn) {
+ traceOrDebug(traceOn, "Concurrent access controller for ID : " + id +
+ " allows : " + concurrentLimit + " concurrent accesses");
+ }
+ }
}
}
}
@@ -349,10 +364,20 @@
"Initiating ConcurrentAccessControler for throttle group id : " + id
+ " limit : " + concurrentLimit);
}
+
+ org.apache.axis2.context.MessageContext axis2MessageContext
+ = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+ ConfigurationContext configctx = axis2MessageContext.getConfigurationContext();
+ Map accessContollers = (Map) configctx.getProperty(KEY);
+
+ if(accessContollers == null){
+ accessContollers = new HashMap();
+ configctx.setProperty(KEY,accessContollers);
+ }
if (concurrentAccessController == null) {
- CONCURRENT_ACCESS_CONTROLLERS.remove(id);
+ accessContollers.remove(id);
} else {
- CONCURRENT_ACCESS_CONTROLLERS.put(id, concurrentAccessController);
+ accessContollers.put(id, concurrentAccessController);
}
}
}
Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorFactory.java?rev=589969&r1=589968&r2=589969&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorFactory.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorFactory.java Mon Oct 29 23:15:36 2007
@@ -25,13 +25,18 @@
import org.apache.synapse.Mediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jaxen.JaxenException;
import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
import java.util.Iterator;
+import java.io.StringReader;
import net.sf.saxon.javax.xml.xquery.XQItemType;
@@ -43,10 +48,7 @@
* <dataSource>*
* <property name="string" value="literal"/>*
* </dataSource>
- * <variables>*
- * <basic name="string" type="int" value="literal">*
- * <custom name="string" type ="int" [key="string"] [expression=XPath] />*
- * <variables>
+ * <variable name="string" type="int" value="literal" [key="string"] [expression=XPath] />*
* </xquery>
* </pre>
*/
@@ -123,7 +125,7 @@
if (key != null) {
((MediatorCustomVariable) variable).setRegKey(key.trim());
}
- if (expr != null) {
+ if (expr != null && !"".equals(expr)) {
try {
AXIOMXPath xp = new AXIOMXPath(expr.trim());
OMElementUtils.addNameSpaces(xp, variableOM, log);
Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorSerializer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorSerializer.java?rev=589969&r1=589968&r2=589969&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorSerializer.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediatorSerializer.java Mon Oct 29 23:15:36 2007
@@ -41,10 +41,7 @@
* <dataSource>*
* <property name="string" value="literal"/>*
* </dataSource>
- * <variables>*
- * <basic name="string" type="int" value="literal">*
- * <custom name="string" type ="int" [key="string"] [expression=XPath] />*
- * <variables>
+ * <variable name="string" type="int" value="literal" [key="string"] [expression=XPath] />*
* </xquery>
* </pre>
*/
@@ -121,6 +118,12 @@
type = "FLOAT";
} else if (XQItemType.XQBASETYPE_STRING == varibelType) {
type = "STRING";
+ } else if (XQItemType.XQITEMKIND_DOCUMENT == varibelType) {
+ type = "DOCUMENT";
+ } else if (XQItemType.XQITEMKIND_DOCUMENT_ELEMENT == varibelType) {
+ type = "DOCUMENT_ELEMENT";
+ } else if (XQItemType.XQITEMKIND_ELEMENT == varibelType) {
+ type = "ELEMENT";
} else {
handleException("Unknown Type " + varibelType);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org