in gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandSessionImpl.java [264:439]
public CharSequence format(Object target, int level, Converter escape) throws Exception
{
if (target == null)
{
return "null";
}
if (target instanceof CharSequence)
{
return (CharSequence) target;
}
for (Converter c : processor.converters)
{
CharSequence s = c.format(target, level, this);
if (s != null)
{
return s;
}
}
if (target.getClass().isArray())
{
if (target.getClass().getComponentType().isPrimitive())
{
if (target.getClass().getComponentType() == boolean.class)
{
return Arrays.toString((boolean[]) target);
}
else
{
if (target.getClass().getComponentType() == byte.class)
{
return Arrays.toString((byte[]) target);
}
else
{
if (target.getClass().getComponentType() == short.class)
{
return Arrays.toString((short[]) target);
}
else
{
if (target.getClass().getComponentType() == int.class)
{
return Arrays.toString((int[]) target);
}
else
{
if (target.getClass().getComponentType() == long.class)
{
return Arrays.toString((long[]) target);
}
else
{
if (target.getClass().getComponentType() == float.class)
{
return Arrays.toString((float[]) target);
}
else
{
if (target.getClass().getComponentType() == double.class)
{
return Arrays.toString((double[]) target);
}
else
{
if (target.getClass().getComponentType() == char.class)
{
return Arrays.toString((char[]) target);
}
}
}
}
}
}
}
}
}
target = Arrays.asList((Object[]) target);
}
if (target instanceof Collection)
{
if (level == Converter.INSPECT)
{
StringBuilder sb = new StringBuilder();
Collection<?> c = (Collection<?>) target;
for (Object o : c)
{
sb.append(format(o, level + 1, this));
sb.append("\n");
}
return sb;
}
else
{
if (level == Converter.LINE)
{
StringBuilder sb = new StringBuilder();
Collection<?> c = (Collection<?>) target;
sb.append("[");
for (Object o : c)
{
if (sb.length() > 1)
{
sb.append(", ");
}
sb.append(format(o, level + 1, this));
}
sb.append("]");
return sb;
}
}
}
if (target instanceof Dictionary)
{
Map<Object, Object> result = new HashMap<>();
for (Enumeration<Object> e = ((Dictionary<Object, Object>) target).keys(); e.hasMoreElements();)
{
Object key = e.nextElement();
result.put(key, ((Dictionary<Object, Object>) target).get(key));
}
target = result;
}
if (target instanceof Map)
{
if (level == Converter.INSPECT)
{
StringBuilder sb = new StringBuilder();
Map<?, ?> c = (Map<?, ?>) target;
for (Map.Entry<?, ?> entry : c.entrySet())
{
CharSequence key = format(entry.getKey(), level + 1, this);
sb.append(key);
for (int i = key.length(); i < 20; i++)
{
sb.append(' ');
}
sb.append(format(entry.getValue(), level + 1, this));
sb.append("\n");
}
return sb;
}
else
{
if (level == Converter.LINE)
{
StringBuilder sb = new StringBuilder();
Map<?, ?> c = (Map<?, ?>) target;
sb.append("[");
for (Map.Entry<?, ?> entry : c.entrySet())
{
if (sb.length() > 1)
{
sb.append(", ");
}
sb.append(format(entry, level + 1, this));
}
sb.append("]");
return sb;
}
}
}
if (target instanceof Path)
{
return target.toString();
}
if (level == Converter.INSPECT)
{
return inspect(target);
}
else
{
return target.toString();
}
}