/* * 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.store; 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.XMLConfigConstants; 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.xml.namespace.QName; import java.util.ArrayList; import java.util.List; public class MessageStoreMediator extends AbstractMediator { private static final QName STORE_Q = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "store"); private static final String ATT_MESSAGE_STORE = "messageStore"; private static final String ATT_SEQUENCE = "sequence"; private static final QName ATT_MESSAGE_STORE_Q = new QName("messageStore"); private static final QName ATT_SEQUENCE_Q = new QName("sequence"); private String messageStoreName; private String sequence; private String name; public String getTagLocalName() { return "store"; } public String getMessageStoreName() { return messageStoreName; } public void setMessageStoreName(String messageStoreName) { this.messageStoreName = messageStoreName; } public String getSequence() { return sequence; } public void setSequence(String sequence) { if ("".equalsIgnoreCase(sequence)) { sequence = null; } else { this.sequence = sequence; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public OMElement serialize(OMElement parent) { OMElement storeElem = fac.createOMElement(STORE_Q); if(name != null) { OMAttribute nameAtt = fac.createOMAttribute("name" , nullNS , name); storeElem.addAttribute(nameAtt); } //In normal operations messageStoreName can't be null //But we do a null check here since in run time there can be manuel modifications if(messageStoreName != null ) { OMAttribute msName = fac.createOMAttribute(ATT_MESSAGE_STORE ,nullNS,messageStoreName); storeElem.addAttribute(msName); } else { handleException("Can't serialize MessageStore Mediator message store is null "); } // sequence is an optional parameter if(sequence != null) { OMAttribute sequenceAtt = fac.createOMAttribute(ATT_SEQUENCE , nullNS ,sequence); storeElem.addAttribute(sequenceAtt); } if (parent != null) { parent.addChild(storeElem); } return storeElem; } public void build(OMElement elem) { // after successfully creating the mediator // set its common attributes such as tracing etc processAuditStatus(this, elem); OMAttribute msName = elem.getAttribute(ATT_MESSAGE_STORE_Q); if(msName == null) { String msg = "Name of the Message Store name is a required attribute"; throw new MediatorException(msg); } this.messageStoreName = msName.getAttributeValue(); OMAttribute sqName = elem.getAttribute(ATT_SEQUENCE_Q); if(sqName != null) { this.sequence = sqName.getAttributeValue(); } } private void handleException(String msg) { LogFactory.getLog(this.getClass()).error(msg); throw new SynapseException(msg); } }