/* * Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. 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.wso2.carbon.mediator.bean; import org.apache.axiom.om.OMAttribute; import org.apache.axiom.om.OMElement; import org.apache.commons.logging.LogFactory; import org.apache.synapse.SynapseException; import org.apache.synapse.config.xml.SynapseXPathFactory; import org.apache.synapse.config.xml.SynapseXPathSerializer; import org.apache.synapse.config.xml.ValueFactory; import org.apache.synapse.config.xml.ValueSerializer; import org.apache.synapse.config.xml.XMLConfigConstants; import org.apache.synapse.mediators.Value; import org.apache.synapse.mediators.bean.BeanConstants; import org.apache.synapse.mediators.bean.enterprise.EJBConstants; import org.apache.synapse.util.xpath.SynapseXPath; import org.jaxen.JaxenException; import org.wso2.carbon.mediator.service.MediatorException; import org.wso2.carbon.mediator.service.ui.AbstractMediator; import org.wso2.carbon.mediator.service.util.MediatorProperty; import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction; import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.Iterator; import java.util.List; //<ejb class="org.test.ejb.StoreRegister" beanstalk="jack" method="getClosestStore" target="loc_id" jndiName="StoreRegsiterBean/remote"> //<args> // <arg value="{get-property('loc')}"/> //</args> //</ejb> public class BeanMediator extends AbstractMediator { private static final QName BEAN_Q = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "bean"); private static final QName ATT_CLASS = new QName("class"); private static final QName ATT_ACTION = new QName("action"); private static final QName ATT_VAR = new QName("var"); private static final QName ATT_PROPERTY = new QName("property"); private static final QName ATT_VALUE = new QName("value"); private static final QName ATT_TARGET = new QName("target"); private String clazz; private String action; private String var; private String property; private Value value; private Value target; public String getTagLocalName() { return "bean"; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getVar() { return var; } public void setVar(String var) { this.var = var; } public String getProperty() { return property; } public void setProperty(String property) { this.property = property; } public Value getValue() { return value; } public void setValue(Value value) { this.value = value; } public Value getTarget() { return target; } public void setTarget(Value target) { this.target = target; } public OMElement serialize(OMElement parent) { OMElement beanElem = fac.createOMElement(BEAN_Q); if(clazz != null && !clazz.isEmpty()) { OMAttribute clazzAtt = fac.createOMAttribute(BeanConstants.CLASS , nullNS , clazz); beanElem.addAttribute(clazzAtt); }if(action != null && !action.isEmpty()) { OMAttribute beanstalkAtt = fac.createOMAttribute(BeanConstants.ACTION , nullNS , action); beanElem.addAttribute(beanstalkAtt); } if(var != null && !var.isEmpty()) { OMAttribute methodAtt = fac.createOMAttribute(BeanConstants.VAR , nullNS , var); beanElem.addAttribute(methodAtt); } if(property != null && !property.isEmpty()) { OMAttribute targetAtt = fac.createOMAttribute(BeanConstants.PROPERTY, nullNS , property); beanElem.addAttribute(targetAtt); } if(value != null) { new ValueSerializer().serializeValue(value, BeanConstants.VALUE, beanElem); } if(target != null) { new ValueSerializer().serializeValue(target, BeanConstants.TARGET, beanElem); } if (parent != null) { parent.addChild(beanElem); } return beanElem; } public void build(OMElement elem) { // after successfully creating the mediator // set its common attributes such as tracing etc processAuditStatus(this, elem); ValueFactory valueFactory = new ValueFactory(); OMAttribute clazz = elem.getAttribute(ATT_CLASS); if(clazz !=null){ this.clazz = clazz.getAttributeValue(); } OMAttribute actionElm = elem.getAttribute(ATT_ACTION); if(actionElm != null){ this.action= actionElm.getAttributeValue(); } OMAttribute varElm = elem.getAttribute(ATT_VAR); if(varElm != null){ this.var = varElm.getAttributeValue(); } OMAttribute propertyElm = elem.getAttribute(ATT_PROPERTY); if(propertyElm != null){ this.property = propertyElm.getAttributeValue(); } OMAttribute value = elem.getAttribute(ATT_VALUE); if(value != null){ Value beanId = valueFactory.createValue(BeanConstants.VALUE, elem); this.value=beanId; } OMAttribute targetElm = elem.getAttribute(ATT_TARGET); if(targetElm != null){ Value target = valueFactory.createValue(BeanConstants.TARGET, elem); this.target=target; } } private void handleException(String msg) { LogFactory.getLog(this.getClass()).error(msg); throw new SynapseException(msg); } }