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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]