diff options
author | Rafael H. Schloming <rhs@apache.org> | 2010-01-28 17:09:55 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2010-01-28 17:09:55 +0000 |
commit | fe2db915235fdca1c8ed2335e69127b43ee5b835 (patch) | |
tree | 07045ae05666a9bb169ed6f8c352e5cb92fdc678 | |
parent | b862462df1b77c69a0688d7197947d780c36eab0 (diff) | |
download | qpid-python-fe2db915235fdca1c8ed2335e69127b43ee5b835.tar.gz |
moved pprint from JAddr into separate utility class and use it from Address to implement a property toString
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@904162 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 156 insertions, 112 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/messaging/Address.java b/java/common/src/main/java/org/apache/qpid/messaging/Address.java index 9187239497..2c7fe7b8ed 100644 --- a/java/common/src/main/java/org/apache/qpid/messaging/Address.java +++ b/java/common/src/main/java/org/apache/qpid/messaging/Address.java @@ -24,6 +24,8 @@ import java.util.Map; import org.apache.qpid.messaging.util.AddressParser; +import static org.apache.qpid.messaging.util.PyPrint.pprint; + /** * Address @@ -64,4 +66,10 @@ public class Address return options; } + public String toString() + { + return String.format("%s/%s; %s", pprint(name), pprint(subject), + pprint(options)); + } + } diff --git a/java/common/src/main/java/org/apache/qpid/messaging/util/JAddr.java b/java/common/src/main/java/org/apache/qpid/messaging/util/JAddr.java index 63d2de21b2..93df052af1 100644 --- a/java/common/src/main/java/org/apache/qpid/messaging/util/JAddr.java +++ b/java/common/src/main/java/org/apache/qpid/messaging/util/JAddr.java @@ -22,15 +22,14 @@ package org.apache.qpid.messaging.util; import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Map; import org.apache.qpid.messaging.Address; import org.apache.qpid.messaging.util.ParseError; import org.apache.qpid.messaging.util.Token; +import static org.apache.qpid.messaging.util.PyPrint.pprint; + /** * JAddr @@ -95,113 +94,4 @@ public class JAddr pprint(addr.getOptions())); } - private static String pprint(Object obj) - { - if (obj instanceof Map) - { - return pprint_map((Map) obj); - } - else if (obj instanceof List) - { - return pprint_list((List) obj); - } - else if (obj instanceof String) - { - return pprint_string((String) obj); - } - else if (obj instanceof Boolean) - { - return ((Boolean) obj).booleanValue() ? "True" : "False"; - } - else if (obj == null) - { - return "None"; - } - else - { - return obj.toString(); - } - } - - private static String indent(String st) - { - return " " + st.replace("\n", "\n "); - } - - private static String pprint_map(Map<Object,Object> map) - { - List<String> items = new ArrayList<String>(); - for (Map.Entry me : map.entrySet()) - { - items.add(String.format("%s: %s", pprint(me.getKey()), - pprint(me.getValue()))); - } - Collections.sort(items); - return pprint_items("{", items, "}"); - } - - private static String pprint_list(List list) - { - List<String> items = new ArrayList<String>(); - for (Object o : list) - { - items.add(pprint(o)); - } - return pprint_items("[", items, "]"); - } - - private static String pprint_items(String start, List<String> items, - String end) - { - StringBuilder result = new StringBuilder(); - for (String item : items) - { - if (result.length() > 0) - { - result.append(",\n"); - } - result.append(indent(item)); - } - - if (result.length() > 0) - { - return String.format("%s\n%s\n%s", start, result, end); - } - else - { - return String.format("%s%s", start, end); - } - } - - private static String pprint_string(String st) - { - StringBuilder result = new StringBuilder(); - result.append('\''); - for (int i = 0; i < st.length(); i++) - { - char c = st.charAt(i); - switch (c) - { - case '\'': - result.append("\\'"); - break; - case '\n': - result.append("\\n"); - break; - default: - if (c >= 0x80) - { - result.append(String.format("\\u%04x", (int)c)); - } - else - { - result.append(c); - } - break; - } - } - result.append('\''); - return result.toString(); - } - } diff --git a/java/common/src/main/java/org/apache/qpid/messaging/util/PyPrint.java b/java/common/src/main/java/org/apache/qpid/messaging/util/PyPrint.java new file mode 100644 index 0000000000..ef6c724371 --- /dev/null +++ b/java/common/src/main/java/org/apache/qpid/messaging/util/PyPrint.java @@ -0,0 +1,146 @@ +/* + * + * 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.apache.qpid.messaging.util; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + + +/** + * PyPrint + * + */ + +public class PyPrint +{ + + public static String pprint(Object obj) + { + if (obj instanceof Map) + { + return pprint_map((Map) obj); + } + else if (obj instanceof List) + { + return pprint_list((List) obj); + } + else if (obj instanceof String) + { + return pprint_string((String) obj); + } + else if (obj instanceof Boolean) + { + return ((Boolean) obj).booleanValue() ? "True" : "False"; + } + else if (obj == null) + { + return "None"; + } + else + { + return obj.toString(); + } + } + + private static String indent(String st) + { + return " " + st.replace("\n", "\n "); + } + + private static String pprint_map(Map<Object,Object> map) + { + List<String> items = new ArrayList<String>(); + for (Map.Entry me : map.entrySet()) + { + items.add(String.format("%s: %s", pprint(me.getKey()), + pprint(me.getValue()))); + } + Collections.sort(items); + return pprint_items("{", items, "}"); + } + + private static String pprint_list(List list) + { + List<String> items = new ArrayList<String>(); + for (Object o : list) + { + items.add(pprint(o)); + } + return pprint_items("[", items, "]"); + } + + private static String pprint_items(String start, List<String> items, + String end) + { + StringBuilder result = new StringBuilder(); + for (String item : items) + { + if (result.length() > 0) + { + result.append(",\n"); + } + result.append(indent(item)); + } + + if (result.length() > 0) + { + return String.format("%s\n%s\n%s", start, result, end); + } + else + { + return String.format("%s%s", start, end); + } + } + + private static String pprint_string(String st) + { + StringBuilder result = new StringBuilder(); + result.append('\''); + for (int i = 0; i < st.length(); i++) + { + char c = st.charAt(i); + switch (c) + { + case '\'': + result.append("\\'"); + break; + case '\n': + result.append("\\n"); + break; + default: + if (c >= 0x80) + { + result.append(String.format("\\u%04x", (int)c)); + } + else + { + result.append(c); + } + break; + } + } + result.append('\''); + return result.toString(); + } + +} |