/* * 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.entitlement; import org.apache.axiom.om.OMAttribute; import org.apache.axiom.om.OMElement; import org.apache.synapse.config.xml.XMLConfigConstants; import org.wso2.carbon.mediator.service.MediatorException; import org.wso2.carbon.mediator.service.ui.AbstractListMediator; import org.wso2.carbon.mediator.service.ui.Mediator; import javax.xml.namespace.QName; public class EntitlementMediator extends AbstractListMediator { private String remoteServiceUserName; private String remoteServicePassword; private String remoteServiceUrl; private String callbackClass; private String thriftHost; private String thriftPort; private String client; private static final QName PROP_NAME_SERVICE_EPR = new QName("remoteServiceUrl"); private static final QName PROP_NAME_USER = new QName("remoteServiceUserName"); private static final QName PROP_NAME_PASSWORD = new QName("remoteServicePassword"); private static final QName PROP_NAME_CALLBACK_CLASS = new QName("callbackClass"); private static final QName PROP_NAME_THRIFT_HOST = new QName("thriftHost"); private static final QName PROP_NAME_THRIFT_PORT = new QName("thriftPort"); private static final QName PROP_NAME_CLIENT_CLASS = new QName("client"); private static final String ADVICE = "advice"; private static final String OBLIGATIONS = "obligations"; private String onRejectSeqKey = null; private String onAcceptSeqKey = null; private String adviceSeqKey = null; private String obligationsSeqKey = null; public EntitlementMediator() { addChild(new OnAcceptMediator()); addChild(new OnRejectMediator()); addChild(new ObligationsMediator()); addChild(new AdviceMediator()); } /** * {@inheritDoc} */ public OMElement serialize(OMElement parent) { OMElement entitlementService = fac.createOMElement("entitlementService", synNS); if (remoteServiceUrl != null) { entitlementService.addAttribute(fac.createOMAttribute("remoteServiceUrl", nullNS, remoteServiceUrl)); } else { throw new MediatorException( "Invalid Entitlement mediator.Entitlement service epr required"); } if (remoteServiceUserName != null) { entitlementService.addAttribute(fac.createOMAttribute("remoteServiceUserName", nullNS, remoteServiceUserName)); } else { throw new MediatorException( "Invalid Entitlement mediator. Remote service user name required"); } if (remoteServicePassword != null) { entitlementService.addAttribute(fac.createOMAttribute("remoteServicePassword", nullNS, remoteServicePassword)); } else { throw new MediatorException( "Invalid Entitlement mediator. Remote service password required"); } if (callbackClass != null && !"".equalsIgnoreCase(callbackClass)) { entitlementService.addAttribute(fac.createOMAttribute("callbackClass", nullNS, callbackClass)); } if (client != null && !"".equalsIgnoreCase(client)) { entitlementService.addAttribute(fac.createOMAttribute("client", nullNS, client)); } if (thriftHost != null && !"".equalsIgnoreCase(thriftHost)) { entitlementService.addAttribute(fac.createOMAttribute("thriftHost", nullNS, thriftHost)); } if (thriftPort != null && !"".equalsIgnoreCase(thriftPort)) { entitlementService.addAttribute(fac.createOMAttribute("thriftPort", nullNS, thriftPort)); } if (onRejectSeqKey != null) { entitlementService.addAttribute(fac.createOMAttribute(XMLConfigConstants.ONREJECT, nullNS, onRejectSeqKey)); } else { for (Mediator m : getList()) { if (m instanceof OnRejectMediator) { m.serialize(entitlementService); } } } if (onAcceptSeqKey != null) { entitlementService.addAttribute(fac.createOMAttribute(XMLConfigConstants.ONACCEPT, nullNS, onAcceptSeqKey)); } else { for (Mediator m : getList()) { if (m instanceof OnAcceptMediator) { m.serialize(entitlementService); } } } if (adviceSeqKey != null) { entitlementService.addAttribute(fac.createOMAttribute(ADVICE, nullNS, adviceSeqKey)); } else { for (Mediator m : getList()) { if (m instanceof AdviceMediator) { m.serialize(entitlementService); } } } if (obligationsSeqKey != null) { entitlementService.addAttribute(fac.createOMAttribute(OBLIGATIONS, nullNS, obligationsSeqKey)); } else { for (Mediator m : getList()) { if (m instanceof ObligationsMediator) { m.serialize(entitlementService); } } } saveTracingState(entitlementService, this); if (parent != null) { parent.addChild(entitlementService); } return entitlementService; } /** * {@inheritDoc} */ public void build(OMElement elem) { getList().clear(); OMAttribute attRemoteServiceUri = elem.getAttribute(PROP_NAME_SERVICE_EPR); OMAttribute attRemoteServiceUserName = elem.getAttribute(PROP_NAME_USER); OMAttribute attRemoteServicePassword = elem.getAttribute(PROP_NAME_PASSWORD); OMAttribute attCallbackClass = elem.getAttribute(PROP_NAME_CALLBACK_CLASS); OMAttribute attThriftHost = elem.getAttribute(PROP_NAME_THRIFT_HOST); OMAttribute attThriftPort = elem.getAttribute(PROP_NAME_THRIFT_PORT); OMAttribute attClient = elem.getAttribute(PROP_NAME_CLIENT_CLASS); this.onAcceptSeqKey = null; this.onRejectSeqKey = null; this.adviceSeqKey = null; this.obligationsSeqKey = null; if (attRemoteServiceUri != null) { remoteServiceUrl = attRemoteServiceUri.getAttributeValue(); } else { throw new MediatorException( "The 'remoteServiceUrl' attribute is required for the Entitlement mediator"); } if (attRemoteServiceUserName != null) { remoteServiceUserName = attRemoteServiceUserName.getAttributeValue(); } else { throw new MediatorException( "The 'remoteServiceUserName' attribute is required for the Entitlement mediator"); } if (attRemoteServicePassword != null) { remoteServicePassword = attRemoteServicePassword.getAttributeValue(); } else { throw new MediatorException( "The 'remoteServicePassword' attribute is required for the Entitlement mediator"); } if (attCallbackClass != null) { callbackClass = attCallbackClass.getAttributeValue(); } if (attClient != null) { client = attClient.getAttributeValue(); } if (attThriftHost != null) { thriftHost = attThriftHost.getAttributeValue(); } if (attThriftPort != null) { thriftPort = attThriftPort.getAttributeValue(); } OMAttribute onReject = elem.getAttribute( new QName(XMLConfigConstants.NULL_NAMESPACE, XMLConfigConstants.ONREJECT)); if (onReject != null) { String onRejectValue = onReject.getAttributeValue(); if (onRejectValue != null) { onRejectSeqKey = onRejectValue.trim(); } } else { OMElement onRejectMediatorElement = elem.getFirstChildWithName( new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, XMLConfigConstants.ONREJECT)); if (onRejectMediatorElement != null) { OnRejectMediator onRejectMediator = new OnRejectMediator(); onRejectMediator.build(onRejectMediatorElement); addChild(onRejectMediator); } } OMAttribute onAccept = elem.getAttribute( new QName(XMLConfigConstants.NULL_NAMESPACE, XMLConfigConstants.ONACCEPT)); if (onAccept != null) { String onAcceptValue = onAccept.getAttributeValue(); if (onAcceptValue != null) { onAcceptSeqKey = onAcceptValue; } } else { OMElement onAcceptMediatorElement = elem.getFirstChildWithName( new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, XMLConfigConstants.ONACCEPT)); if (onAcceptMediatorElement != null) { OnAcceptMediator onAcceptMediator = new OnAcceptMediator(); onAcceptMediator.build(onAcceptMediatorElement); addChild(onAcceptMediator); } } OMAttribute advice = elem.getAttribute( new QName(XMLConfigConstants.NULL_NAMESPACE, ADVICE)); if (advice != null) { String adviceValue = advice.getAttributeValue(); if (adviceValue != null) { adviceSeqKey = adviceValue; } } else { OMElement adviceMediatorElement = elem.getFirstChildWithName( new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, ADVICE)); if (adviceMediatorElement != null) { AdviceMediator adviceMediator = new AdviceMediator(); adviceMediator.build(adviceMediatorElement); addChild(adviceMediator); } } OMAttribute obligations = elem.getAttribute( new QName(XMLConfigConstants.NULL_NAMESPACE, OBLIGATIONS)); if (obligations != null) { String obligationsValue = obligations.getAttributeValue(); if (obligationsValue != null) { onAcceptSeqKey = obligationsValue; } } else { OMElement obligationsMediatorElement = elem.getFirstChildWithName( new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, OBLIGATIONS)); if (obligationsMediatorElement != null) { ObligationsMediator obligationsMediator = new ObligationsMediator(); obligationsMediator.build(obligationsMediatorElement); addChild(obligationsMediator); } } } public String getRemoteServiceUserName() { return remoteServiceUserName; } public void setRemoteServiceUserName(String remoteServiceUserName) { this.remoteServiceUserName = remoteServiceUserName; } public String getRemoteServicePassword() { return remoteServicePassword; } public void setRemoteServicePassword(String remoteServicePassword) { this.remoteServicePassword = remoteServicePassword; } public String getRemoteServiceUrl() { return remoteServiceUrl; } public void setRemoteServiceUrl(String remoteServiceUrl) { this.remoteServiceUrl = remoteServiceUrl; } public String getCallbackClass() { return callbackClass; } public void setCallbackClass(String callbackClass) { this.callbackClass = callbackClass; } public String getThriftHost() { return thriftHost; } public void setThriftHost(String thriftHost) { this.thriftHost = thriftHost; } public String getThriftPort() { return thriftPort; } public void setThriftPort(String thriftPort) { this.thriftPort = thriftPort; } public String getClient() { return client; } public void setClient(String client) { this.client = client; } public String getOnRejectSeqKey() { return onRejectSeqKey; } public void setOnRejectSeqKey(String onRejectSeqKey) { this.onRejectSeqKey = onRejectSeqKey; } public String getOnAcceptSeqKey() { return onAcceptSeqKey; } public void setOnAcceptSeqKey(String onAcceptSeqKey) { this.onAcceptSeqKey = onAcceptSeqKey; } public String getAdviceSeqKey() { return adviceSeqKey; } public void setAdviceSeqKey(String adviceSeqKey) { this.adviceSeqKey = adviceSeqKey; } public String getObligationsSeqKey() { return obligationsSeqKey; } public void setObligationsSeqKey(String obligationsSeqKey) { this.obligationsSeqKey = obligationsSeqKey; } /** * {@inheritDoc} */ public String getTagLocalName() { return "entitlementService"; } }