/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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.rule.ui.internal; import org.wso2.carbon.rule.common.Fact; import org.wso2.carbon.rule.common.Input; import org.wso2.carbon.rule.common.Output; import org.wso2.carbon.rule.mediator.config.RuleMediatorConfig; import org.wso2.carbon.rule.mediator.config.Source; import org.wso2.carbon.rule.mediator.config.Target; import org.wso2.carbon.sequences.ui.util.SequenceEditorHelper; import org.wso2.carbon.sequences.ui.util.ns.NameSpacesInformation; import org.wso2.carbon.sequences.ui.util.ns.NameSpacesInformationRepository; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.lang.reflect.Method; import java.util.Map; /** * */ public class RuleMediatorClientHelper { static NameSpacesInformationRepository repository; static NameSpacesInformation information = null; static NameSpacesInformation targetNSInformation = null; static String ownerID; public static void init(HttpServletRequest request) { repository = (NameSpacesInformationRepository) request.getSession().getAttribute( NameSpacesInformationRepository.NAMESPACES_INFORMATION_REPOSITORY); ownerID = SequenceEditorHelper.getEditingMediatorPosition(request.getSession()); } public static void populateSource(HttpServletRequest request, RuleMediatorConfig ruleMediatorConfig) { Source source = ruleMediatorConfig.getSource(); if (request.getParameter("mediator.rule.source.value") != null) { source.setValue(request.getParameter("mediator.rule.source.value")); } if (request.getParameter("mediator.rule.source.xpath") != null) { source.setXpath(request.getParameter("mediator.rule.source.xpath")); } if (repository != null) { information = repository.getNameSpacesInformation(ownerID, "sourceValue"); if (information != null) { source.setPrefixToNamespaceMap(information.getNameSpaces()); } } } public static void populateTarget(HttpServletRequest request, RuleMediatorConfig ruleMediatorConfig) { Target target = ruleMediatorConfig.getTarget(); if (request.getParameter("mediator.rule.target.value") != null) { target.setValue(request.getParameter("mediator.rule.target.value")); } if (request.getParameter("mediator.rule.target.resultXpath") != null) { target.setResultXpath(request.getParameter("mediator.rule.target.resultXpath")); } if (request.getParameter("mediator.rule.target.xpath") != null) { target.setXpath(request.getParameter("mediator.rule.target.xpath")); } if (request.getParameter("mediator.rule.target.action") != null) { target.setAction(request.getParameter("mediator.rule.target.action")); } if (repository != null) { information = repository.getNameSpacesInformation(ownerID, "resultValue"); if (information != null) { target.setPrefixToNamespaceMap(information.getNameSpaces()); } // targetNSInformation = repository.getNameSpacesInformation(ownerID, "targetNS"); // if (targetNSInformation != null) { // target.setPrefixToTargetNamespaceMap(targetNSInformation.getNameSpaces()); // // } } } public static void registerNameSpaces(Map<String, String> properties, String baseId, HttpSession httpSession) { if (properties == null || baseId == null || "".equals(baseId)) { return; } int i = 0; // for (String key : properties.keySet()) { // if (key != null) { // BaseXPath xPath = property.getExpression(); // if (xPath instanceof AXIOMXPath) { // NameSpacesRegistrar.getInstance().registerNameSpaces((AXIOMXPath) xPath, // baseId + String.valueOf(i), httpSession); // } // } // i++; // } } public static void setProperty(HttpServletRequest request, Object configuration, String mName, String id) { String registrationPropertyCount = request.getParameter(id + "propertyCount"); if (registrationPropertyCount != null && !"".equals(registrationPropertyCount)) { int propertyCount = 0; try { propertyCount = Integer.parseInt(registrationPropertyCount.trim()); for (int i = 0; i <= propertyCount; i++) { String name = request.getParameter(id + "propertyName" + i); if (name != null && !"".equals(name)) { String valueId = id + "propertyValue" + i; String value = request.getParameter(valueId); if (value == null || "".equals(value.trim())) { continue; } // PropertyDescription mp = new PropertyDescription(); // mp.setName(name.trim()); // mp.setValue(value.trim()); // invokeInstanceProperty(mName, mp, configuration); } } } catch (NumberFormatException ignored) { } } } public static void updateInputFacts(HttpServletRequest request, RuleMediatorConfig ruleMediatorConfig, String id) { String inputCountParameter = request.getParameter(id + "Count"); if (inputCountParameter != null && !"".equals(inputCountParameter)) { int inputCount = 0; try { inputCount = Integer.parseInt(inputCountParameter.trim()); if (inputCount > 0) { Input input = ruleMediatorConfig.getInput(); input.setWrapperElementName(request.getParameter("inputWrapperName")); input.setNameSpace(request.getParameter("inputNameSpace")); input.getFacts().clear(); Fact inputFact = null; for (int i = 0; i < inputCount; i++) { String type = request.getParameter(id + "Type" + i); String elementName = request.getParameter(id + "ElementName" + i); String namespace = request.getParameter(id + "Namespace" + i); String xpath = request.getParameter(id + "Xpath" + i); String nsID = id + "Value" + i; if (type != null && !"".equals(type)) { inputFact = new Fact(); inputFact.setType(type); inputFact.setElementName(elementName); inputFact.setNamespace(namespace); inputFact.setXpath(xpath); input.addFact(inputFact); } if (repository != null) { information = repository.getNameSpacesInformation(ownerID, nsID); if (information != null) { inputFact.setPrefixToNamespaceMap(information.getNameSpaces()); } } } } } catch (NumberFormatException ignored) { } } } public static void updateOutputFacts(HttpServletRequest request, RuleMediatorConfig ruleMediatorConfig, String id) { String outputCountParameter = request.getParameter(id + "Count"); if (outputCountParameter != null && !"".equals(outputCountParameter)) { int outputCount = 0; try { outputCount = Integer.parseInt(outputCountParameter.trim()); if (outputCount > 0) { Output outPut = ruleMediatorConfig.getOutput(); outPut.setWrapperElementName(request.getParameter("outputWrapperName")); outPut.setNameSpace(request.getParameter("outputNameSpace")); outPut.getFacts().clear(); Fact outputFact = null; for (int i = 0; i < outputCount; i++) { String type = request.getParameter(id + "Type" + i); String elementName = request.getParameter(id + "ElementName" + i); String namespace = request.getParameter(id + "Namespace" + i); // String xpath = request.getParameter(id + "Xpath" + i); if (type != null && !"".equals(type)) { outputFact = new Fact(); outputFact.setType(type); outputFact.setElementName(elementName); outputFact.setNamespace(namespace); // outputFact.setXpath(xpath); outPut.addFact(outputFact); } } } } catch (NumberFormatException ignored) { } } } private static void invokeInstanceProperty(String mName, Object val, Object target) { Class<?> aClass = target.getClass(); try { Method method = aClass.getMethod(mName, val.getClass()); method.invoke(target, val); } catch (Exception e) { throw new RuntimeException("Error setting property : " + mName + " into" + aClass + " : " + e.getMessage(), e); } } }