diff options
author | 2017-10-19 18:22:00 +0200 | |
---|---|---|
committer | 2017-10-20 14:04:05 +0200 | |
commit | db07436b0112e2aea5e543066d4cdb387536ce7f (patch) | |
tree | df3ce91cd2d26ea947635263bef9d5e299c8b0e2 | |
parent | db6e13b2e2bf1f5eb52909381bce65a099278e12 (diff) |
Change the KeyValueConsumer to extend BiConsumer for improved consumer usage.
RELNOTES: None
PiperOrigin-RevId: 172754760
9 files changed, 72 insertions, 74 deletions
diff --git a/src/test/java/com/google/devtools/build/android/AndroidDataSerializerAndDeserializerTest.java b/src/test/java/com/google/devtools/build/android/AndroidDataSerializerAndDeserializerTest.java index 198e5a0112..0afaf0cfa5 100644 --- a/src/test/java/com/google/devtools/build/android/AndroidDataSerializerAndDeserializerTest.java +++ b/src/test/java/com/google/devtools/build/android/AndroidDataSerializerAndDeserializerTest.java @@ -282,7 +282,7 @@ public class AndroidDataSerializerAndDeserializerTest { } @Override - public void consume(DataKey key, T value) { + public void accept(DataKey key, T value) { target.put(key, value); } diff --git a/src/test/java/com/google/devtools/build/android/DataResourceXmlTest.java b/src/test/java/com/google/devtools/build/android/DataResourceXmlTest.java index f873f36768..ee04e88a09 100644 --- a/src/test/java/com/google/devtools/build/android/DataResourceXmlTest.java +++ b/src/test/java/com/google/devtools/build/android/DataResourceXmlTest.java @@ -1376,7 +1376,7 @@ public class DataResourceXmlTest { } @Override - public void consume(DataKey key, DataResource value) { + public void accept(DataKey key, DataResource value) { target.put(key, value); } } diff --git a/src/test/java/com/google/devtools/build/android/ParsedAndroidDataBuilder.java b/src/test/java/com/google/devtools/build/android/ParsedAndroidDataBuilder.java index 19710f7e35..21e79dae94 100644 --- a/src/test/java/com/google/devtools/build/android/ParsedAndroidDataBuilder.java +++ b/src/test/java/com/google/devtools/build/android/ParsedAndroidDataBuilder.java @@ -148,12 +148,12 @@ public class ParsedAndroidDataBuilder { @Nullable Factory factory, @Nullable Path root, KeyValueConsumer<DataKey, DataResource> consumer) { - consumer.consume(factory.parse(rawKey), DataValueFile.of(source)); + consumer.accept(factory.parse(rawKey), DataValueFile.of(source)); } @Override void accept(@Nullable Path defaultRoot, KeyValueConsumer<DataKey, DataAsset> target) { - target.consume( + target.accept( RelativeAssetPath.Factory.of(chooseRoot(defaultRoot).resolve("assets")) .create(source.getPath()), DataValueFile.of(source)); @@ -169,7 +169,7 @@ public class ParsedAndroidDataBuilder { Path defaultRoot, KeyValueConsumer<DataKey, DataResource> consumer) { Path res = chooseRoot(defaultRoot).resolve("res"); - consumer.consume(factory.parse(rawKey), DataValueFile.of(res.resolve(path))); + consumer.accept(factory.parse(rawKey), DataValueFile.of(res.resolve(path))); } @Override @@ -177,7 +177,7 @@ public class ParsedAndroidDataBuilder { @Nullable Path defaultRoot, KeyValueConsumer<DataKey, DataAsset> consumer) { Path assets = chooseRoot(defaultRoot).resolve("assets"); Path fullPath = assets.resolve(path); - consumer.consume( + consumer.accept( RelativeAssetPath.Factory.of(assets).create(fullPath), DataValueFile.of(fullPath)); } }; @@ -209,7 +209,7 @@ public class ParsedAndroidDataBuilder { Path defaultRoot, KeyValueConsumer<DataKey, DataResource> consumer) { Path res = (root == null ? defaultRoot : root).resolve("res"); - consumer.consume( + consumer.accept( factory.parse(rawFqn), DataResourceXml.createWithNamespaces( res.resolve(path), value, Namespaces.from(prefixToUri))); @@ -229,7 +229,7 @@ public class ParsedAndroidDataBuilder { FullyQualifiedName.Factory factory, Path defaultRoot, KeyValueConsumer<DataKey, DataResource> consumer) { - consumer.consume( + consumer.accept( factory.parse(rawFqn), DataResourceXml.createWithNamespaces( dataSource, value, Namespaces.from(prefixToUri))); diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidDataDeserializer.java b/src/tools/android/java/com/google/devtools/build/android/AndroidDataDeserializer.java index 1f9d50090c..62756c9ebc 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidDataDeserializer.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidDataDeserializer.java @@ -162,19 +162,19 @@ public class AndroidDataDeserializer { if (protoValue.hasXmlValue()) { // TODO(corysmith): Figure out why the generics are wrong. // If I use Map<DataKey, KeyValueConsumer<DataKey, ? extends DataValue>>, I can put - // consumers into the map, but I can't call consume. + // consumers into the map, but I can't call accept. // If I use Map<DataKey, KeyValueConsumer<DataKey, ? super DataValue>>, I can consume // but I can't put. // Same for below. @SuppressWarnings("unchecked") KeyValueConsumer<DataKey, DataValue> value = (KeyValueConsumer<DataKey, DataValue>) entry.getValue(); - value.consume(entry.getKey(), DataResourceXml.from(protoValue, source)); + value.accept(entry.getKey(), DataResourceXml.from(protoValue, source)); } else { @SuppressWarnings("unchecked") KeyValueConsumer<DataKey, DataValue> value = (KeyValueConsumer<DataKey, DataValue>) entry.getValue(); - value.consume(entry.getKey(), DataValueFile.of(source)); + value.accept(entry.getKey(), DataValueFile.of(source)); } } } diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java index f5b0b0040e..8e550a2d60 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java @@ -284,17 +284,17 @@ class AndroidDataMerger { // overwriting resources for (Entry<DataKey, DataResource> entry : parsedPrimary.iterateOverwritableEntries()) { if (direct.containsOverwritable(entry.getKey())) { - primaryConsumers.overwritingConsumer.consume( + primaryConsumers.overwritingConsumer.accept( entry.getKey(), entry.getValue().overwrite(direct.getOverwritable(entry.getKey()))); } else { - primaryConsumers.overwritingConsumer.consume(entry.getKey(), entry.getValue()); + primaryConsumers.overwritingConsumer.accept(entry.getKey(), entry.getValue()); } } for (Map.Entry<DataKey, DataResource> entry : direct.iterateOverwritableEntries()) { // Direct dependencies are simply overwritten, no conflict. if (!parsedPrimary.containsOverwritable(entry.getKey())) { - transitiveConsumers.overwritingConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.overwritingConsumer.accept(entry.getKey(), entry.getValue()); } } for (Map.Entry<DataKey, DataResource> entry : transitive.iterateOverwritableEntries()) { @@ -314,45 +314,45 @@ class AndroidDataMerger { conflicts.add(parsedPrimary.foundResourceConflict(entry.getKey(), entry.getValue())); } else { // If it's in none of the of sources, add it. - transitiveConsumers.overwritingConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.overwritingConsumer.accept(entry.getKey(), entry.getValue()); } } // combining resources for (Entry<DataKey, DataResource> entry : parsedPrimary.iterateCombiningEntries()) { - primaryConsumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + primaryConsumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } for (Map.Entry<DataKey, DataResource> entry : direct.iterateCombiningEntries()) { if (parsedPrimary.containsCombineable(entry.getKey())) { // If it is in the primary, add it to the primary to be combined. - primaryConsumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + primaryConsumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } else { // If the combining asset is not in the primary, put it into the transitive. - transitiveConsumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } } for (Map.Entry<DataKey, DataResource> entry : transitive.iterateCombiningEntries()) { if (parsedPrimary.containsCombineable(entry.getKey())) { - primaryConsumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + primaryConsumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } else { - transitiveConsumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } } // assets for (Entry<DataKey, DataAsset> entry : parsedPrimary.iterateAssetEntries()) { if (direct.containsAsset(entry.getKey())) { - primaryConsumers.assetConsumer.consume( + primaryConsumers.assetConsumer.accept( entry.getKey(), entry.getValue().overwrite(direct.getAsset(entry.getKey()))); } else { - primaryConsumers.assetConsumer.consume(entry.getKey(), entry.getValue()); + primaryConsumers.assetConsumer.accept(entry.getKey(), entry.getValue()); } } for (Map.Entry<DataKey, DataAsset> entry : direct.iterateAssetEntries()) { // Direct dependencies are simply overwritten, no conflict. if (!parsedPrimary.containsAsset(entry.getKey())) { - transitiveConsumers.assetConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.assetConsumer.accept(entry.getKey(), entry.getValue()); } } for (Map.Entry<DataKey, DataAsset> entry : transitive.iterateAssetEntries()) { @@ -372,7 +372,7 @@ class AndroidDataMerger { conflicts.add(parsedPrimary.foundAssetConflict(entry.getKey(), entry.getValue())); } else { // If it's in none of the of sources, add it. - transitiveConsumers.assetConsumer.consume(entry.getKey(), entry.getValue()); + transitiveConsumers.assetConsumer.accept(entry.getKey(), entry.getValue()); } } diff --git a/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java b/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java index 74c0bcb697..51b0688f10 100644 --- a/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java +++ b/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java @@ -111,9 +111,9 @@ public class DataResourceXml implements DataResource { resourceAttribute, namespaces); if (resourceAttribute.isCombining()) { - combiningConsumer.consume(fqn, resource); + combiningConsumer.accept(fqn, resource); } else { - overwritingConsumer.consume(fqn, resource); + overwritingConsumer.accept(fqn, resource); } } // Process resource declarations. @@ -149,7 +149,7 @@ public class DataResourceXml implements DataResource { FullyQualifiedName key = fqnFactory.create(resourceType, elementName); XmlResourceValue xmlResourceValue = parseXmlElements(resourceType, eventReader, start, namespacesCollector); - consumer.consume( + consumer.accept( key, DataResourceXml.createWithNamespaces( path, xmlResourceValue, namespacesCollector.toNamespaces())); diff --git a/src/tools/android/java/com/google/devtools/build/android/DataValueFileWithIds.java b/src/tools/android/java/com/google/devtools/build/android/DataValueFileWithIds.java index 052ec415a0..a577eeefae 100644 --- a/src/tools/android/java/com/google/devtools/build/android/DataValueFileWithIds.java +++ b/src/tools/android/java/com/google/devtools/build/android/DataValueFileWithIds.java @@ -78,9 +78,9 @@ public class DataValueFileWithIds { } catch (RuntimeException e) { throw new RuntimeException("Error parsing " + source, e); } - overwritingConsumer.consume(fileKey, DataValueFile.of(source)); + overwritingConsumer.accept(fileKey, DataValueFile.of(source)); for (String id : newIds.build()) { - combiningConsumer.consume( + combiningConsumer.accept( fqnFactory.parse("id/" + id), DataResourceXml.createWithNoNamespace(source, IdXmlResourceValue.of())); } diff --git a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java index cd3401e1db..fcc674d7f6 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java +++ b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java @@ -45,6 +45,7 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.concurrent.Callable; +import java.util.function.BiConsumer; import java.util.logging.Logger; import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.NotThreadSafe; @@ -53,7 +54,7 @@ import javax.xml.stream.XMLStreamException; /** * Represents a collection of Android Resources. * - * The ParsedAndroidData is the primary building block for merging several AndroidDependencies + * <p>The ParsedAndroidData is the primary building block for merging several AndroidDependencies * together. It extracts the android resource symbols (e.g. R.string.Foo) from the xml files to * allow an AndroidDataMerger to consume and produce a merged set of data. */ @@ -109,16 +110,16 @@ public class ParsedAndroidData { } /** Copies the data to the targetBuilder from the current builder. */ - public void copyTo(Builder targetBuilder) { + public void copyTo(Builder targetBuilder) { KeyValueConsumers consumers = targetBuilder.consumers(); for (Entry<DataKey, DataResource> entry : overwritingResources.entrySet()) { - consumers.overwritingConsumer.consume(entry.getKey(), entry.getValue()); + consumers.overwritingConsumer.accept(entry.getKey(), entry.getValue()); } for (Entry<DataKey, DataResource> entry : combiningResources.entrySet()) { - consumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + consumers.combiningConsumer.accept(entry.getKey(), entry.getValue()); } for (Entry<DataKey, DataAsset> entry : assets.entrySet()) { - consumers.assetConsumer.consume(entry.getKey(), entry.getValue()); + consumers.assetConsumer.accept(entry.getKey(), entry.getValue()); } targetBuilder.conflicts.addAll(conflicts); } @@ -143,10 +144,8 @@ public class ParsedAndroidData { } } - /** A Consumer style interface that will appendTo a DataKey and DataValue. */ - interface KeyValueConsumer<K extends DataKey, V extends DataValue> { - void consume(K key, V value); - } + /** A Consumer style interface that will accept a DataKey and DataValue. */ + interface KeyValueConsumer<K extends DataKey, V extends DataValue> extends BiConsumer<K, V> {} @VisibleForTesting static class CombiningConsumer implements KeyValueConsumer<DataKey, DataResource> { @@ -158,7 +157,7 @@ public class ParsedAndroidData { } @Override - public void consume(DataKey key, DataResource value) { + public void accept(DataKey key, DataResource value) { if (target.containsKey(key)) { target.put(key, target.get(key).combineWith(value)); } else { @@ -185,7 +184,7 @@ public class ParsedAndroidData { } @Override - public void consume(K key, V value) { + public void accept(K key, V value) { if (target.containsKey(key)) { V other = target.get(key); if (other.source().hasOveridden(value.source())) { @@ -260,7 +259,7 @@ public class ParsedAndroidData { if (!Files.isDirectory(path)) { RelativeAssetPath key = dataKeyFactory.create(path); DataValueFile asset = DataValueFile.of(path); - assetConsumer.consume(key, asset); + assetConsumer.accept(key, asset); } return super.visitFile(path, attrs); } @@ -277,15 +276,16 @@ public class ParsedAndroidData { private FullyQualifiedName.Factory fqnFactory; /** - * Resource folders with XML files that may contain "@+id". - * See android_ide_common's {@link FolderTypeRelationship}. + * Resource folders with XML files that may contain "@+id". See android_ide_common's {@link + * FolderTypeRelationship}. */ - private static final EnumSet<ResourceFolderType> ID_PROVIDING_RESOURCE_TYPES = EnumSet.of( - ResourceFolderType.DRAWABLE, - ResourceFolderType.LAYOUT, - ResourceFolderType.MENU, - ResourceFolderType.TRANSITION, - ResourceFolderType.XML); + private static final EnumSet<ResourceFolderType> ID_PROVIDING_RESOURCE_TYPES = + EnumSet.of( + ResourceFolderType.DRAWABLE, + ResourceFolderType.LAYOUT, + ResourceFolderType.MENU, + ResourceFolderType.TRANSITION, + ResourceFolderType.XML); ResourceFileVisitor( KeyValueConsumer<DataKey, DataResource> overwritingConsumer, @@ -299,8 +299,8 @@ public class ParsedAndroidData { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { - final String[] dirNameAndQualifiers = dir.getFileName().toString().split( - SdkConstants.RES_QUALIFIER_SEP); + final String[] dirNameAndQualifiers = + dir.getFileName().toString().split(SdkConstants.RES_QUALIFIER_SEP); folderType = ResourceFolderType.getTypeByName(dirNameAndQualifiers[0]); if (folderType == null) { return FileVisitResult.CONTINUE; @@ -338,7 +338,7 @@ public class ParsedAndroidData { overwritingConsumer, combiningResources); } else { - overwritingConsumer.consume(key, DataValueFile.of(path)); + overwritingConsumer.accept(key, DataValueFile.of(path)); } } } @@ -361,7 +361,7 @@ public class ParsedAndroidData { /** * Creates an ParsedAndroidData from an UnvalidatedAndroidData. * - * The adding process parses out all the provided symbol into DataResources and DataAssets + * <p>The adding process parses out all the provided symbol into DataResources and DataAssets * objects. * * @param primary The primary data to parse into DataResources and DataAssets. @@ -379,11 +379,11 @@ public class ParsedAndroidData { /** * Creates an ParsedAndroidData from a list of DependencyAndroidData instances. * - * The adding process parses out all the provided symbol into DataResources and DataAssets + * <p>The adding process parses out all the provided symbol into DataResources and DataAssets * objects. * * @param dependencyAndroidDataList The dependency data to parse into DataResources and - * DataAssets. + * DataAssets. * @throws IOException when there are issues with reading files. * @throws MergingException when there is invalid resource information. */ @@ -509,10 +509,9 @@ public class ParsedAndroidData { /** * Returns a list of resources that would overwrite other values when defined. * - * <p> - * Example: + * <p>Example: * - * A string resource (string.Foo=bar) could be redefined at string.Foo=baz. + * <p>A string resource (string.Foo=bar) could be redefined at string.Foo=baz. * * @return A map of key -> overwriting resources. */ @@ -524,12 +523,11 @@ public class ParsedAndroidData { /** * Returns a list of resources are combined with other values that have the same key. * - * <p> - * Example: + * <p>Example: * - * A id resource (id.Foo) combined id.Foo with no adverse effects, whereas two stylable.Bar - * resources would be combined, resulting in a Styleable containing a union of the attributes. - * See {@link StyleableXmlResourceValue} for more information. + * <p>A id resource (id.Foo) combined id.Foo with no adverse effects, whereas two stylable.Bar + * resources would be combined, resulting in a Styleable containing a union of the attributes. See + * {@link StyleableXmlResourceValue} for more information. * * @return A map of key -> combing resources. */ @@ -541,11 +539,11 @@ public class ParsedAndroidData { /** * Returns a list of assets. * - * Assets always overwrite during merging, just like overwriting resources. - * <p> - * Example: + * <p>Assets always overwrite during merging, just like overwriting resources. + * + * <p>Example: * - * A text asset (foo/bar.txt, containing fooza) could be replaced with (foo/bar.txt, containing + * <p>A text asset (foo/bar.txt, containing fooza) could be replaced with (foo/bar.txt, containing * ouza!) depending on the merging process. * * @return A map of key -> assets. @@ -577,7 +575,7 @@ public class ParsedAndroidData { resource.getValue().writeResource((FullyQualifiedName) resource.getKey(), writer); } } - + void serializeResourcesTo(AndroidDataSerializer serializer) { for (Entry<DataKey, DataResource> resource : iterateDataResourceEntries()) { serializer.queueForSerialization(resource.getKey(), resource.getValue()); @@ -589,7 +587,7 @@ public class ParsedAndroidData { resource.getValue().writeAsset((RelativeAssetPath) resource.getKey(), writer); } } - + void serializeAssetsTo(AndroidDataSerializer serializer) { for (Entry<DataKey, DataAsset> resource : iterateAssetEntries()) { serializer.queueForSerialization(resource.getKey(), resource.getValue()); @@ -626,10 +624,10 @@ public class ParsedAndroidData { // Feed the consumer keys and values that will be overwritten, followed by the overwritting // value. This ensures the proper book keeping is done inside the consumer. for (K key : overwritten) { - consumer.consume(key, overwritee.get(key)); + consumer.accept(key, overwritee.get(key)); } for (K key : overwriter.keySet()) { - consumer.consume(key, overwriter.get(key)); + consumer.accept(key, overwriter.get(key)); } } @@ -639,7 +637,7 @@ public class ParsedAndroidData { CombiningConsumer consumer = new CombiningConsumer(combinedResources); for (Entry<DataKey, DataResource> entry : Iterables.concat(combiningResources.entrySet(), other.combiningResources.entrySet())) { - consumer.consume(entry.getKey(), entry.getValue()); + consumer.accept(entry.getKey(), entry.getValue()); } return of(conflicts, overwritingResources, ImmutableMap.copyOf(combinedResources), assets); } diff --git a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java index 3e4d200f63..432cfc7495 100644 --- a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java +++ b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java @@ -154,7 +154,7 @@ public class XmlResourceValues { if (XmlResourceValues.getElementAttributeByName(attr, ATTR_FORMAT) != null || (XmlResourceValues.peekNextTag(eventReader) != null && XmlResourceValues.peekNextTag(eventReader).isStartElement())) { - overwritingConsumer.consume( + overwritingConsumer.accept( attrName, DataResourceXml.createWithNoNamespace(path, parseAttr(eventReader, attr))); members.put(attrName, Boolean.TRUE); } else { @@ -162,7 +162,7 @@ public class XmlResourceValues { } } } - combiningConsumer.consume( + combiningConsumer.accept( fqnFactory.create(ResourceType.STYLEABLE, getElementName(start)), DataResourceXml.createWithNoNamespace(path, StyleableXmlResourceValue.of(members))); } |