From 83d452ee0cf309d9fc0e68b8c9ca79a847a0d413 Mon Sep 17 00:00:00 2001 From: Ramin Yaghoubzadeh <ryaghoubzadeh@uni-bielefeld.de> Date: Thu, 26 Feb 2015 00:19:44 +0100 Subject: [PATCH] Java: pseudoConvert now uses StringEscapeUtils for correct unescaping (This was sufficient for basic interoperation, e.g. DM<->realizer) --- ipaacalib/java/ivy.xml | 1 + ipaacalib/java/src/ipaaca/Payload.java | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ipaacalib/java/ivy.xml b/ipaacalib/java/ivy.xml index 8023c27..e1baa4b 100644 --- a/ipaacalib/java/ivy.xml +++ b/ipaacalib/java/ivy.xml @@ -9,5 +9,6 @@ <dependency org="google" name="protobuf-java" rev="latest.release" /> <dependency org="rsb" name="rsb" rev="latest.release" /> <dependency org="lombok" name="lombok" rev="latest.release" /> + <dependency org="apache" name="commons-lang" rev="latest.release" /> </dependencies> </ivy-module> diff --git a/ipaacalib/java/src/ipaaca/Payload.java b/ipaacalib/java/src/ipaaca/Payload.java index 315d686..f2d0833 100644 --- a/ipaacalib/java/src/ipaaca/Payload.java +++ b/ipaacalib/java/src/ipaaca/Payload.java @@ -34,6 +34,8 @@ package ipaaca; import ipaaca.protobuf.Ipaaca.PayloadItem; +import org.apache.commons.lang.StringEscapeUtils; + import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -93,18 +95,19 @@ public class Payload implements Map<String, String> map.put(item.getKey(), pseudoConvertFromJSON(item.getValue(), item.getType())); } } - + public String pseudoConvertFromJSON(String value, String type) { - if (type.equals("JSON")) { - if (value.startsWith("\"")) { - return value.replaceAll("\\\"", ""); - } else if (value.startsWith("{") || value.startsWith("[") || value.matches("true") || value.matches("false") || value.matches("-?[0-9]*[.,]?[0-9][0-9]*.*")) { - return value; - } else if (value.equals("null")) { - return ""; - } - } - return value; + if (type.equals("JSON")) { + if (value.startsWith("\"")) { + //return value.replaceAll("\\\"", ""); + return StringEscapeUtils.unescapeJava(value.substring(1, value.length() - 1)); + } else if (value.startsWith("{") || value.startsWith("[") || value.matches("true") || value.matches("false") || value.matches("-?[0-9]*[.,]?[0-9][0-9]*.*")) { + return value; + } else if (value.equals("null")) { + return ""; + } + } + return value; } void enforcedSetItem(String key, String value) -- GitLab