All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alogic.xscript.plugins.Location Maven / Gradle / Ivy

There is a newer version: 1.6.17
Show newest version
package com.alogic.xscript.plugins;

import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import com.alogic.xscript.ExecuteWatcher;
import com.alogic.xscript.Logiclet;
import com.alogic.xscript.LogicletContext;
import com.alogic.xscript.doc.XsObject;
import com.alogic.xscript.doc.json.JsonObject;
import com.alogic.xscript.doc.xml.XmlObject;
import com.anysoft.util.BaseException;
import com.anysoft.util.Properties;
import com.anysoft.util.PropertiesConstants;
import com.anysoft.util.XmlTools;
import com.jayway.jsonpath.JsonPath;

/**
 * Location
 * @author yyduan
 * 
 * @version 1.6.8.14 [20170509 duanyy] 
* - 增加xscript的中间文档模型,以便支持多种报文协议
* * @version 1.6.11.10 [20180116 duanyy]
* - 去掉定位失败的警告
* */ public class Location extends Segment { protected String jsonPath; protected String xmlPath; public Location(String tag, Logiclet p) { super(tag, p); } @Override public void configure(Properties p) { super.configure(p); jsonPath = PropertiesConstants.getString(p, "jsonPath", jsonPath); xmlPath = PropertiesConstants.getString(p, "xmlPath", xmlPath); } @SuppressWarnings("unchecked") @Override protected void onExecute(XsObject root, XsObject current, final LogicletContext ctx, final ExecuteWatcher watcher) { XsObject newCurrent = current; if (root instanceof JsonObject) { if (StringUtils.isNotEmpty(jsonPath)){ Object result = JsonPath.read((Map)current.getContent(), jsonPath); if (result instanceof Map) { newCurrent = new JsonObject("node", (Map) result); super.onExecute(root, newCurrent, ctx, watcher); } }else{ log(String.format("[%s]json path is null",getXmlTag()),"error"); } } else { if (root instanceof XmlObject) { if (StringUtils.isNotEmpty(xmlPath)){ Node result = XmlTools.getNodeByPath( (Element) current.getContent(), xmlPath); if (result != null && result instanceof Element) { newCurrent = new XmlObject("node", (Element) result); super.onExecute(root, newCurrent, ctx, watcher); } }else{ log(String.format("[%s]xml path is null",getXmlTag()),"error"); } } else { throw new BaseException("core.e1000", String.format( "Tag %s does not support protocol %s", getXmlTag(), root.getClass().getName())); } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy