下面列出了怎么用com.google.common.collect.ImmutableBiMap.Builder的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Create a prefix {@link Converter} for {@link XPathExpressionException} defined in a particular YANG
* {@link Module} .Instantiation requires establishing how a module's imports are mapped to actual modules
* and their namespaces. This information is cached and used for improved lookups.
*
* @param ctx A SchemaContext
* @param module Module in which the XPath is defined
* @return A new Converter
*/
public static @NonNull Converter<String, QNameModule> create(final SchemaContext ctx, final Module module) {
// Always check for null ctx
requireNonNull(ctx, "Schema context may not be null");
// Use immutable map builder for detection of duplicates (which should never occur)
final Builder<String, QNameModule> b = ImmutableBiMap.builder();
b.put(module.getPrefix(), module.getQNameModule());
for (ModuleImport i : module.getImports()) {
final Optional<? extends Module> mod = ctx.findModule(i.getModuleName(), i.getRevision());
checkArgument(mod.isPresent(), "Unsatisfied import of %s by module %s", i, module);
b.put(i.getPrefix(), mod.get().getQNameModule());
}
return Maps.asConverter(b.build());
}
@Override
public void fromBinary(final byte[] bytes) {
final ByteBuffer buf = ByteBuffer.wrap(bytes);
final int numSfcs = VarintUtils.readUnsignedInt(buf);
final int numDimensions = VarintUtils.readUnsignedInt(buf);
final int mappingSize = VarintUtils.readUnsignedInt(buf);
maxEstimatedDuplicateIdsPerDimension = VarintUtils.readUnsignedLong(buf);
orderedSfcs = new SpaceFillingCurve[numSfcs];
baseDefinitions = new NumericDimensionDefinition[numDimensions];
for (int i = 0; i < numSfcs; i++) {
final byte[] sfc = ByteArrayUtils.safeRead(buf, VarintUtils.readUnsignedInt(buf));
orderedSfcs[i] = (SpaceFillingCurve) PersistenceUtils.fromBinary(sfc);
}
for (int i = 0; i < numDimensions; i++) {
final byte[] dim = ByteArrayUtils.safeRead(buf, VarintUtils.readUnsignedInt(buf));
baseDefinitions[i] = (NumericDimensionDefinition) PersistenceUtils.fromBinary(dim);
}
final Builder<Integer, Byte> bimapBuilder = ImmutableBiMap.builder();
for (int i = 0; i < mappingSize; i++) {
bimapBuilder.put(Byte.valueOf(buf.get()).intValue(), buf.get());
}
orderedSfcIndexToTierId = bimapBuilder.build();
initDuplicateIdLookup();
}
public static BiMapYangNamespaceContext readFrom(final DataInput in) throws IOException {
final int size = in.readInt();
final Builder<String, QNameModule> builder = ImmutableBiMap.builder();
for (int i = 0; i < size; ++i) {
final String prefix = in.readUTF();
final QNameModule namespace = QNameModule.readFrom(in);
builder.put(prefix, namespace);
}
return new BiMapYangNamespaceContext(builder.build());
}
/**
* Convert this object to an equivalent {@link BiMapYangNamespaceContext}.
*
* @return A BiMapYangNamespaceContext.
*/
public BiMapYangNamespaceContext toBiMap() {
final Builder<String, QNameModule> builder = ImmutableBiMap.builder();
for (String name : schemaContext.getModules().stream().map(Module::getName).collect(Collectors.toSet())) {
builder.put(name, findNamespaceForPrefix(name).get());
}
return new BiMapYangNamespaceContext(builder.build());
}
public Map<String, Body> getPrefixedWith(String prefix) {
ImmutableMap.Builder<String, Body> matching = new Builder<String, Body>();
for (Map.Entry<String, Body> entry : bodies.entrySet()) {
if (entry.getKey().startsWith(prefix)) {
matching.put(entry);
}
}
return matching.build();
}
private Builder<String, String> getNamespaces() {
return this.bimap;
}