@Override public int size() { return multimap.size(); }
@Override public int size() { return multimap.size(); }
@Override public int size() { return multimap.size(); }
@Override public int size() { return multimap.size(); }
@Override public int size() { return multimap.size(); }
@Override public int size() { return multimap.size(); }
@Override Spliterator<Entry<K, V>> entrySpliterator() { return CollectSpliterators.flatMap( asMap().entrySet().spliterator(), keyToValueCollectionEntry -> { K key = keyToValueCollectionEntry.getKey(); Collection<V> valueCollection = keyToValueCollectionEntry.getValue(); return CollectSpliterators.map( valueCollection.spliterator(), (V value) -> Maps.immutableEntry(key, value)); }, Spliterator.SIZED | (this instanceof SetMultimap ? Spliterator.DISTINCT : 0), size()); }
@Override Spliterator<Entry<K, V>> entrySpliterator() { return CollectSpliterators.flatMap( asMap().entrySet().spliterator(), keyToValueCollectionEntry -> { K key = keyToValueCollectionEntry.getKey(); Collection<V> valueCollection = keyToValueCollectionEntry.getValue(); return CollectSpliterators.map( valueCollection.spliterator(), (V value) -> Maps.immutableEntry(key, value)); }, Spliterator.SIZED | (this instanceof SetMultimap ? Spliterator.DISTINCT : 0), size()); }
@CheckReturnValue public BundleModule sanitize(BundleModule module) { // The maps index native files by their containing ABI directory (example key is "lib/x86"). ImmutableMultimap<ZipPath, ModuleEntry> libFilesByAbiDir = indexLibFilesByAbiDir(module); ImmutableMultimap<ZipPath, ModuleEntry> libFilesByAbiDirToKeep = discardAbiDirsWithTooFewFiles(libFilesByAbiDir); if (libFilesByAbiDirToKeep.size() == libFilesByAbiDir.size()) { // ABI directories are correct, nothing to do. return module; } logger.warning( String.format( "Native directories of module '%s' don't contain the same number of files." + " The following files were therefore discarded: %s", module.getName(), Sets.difference( ImmutableSet.copyOf(libFilesByAbiDir.values()), ImmutableSet.copyOf(libFilesByAbiDirToKeep.values())) .stream() .map(ModuleEntry::getPath) .map(ZipPath::toString) .sorted() .collect(toImmutableList()))); return sanitizedModule(module, libFilesByAbiDirToKeep); }
@Override public String toString() { return "FormDataPart{" + "headers.size=" + headers.size() + ", contentDisposition=" + quote(contentDisposition) + ", file=" + file + '}'; }
public static <R extends HttpRequest> R indexStringArrayToFormValuesWithPrefix(R request, String prefix, Object input) { checkArgument(checkNotNull(input, "input") instanceof String[], "this binder is only valid for String[] : " + input.getClass()); String[] values = (String[]) input; Builder<String, String> builder = ImmutableMultimap.builder(); for (int i = 0; i < values.length; i++) { builder.put(prefix + "." + (i + 1), checkNotNull(values[i], prefix.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { Iterable<?> values = Iterable.class.cast(checkNotNull(input, "attributeNames")); Builder<String, String> builder = ImmutableMultimap.builder(); int i = 0; for (Object o : values) { builder.put("AttributeName." + (i++ + 1), o.toString()); } ImmutableMultimap<String, String> forms = builder.build(); return (R) (forms.size() == 0 ? request : request.toBuilder().replaceFormParams(forms).build()); }
public static <R extends HttpRequest> R indexStringArrayToFormValuesWithStringFormat(R request, String format, Object input) { checkArgument(checkNotNull(input, "input") instanceof String[], "this binder is only valid for String[] : " + input.getClass()); String[] values = (String[]) input; Builder<String, String> builder = ImmutableMultimap.builder(); for (int i = 0; i < values.length; i++) { builder.put(String.format(format, i + 1), checkNotNull(values[i], format.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
public static <R extends HttpRequest> R indexIterableToFormValuesWithPrefix(R request, String prefix, Object input) { checkArgument(checkNotNull(input, "input") instanceof Iterable<?>, "this binder is only valid for Iterable<?>: " + input.getClass()); Iterable<?> values = (Iterable<?>) input; Builder<String, String> builder = ImmutableMultimap.builder(); int i = 0; for (Object o : values) { builder.put(prefix + "." + (i++ + 1), checkNotNull(o.toString(), prefix.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
public static <R extends HttpRequest> R indexStringArrayToFormValuesWithStringFormat(R request, String format, Object input) { checkArgument(checkNotNull(input, "input") instanceof String[], "this binder is only valid for String[] : " + input.getClass()); String[] values = (String[]) input; Builder<String, String> builder = ImmutableMultimap.builder(); for (int i = 0; i < values.length; i++) { builder.put(String.format(format, (i + 1)), checkNotNull(values[i], format.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
public static <R extends HttpRequest> R indexStringArrayToFormValuesWithStringFormat(R request, String format, Object input) { checkArgument(checkNotNull(input, "input") instanceof String[], "this binder is only valid for String[] : " + input.getClass()); String[] values = (String[]) input; Builder<String, String> builder = ImmutableMultimap.builder(); for (int i = 0; i < values.length; i++) { builder.put(String.format(format, i + 1), checkNotNull(values[i], format.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
public static <R extends HttpRequest> R indexStringArrayToFormValuesWithPrefix(R request, String prefix, Object input) { checkArgument(checkNotNull(input, "input") instanceof String[], "this binder is only valid for String[] : " + input.getClass()); String[] values = (String[]) input; Builder<String, String> builder = ImmutableMultimap.builder(); for (int i = 0; i < values.length; i++) { builder.put(prefix + "." + (i + 1), checkNotNull(values[i], prefix.toLowerCase() + "s[" + i + "]")); } ImmutableMultimap<String, String> forms = builder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { Iterable<?> values = Iterable.class.cast(checkNotNull(input, "attributeNames")); Builder<String, String> builder = ImmutableMultimap.builder(); int i = 0; for (Object o : values) { builder.put("AttributeName." + (i++ + 1), o.toString()); } ImmutableMultimap<String, String> forms = builder.build(); return (R) (forms.size() == 0 ? request : request.toBuilder().replaceFormParams(forms).build()); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof Iterable, "this binder is only valid for Iterable<IpPermission>"); Builder<String, String> formBuilder = ImmutableMultimap.builder(); int index = 0; for (IpPermission perm : (Iterable<IpPermission>) input) formBuilder.putAll(IpPermissions.buildFormParametersForIndex(index++, perm)); ImmutableMultimap<String, String> forms = formBuilder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { checkArgument(checkNotNull(input, "input") instanceof Iterable, "this binder is only valid for Iterable<IpPermission>"); Builder<String, String> formBuilder = ImmutableMultimap.builder(); int index = 0; for (IpPermission perm : (Iterable<IpPermission>) input) formBuilder.putAll(IpPermissions.buildFormParametersForIndex(index++, perm)); ImmutableMultimap<String, String> forms = formBuilder.build(); return forms.size() == 0 ? request : (R) request.toBuilder().replaceFormParams(forms).build(); }