From 31274e73dc6311128fab4156d1fd5a09458d60a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ryszard=20Wi=C5=9Bniewski?= Date: Mon, 9 May 2011 11:17:50 +0200 Subject: [PATCH] ResXmlEncodable: splitted toResXmlFormat() into 2 methods: encodeAsResXmlAttr() and encodeAsResXmlValue(). --- .../brut/androlib/res/data/value/ResArrayValue.java | 2 +- .../brut/androlib/res/data/value/ResBoolValue.java | 3 +-- .../brut/androlib/res/data/value/ResColorValue.java | 2 +- .../brut/androlib/res/data/value/ResDimenValue.java | 2 +- .../brut/androlib/res/data/value/ResFloatValue.java | 3 +-- .../androlib/res/data/value/ResFractionValue.java | 2 +- .../brut/androlib/res/data/value/ResIntValue.java | 3 +-- .../androlib/res/data/value/ResPluralsValue.java | 2 +- .../androlib/res/data/value/ResReferenceValue.java | 3 +-- .../brut/androlib/res/data/value/ResScalarValue.java | 12 ++++++++++-- .../brut/androlib/res/data/value/ResStringValue.java | 11 +++++++++-- .../brut/androlib/res/data/value/ResStyleValue.java | 4 ++-- .../brut/androlib/res/decoder/ResAttrDecoder.java | 2 +- .../java/brut/androlib/res/xml/ResXmlEncodable.java | 3 ++- 14 files changed, 33 insertions(+), 21 deletions(-) diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java index 483a75c6..01eea5c9 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java @@ -51,7 +51,7 @@ public class ResArrayValue extends ResBagValue implements ResValuesXmlSerializab serializer.attribute(null, "name", res.getResSpec().getName()); for (int i = 0; i < mItems.length; i++) { serializer.startTag(null, "item"); - serializer.text(mItems[i].toResXmlFormat()); + serializer.text(mItems[i].encodeAsResXmlValue()); serializer.endTag(null, "item"); } serializer.endTag(null, type); diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResBoolValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResBoolValue.java index a2dd7b85..807196fe 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResBoolValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResBoolValue.java @@ -31,8 +31,7 @@ public class ResBoolValue extends ResScalarValue { return mValue; } - @Override - public String toResXmlFormat() { + protected String encodeAsResXml() { return mValue ? "true" : "false"; } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResColorValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResColorValue.java index 0cb89a44..23077b6f 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResColorValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResColorValue.java @@ -25,7 +25,7 @@ public class ResColorValue extends ResIntValue { } @Override - public String toResXmlFormat() { + protected String encodeAsResXml() { return String.format("#%08x", mValue); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResDimenValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResDimenValue.java index 0f95db7a..d00a6077 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResDimenValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResDimenValue.java @@ -28,7 +28,7 @@ public class ResDimenValue extends ResIntValue { } @Override - public String toResXmlFormat() throws AndrolibException { + protected String encodeAsResXml() throws AndrolibException { return TypedValue.coerceToString(TypedValue.TYPE_DIMENSION, mValue); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFloatValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFloatValue.java index 5a63e1ec..bbd77219 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFloatValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFloatValue.java @@ -31,8 +31,7 @@ public class ResFloatValue extends ResScalarValue { return mValue; } - @Override - public String toResXmlFormat() { + protected String encodeAsResXml() { return String.valueOf(mValue); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFractionValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFractionValue.java index 9b5b465e..c3325834 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFractionValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResFractionValue.java @@ -28,7 +28,7 @@ public class ResFractionValue extends ResIntValue { } @Override - public String toResXmlFormat() throws AndrolibException { + protected String encodeAsResXml() throws AndrolibException { return TypedValue.coerceToString(TypedValue.TYPE_FRACTION, mValue); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResIntValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResIntValue.java index 47d74f57..bc3a5ee3 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResIntValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResIntValue.java @@ -37,8 +37,7 @@ public class ResIntValue extends ResScalarValue { return mValue; } - @Override - public String toResXmlFormat() throws AndrolibException { + protected String encodeAsResXml() throws AndrolibException { return String.valueOf(mValue); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResPluralsValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResPluralsValue.java index d01e3ef5..b127f74c 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResPluralsValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResPluralsValue.java @@ -33,7 +33,7 @@ public class ResPluralsValue extends ResBagValue implements ResValuesXmlSerializ mItems = new String[6]; for (int i = 0; i < items.length; i++) { mItems[items[i].m1 - BAG_KEY_PLURALS_START] = - ((ResStringValue) items[i].m2).toResXmlFormat(); + ((ResStringValue) items[i].m2).encodeAsResXmlValue(); } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResReferenceValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResReferenceValue.java index cae0cf7b..469eccc0 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResReferenceValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResReferenceValue.java @@ -38,8 +38,7 @@ public class ResReferenceValue extends ResIntValue { mTheme = theme; } - @Override - public String toResXmlFormat() throws AndrolibException { + protected String encodeAsResXml() throws AndrolibException { if (isNull()) { return "@null"; } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResScalarValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResScalarValue.java index aec3fbde..073eef65 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResScalarValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResScalarValue.java @@ -35,7 +35,13 @@ public abstract class ResScalarValue extends ResValue mRawValue = rawValue; } - public abstract String toResXmlFormat() throws AndrolibException; + public String encodeAsResXmlAttr() throws AndrolibException { + return encodeAsResXml(); + } + + public String encodeAsResXmlValue() throws AndrolibException { + return encodeAsResXml(); + } public void serializeToResValuesXml(XmlSerializer serializer, ResResource res) throws IOException, AndrolibException { @@ -49,7 +55,7 @@ public abstract class ResScalarValue extends ResValue } serializer.attribute(null, "name", res.getResSpec().getName()); - String body = toResXmlFormat(); + String body = encodeAsResXmlValue(); if (! body.isEmpty()) { serializer.ignorableWhitespace(body); } @@ -60,4 +66,6 @@ public abstract class ResScalarValue extends ResValue public String getType() { return mType; } + + protected abstract String encodeAsResXml() throws AndrolibException; } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStringValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStringValue.java index 2ac87aa6..4872e902 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStringValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStringValue.java @@ -16,6 +16,7 @@ package brut.androlib.res.data.value; +import brut.androlib.AndrolibException; /** * @author Ryszard Wiśniewski @@ -30,12 +31,18 @@ public class ResStringValue extends ResScalarValue { super(type, value); } - public String getValue() { + @Override + public String encodeAsResXmlAttr() { return mRawValue; } @Override - public String toResXmlFormat() { + public String encodeAsResXmlValue() { return mRawValue; } + + @Override + protected String encodeAsResXml() throws AndrolibException { + throw new UnsupportedOperationException(); + } } diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStyleValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStyleValue.java index 8dbc4978..a8902ae4 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStyleValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStyleValue.java @@ -44,7 +44,7 @@ public class ResStyleValue extends ResBagValue implements ResValuesXmlSerializab serializer.startTag(null, "style"); serializer.attribute(null, "name", res.getResSpec().getName()); if (! mParent.isNull()) { - serializer.attribute(null, "parent", mParent.toResXmlFormat()); + serializer.attribute(null, "parent", mParent.encodeAsResXmlAttr()); } for (int i = 0; i < mItems.length; i++) { ResResSpec spec = mItems[i].m1.getReferent(); @@ -52,7 +52,7 @@ public class ResStyleValue extends ResBagValue implements ResValuesXmlSerializab String value = attr.convertToResXmlFormat(mItems[i].m2); if (value == null) { - value = mItems[i].m2.toResXmlFormat(); + value = mItems[i].m2.encodeAsResXmlValue(); } if (value == null) { diff --git a/apktool-lib/src/main/java/brut/androlib/res/decoder/ResAttrDecoder.java b/apktool-lib/src/main/java/brut/androlib/res/decoder/ResAttrDecoder.java index 0a58f7f0..75c601e1 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/decoder/ResAttrDecoder.java +++ b/apktool-lib/src/main/java/brut/androlib/res/decoder/ResAttrDecoder.java @@ -37,7 +37,7 @@ public class ResAttrDecoder { decoded = attr.convertToResXmlFormat(resValue); } - return decoded != null ? decoded : resValue.toResXmlFormat(); + return decoded != null ? decoded : resValue.encodeAsResXmlAttr(); } public ResPackage getCurrentPackage() throws AndrolibException { diff --git a/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncodable.java b/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncodable.java index 9293624f..86d40a50 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncodable.java +++ b/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncodable.java @@ -22,5 +22,6 @@ import brut.androlib.AndrolibException; * @author Ryszard Wiśniewski */ public interface ResXmlEncodable { - public String toResXmlFormat() throws AndrolibException; + public String encodeAsResXmlAttr() throws AndrolibException; + public String encodeAsResXmlValue() throws AndrolibException; }