aboutsummaryrefslogtreecommitdiffstats
path: root/manifmerger
diff options
context:
space:
mode:
authorRaphael Moll <ralf@android.com>2012-09-14 12:57:22 -0700
committerRaphael Moll <ralf@android.com>2012-09-14 12:57:22 -0700
commita35f8af9eca38249b5c37391d7a7ae56c53251ad (patch)
tree02c8ff8f5677c0ecc6188930befaa9dd1316d580 /manifmerger
parentd38457bd813f7591e13a58bf91655192d761d81a (diff)
downloadsdk-a35f8af9eca38249b5c37391d7a7ae56c53251ad.zip
sdk-a35f8af9eca38249b5c37391d7a7ae56c53251ad.tar.gz
sdk-a35f8af9eca38249b5c37391d7a7ae56c53251ad.tar.bz2
Revert "Fix manifest merger for non-integer values"
This reverts commit 0ecd33255e76b00a45c79216c744cb624ba61756. The fix breaks unit tests and is in the way of the changes I want to do.
Diffstat (limited to 'manifmerger')
-rwxr-xr-xmanifmerger/src/com/android/manifmerger/ManifestMerger.java44
1 files changed, 25 insertions, 19 deletions
diff --git a/manifmerger/src/com/android/manifmerger/ManifestMerger.java b/manifmerger/src/com/android/manifmerger/ManifestMerger.java
index c5153e9..8a61e67 100755
--- a/manifmerger/src/com/android/manifmerger/ManifestMerger.java
+++ b/manifmerger/src/com/android/manifmerger/ManifestMerger.java
@@ -36,7 +36,7 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.atomic.AtomicInteger;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
@@ -742,8 +742,8 @@ public class ManifestMerger {
Element destUsesSdk = findFirstElement(mMainDoc, "/manifest/uses-sdk"); //$NON-NLS-1$
Element srcUsesSdk = findFirstElement(libDoc, "/manifest/uses-sdk"); //$NON-NLS-1$
- AtomicReference<Object> destValue = new AtomicReference<Object>(1); // String or Integer
- AtomicReference<Object> srcValue = new AtomicReference<Object>(1);
+ AtomicInteger destValue = new AtomicInteger(1);
+ AtomicInteger srcValue = new AtomicInteger(1);
AtomicBoolean destImplied = new AtomicBoolean(true);
AtomicBoolean srcImplied = new AtomicBoolean(true);
@@ -756,17 +756,16 @@ public class ManifestMerger {
destValue, srcValue,
destImplied, srcImplied);
- if (result && destValue.get() instanceof Integer && srcValue.get() instanceof Integer) {
+ if (result) {
// Make it an error for an application to use a library with a greater
// minSdkVersion. This means the library code may crash unexpectedly.
// TODO it would be nice to be able to work around this in case the
// user think s/he knows what s/he's doing.
// We could define a simple XML comment flag: <!-- @NoMinSdkVersionMergeError -->
- destMinSdk = (Integer) destValue.get();
+ destMinSdk = destValue.get();
- int srcMinSdk = (Integer) srcValue.get();
- if (destMinSdk < srcMinSdk) {
+ if (destMinSdk < srcValue.get()) {
mLog.conflict(Severity.ERROR,
xmlFileAndLine(destUsesSdk == null ? mMainDoc : destUsesSdk),
xmlFileAndLine(srcUsesSdk == null ? libDoc : srcUsesSdk),
@@ -795,14 +794,13 @@ public class ManifestMerger {
destImplied, srcImplied);
result &= result2;
- if (result2 && destValue.get() instanceof Integer && srcValue.get() instanceof Integer) {
+ if (result2) {
// Make it a warning for an application to use a library with a greater
// targetSdkVersion.
- int destTargetSdk = destImplied.get() ? destMinSdk : (Integer) destValue.get();
+ int destTargetSdk = destImplied.get() ? destMinSdk : destValue.get();
- int srcMinSdk = (Integer) srcValue.get();
- if (destTargetSdk < srcMinSdk) {
+ if (destTargetSdk < srcValue.get()) {
mLog.conflict(Severity.WARNING,
xmlFileAndLine(destUsesSdk == null ? mMainDoc : destUsesSdk),
xmlFileAndLine(srcUsesSdk == null ? libDoc : srcUsesSdk),
@@ -833,8 +831,8 @@ public class ManifestMerger {
Element destUsesSdk,
Element srcUsesSdk,
String attr,
- AtomicReference<Object> destValue,
- AtomicReference<Object> srcValue,
+ AtomicInteger destValue,
+ AtomicInteger srcValue,
AtomicBoolean destImplied,
AtomicBoolean srcImplied) {
String s = destUsesSdk == null ? "" //$NON-NLS-1$
@@ -848,9 +846,14 @@ public class ManifestMerger {
destImplied.set(false);
}
} catch (NumberFormatException e) {
- // Versions can contain codenames such as "JellyBean"
- destValue.set(s);
- destImplied.set(false);
+ // Note: NumberFormatException.toString() has no interesting information
+ // so we don't output it.
+ mLog.error(Severity.ERROR,
+ xmlFileAndLine(destUsesSdk == null ? mMainDoc : destUsesSdk),
+ "Failed to parse <uses-sdk %1$sSdkVersion='%2$s'>: must be an integer number.",
+ attr,
+ s);
+ return false;
}
s = srcUsesSdk == null ? "" //$NON-NLS-1$
@@ -863,9 +866,12 @@ public class ManifestMerger {
srcImplied.set(false);
}
} catch (NumberFormatException e) {
- // Versions can contain codenames such as "JellyBean"
- destValue.set(s);
- destImplied.set(false);
+ mLog.error(Severity.ERROR,
+ xmlFileAndLine(srcUsesSdk == null ? libDoc : srcUsesSdk),
+ "Failed to parse <uses-sdk %1$sSdkVersion='%2$s'>: must be an integer number.",
+ attr,
+ s);
+ return false;
}
return true;