static TypeParameterTree typeParameterInList( List<? extends TypeParameterTree> typeParameters, Symbol v) { return typeParameters.stream() .filter(t -> t.getName().contentEquals(v.name)) .collect(MoreCollectors.onlyElement()); }
@VisibleForTesting static TransferExtension findTransferExtension( ImmutableList<TransferExtension> transferExtensions, String service) { try { return transferExtensions .stream() .filter(ext -> ext.getServiceId().toLowerCase().equals(service.toLowerCase())) .collect(onlyElement()); } catch (IllegalArgumentException e) { throw new IllegalStateException( "Found multiple transfer extensions for service " + service, e); } catch (NoSuchElementException e) { throw new IllegalStateException( "Did not find a valid transfer extension for service " + service, e); } }
public void testOnlyElement() { try { Stream.empty().collect(MoreCollectors.onlyElement()); fail("Expected NoSuchElementException"); } catch (NoSuchElementException expected) { } }
public void testOnlyElementNull() { assertThat(Stream.of((Object) null).collect(MoreCollectors.onlyElement())).isNull(); }
public void testOnlyElementSingleton() { assertThat(Stream.of(1).collect(MoreCollectors.onlyElement())).isEqualTo(1); }
public void testOnlyElementMany() { try { Stream.of(1, 2, 3, 4, 5, 6).collect(MoreCollectors.onlyElement()); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertThat(expected.getMessage()).contains("1, 2, 3, 4, 5, ..."); } } }
public void testOnlyElementMultiple() { try { Stream.of(1, 2).collect(MoreCollectors.onlyElement()); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertThat(expected.getMessage()).contains("1, 2"); } }
(int) idCount.values().stream() .distinct() .collect(onlyElement()), 3); assertEquals(idCount.keySet(), expectedIds);
private static ImmutableSet<AbiAlias> getMultiAbi(VariantTargeting variantTargeting) { if (variantTargeting.getMultiAbiTargeting().getValueList().isEmpty()) { return ImmutableSet.of(); } return variantTargeting.getMultiAbiTargeting().getValueList().stream() // For now we only support one value in MultiAbiTargeting. .collect(MoreCollectors.onlyElement()) .getAbiList() .stream() .map(Abi::getAlias) .collect(toImmutableSet()); }
private static Optional<AbiAlias> getAbi(VariantTargeting variantTargeting) { if (variantTargeting.getAbiTargeting().getValueList().isEmpty()) { return Optional.empty(); } return Optional.of( variantTargeting .getAbiTargeting() .getValueList() .stream() // For now we only support one value in AbiTargeting. .collect(MoreCollectors.onlyElement()) .getAlias()); }
public static Optional<Integer> getScreenDensityDpi( ScreenDensityTargeting screenDensityTargeting) { if (screenDensityTargeting.getValueList().isEmpty()) { return Optional.empty(); } ScreenDensity densityTargeting = screenDensityTargeting.getValueList().stream() // For now we only support one value in ScreenDensityTargeting. .collect(MoreCollectors.onlyElement()); return Optional.of( densityTargeting.getDensityOneofCase().equals(DENSITY_ALIAS) ? DENSITY_ALIAS_TO_DPI_MAP.get(densityTargeting.getDensityAlias()) : densityTargeting.getDensityDpi()); } }
extractFilesFromJar(outputDir, osDirUrl, osDir); try (Stream<Path> aapt2Binaries = Files.find(outputDir, /* maxDepth= */ 3, AAPT2_MATCHER)) { aapt2 = aapt2Binaries.collect(onlyElement());
private static ModuleSplit findModuleSplitWithDefaultTargeting( ImmutableCollection<ModuleSplit> moduleSplits) { return moduleSplits.stream() .filter(split -> split.getApkTargeting().equals(ApkTargeting.getDefaultInstance())) .collect(onlyElement()); } }
private static ModuleSplit findModuleSplitWithScreenDensityTargeting( ImmutableCollection<ModuleSplit> moduleSplits, ScreenDensity density) { return moduleSplits.stream() .filter( split -> split.getApkTargeting().getScreenDensityTargeting().getValueCount() > 0 && density.equals( split.getApkTargeting().getScreenDensityTargeting().getValue(0))) .collect(onlyElement()); }
@Test public void modifyingDeepElementReflectsChangeInParentsToo() throws Exception { XmlNode.Builder xmlNode = XmlNode.newBuilder(); TextFormat.merge(TestData.openReader("testdata/manifest/manifest1.textpb"), xmlNode); XmlProtoNodeBuilder node = new XmlProtoNode(xmlNode.build()).toBuilder(); node.getElement() .getChildElement("uses-sdk") .getOrCreateAndroidAttribute("minSdkVersion", 0x0101020c) .setValueAsDecimalInteger(999); assertThat( node.build() .getProto() .getElement() .getChildList() .stream() .filter(childNode -> childNode.getElement().getName().equals("uses-sdk")) .collect(onlyElement()) .getElement() .getAttributeList() .stream() .filter(attribute -> attribute.getName().equals("minSdkVersion")) .collect(onlyElement()) .getCompiledItem() .getPrim() .getIntDecimalValue()) .isEqualTo(999); } }
@Test public void process_fileExists() { InMemoryModuleEntry existingInMemoryModuleEntry = InMemoryModuleEntry.ofFile("res/xml/splits0.xml", "123".getBytes(UTF_8)); ModuleSplit baseMasterSplit = createModuleSplit( BASE_MODULE_NAME, /* splitId= */ "", /* masterSplit= */ true, SPLIT, /* languageTargeting= */ null) .toBuilder() .setEntries(ImmutableList.of(existingInMemoryModuleEntry)) .build(); ModuleSplit processedBaseMasterSplit = splitsXmlInjector .process(GeneratedApks.fromModuleSplits(ImmutableList.of(baseMasterSplit))) .getAllApksStream() .collect(onlyElement()); assertThat(processedBaseMasterSplit.getEntries()).hasSize(2); assertThat(processedBaseMasterSplit.getEntries()).contains(existingInMemoryModuleEntry); assertThat(processedBaseMasterSplit.getEntries().get(1).getPath().toString()) .isEqualTo("res/xml/splits1.xml"); assertThat(processedBaseMasterSplit.getResourceTable().get()) .containsResource("com.example.app:xml/splits1") .withFileReference("res/xml/splits1.xml"); }
assertThat(languageSplits).hasSize(2); ModuleSplit masterSplit = languageSplits.stream().filter(split -> split.isMasterSplit()).collect(onlyElement()); assertThat(masterSplit.getResourceTable()) .hasValue( languageSplits.stream().filter(split -> !split.isMasterSplit()).collect(onlyElement()); assertThat(configSplit.getApkTargeting()).isEqualTo(apkLanguageTargeting("en")); assertThat(configSplit.getResourceTable())
Collection<ModuleSplit> languageSplits = languageSplitter.split(baseSplit); ModuleSplit masterSplit = languageSplits.stream().filter(split -> split.isMasterSplit()).collect(onlyElement()); assertThat(masterSplit.getResourceTable()) .hasValue(
densitySplits.stream().filter(split -> split.isMasterSplit()).collect(onlyElement()); assertThat(extractPaths(masterSplit.getEntries())) .containsExactly("res/drawable-mdpi/image.jpg", "res/drawable-hdpi/image.jpg");
splitsXmlInjector.process(GeneratedApks.fromModuleSplits(ImmutableList.of(standalone))); ModuleSplit processedStandalone = result.getAllApksStream().collect(onlyElement());