private static ProtoFieldInterpreter getListType(final ProtoFieldInterpreter local) { return new ProtoFieldInterpreter() { @Override public SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<?> entries = (List<?>) field; ImmutableList.Builder<SoyValueProvider> builder = ImmutableList.builder(); for (Object item : entries) { builder.add(local.soyFromProto(item)); } return ListImpl.forProviderList(builder.build()); } @Override Object protoFromSoy(SoyValue field) { SoyList list = (SoyList) field; List<Object> uninterpretedValues = new ArrayList<>(); for (SoyValue item : list.asResolvedJavaList()) { uninterpretedValues.add(local.protoFromSoy(item)); } return uninterpretedValues; } }; }
private ProtoFieldInterpreter impl() { ProtoFieldInterpreter local = interpreter; if (local == null) { local = ProtoFieldInterpreter.create(getDescriptor()); } return local; }
@Override Object protoFromSoy(SoyValue field) { SoyList list = (SoyList) field; List<Object> uninterpretedValues = new ArrayList<>(); for (SoyValue item : list.asResolvedJavaList()) { uninterpretedValues.add(local.protoFromSoy(item)); } return uninterpretedValues; } };
@Override public SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<?> entries = (List<?>) field; ImmutableList.Builder<SoyValueProvider> builder = ImmutableList.builder(); for (Object item : entries) { builder.add(local.soyFromProto(item)); } return ListImpl.forProviderList(builder.build()); }
@Override public SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<?> entries = (List<?>) field; ImmutableList.Builder<SoyValueProvider> builder = ImmutableList.builder(); for (Object item : entries) { builder.add(local.soyFromProto(item)); } return ListImpl.forProviderList(builder.build()); }
@Override SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<Message> entries = (List<Message>) field; ImmutableMap.Builder<SoyValue, SoyValueProvider> builder = ImmutableMap.builder(); for (Message message : entries) { SoyValue key = keyField.soyFromProto(message.getField(keyDescriptor)).resolve(); builder.put(key, valueField.soyFromProto(message.getField(valueDescriptor))); } return SoyMapImpl.forProviderMap(builder.build()); }
private static ProtoFieldInterpreter getListType(final ProtoFieldInterpreter local) { return new ProtoFieldInterpreter() { @Override public SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<?> entries = (List<?>) field; ImmutableList.Builder<SoyValueProvider> builder = ImmutableList.builder(); for (Object item : entries) { builder.add(local.soyFromProto(item)); } return ListImpl.forProviderList(builder.build()); } @Override Object protoFromSoy(SoyValue field) { SoyList list = (SoyList) field; List<Object> uninterpretedValues = new ArrayList<>(); for (SoyValue item : list.asResolvedJavaList()) { uninterpretedValues.add(local.protoFromSoy(item)); } return uninterpretedValues; } }; }
@Override Object protoFromSoy(SoyValue field) { SoyList list = (SoyList) field; List<Object> uninterpretedValues = new ArrayList<>(); for (SoyValue item : list.asResolvedJavaList()) { uninterpretedValues.add(local.protoFromSoy(item)); } return uninterpretedValues; } };
private ProtoFieldInterpreter impl() { ProtoFieldInterpreter local = interpreter; if (local == null) { local = ProtoFieldInterpreter.create(getDescriptor()); } return local; }
@Override SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<Message> entries = (List<Message>) field; Map<SoyValue, SoyValueProvider> map = Maps.newHashMapWithExpectedSize(entries.size()); for (Message message : entries) { SoyValue key = keyField.soyFromProto(message.getField(keyDescriptor)).resolve(); map.put(key, valueField.soyFromProto(message.getField(valueDescriptor))); } return SoyMapImpl.forProviderMap(map); }
return new ProtoFieldInterpreter() {
@Override Object protoFromSoy(SoyValue field) { SoyMap map = (SoyMap) field; // Proto map fields use a non-standard API. A protobuf map is actually a repeated list of // MapEntry quasi-messages, which one cannot mutate in-place inside a map. ImmutableList.Builder<Message> mapEntries = ImmutableList.builder(); Message.Builder defaultInstance = DynamicMessage.newBuilder(messageDescriptor.getContainingType()); for (Map.Entry<? extends SoyValue, ? extends SoyValueProvider> entry : map.asJavaMap().entrySet()) { Message.Builder entryBuilder = defaultInstance.newBuilderForField(mapField); entryBuilder.setField(keyDescriptor, keyField.protoFromSoy(entry.getKey())); entryBuilder.setField( valueDescriptor, valueField.protoFromSoy(entry.getValue().resolve())); mapEntries.add(entryBuilder.build()); } return mapEntries.build(); } };
@Override public SoyValue soyFromProto(Object field) { @SuppressWarnings("unchecked") List<Message> entries = (List<Message>) field; ImmutableMap.Builder<String, SoyValueProvider> builder = ImmutableMap.builder(); for (Message message : entries) { String key = (String) message.getField(keyFieldDescriptor); if (key.isEmpty()) { // Ignore empty keys. continue; } builder.put(key, scalarImpl.soyFromProto(message)); } return DictImpl.forProviderMap(builder.build(), RuntimeType.LEGACY_OBJECT_MAP_OR_RECORD); }
return new ProtoFieldInterpreter() { @Override public SoyValue soyFromProto(Object field) {
@Override Object protoFromSoy(SoyValue field) { SoyMap map = (SoyMap) field; // Proto map fields use a non-standard API. A protobuf map is actually a repeated list of // MapEntry quasi-messages, which one cannot mutate in-place inside a map. ImmutableList.Builder<Message> mapEntries = ImmutableList.builder(); Message.Builder defaultInstance = DynamicMessage.newBuilder(messageDescriptor.getContainingType()); for (Map.Entry<? extends SoyValue, ? extends SoyValueProvider> entry : map.asJavaMap().entrySet()) { Message.Builder entryBuilder = defaultInstance.newBuilderForField(mapField); entryBuilder.setField(keyDescriptor, keyField.protoFromSoy(entry.getKey())); entryBuilder.setField( valueDescriptor, valueField.protoFromSoy(entry.getValue().resolve())); mapEntries.add(entryBuilder.build()); } return mapEntries.build(); } };
@Override public SoyValue interpretField(Message message) { return impl().soyFromProto(message.getField(getDescriptor())); }
return new ProtoFieldInterpreter() {
@Override public void assignField(Message.Builder builder, SoyValue value) { builder.setField(getDescriptor(), impl().protoFromSoy(value)); }
@Override public SoyValue interpretField(Message message) { return impl().soyFromProto(message.getField(getDescriptor())); }
final FieldDescriptor keyDescriptor = messageDescriptor.getFields().get(0); final FieldDescriptor valueDescriptor = messageDescriptor.getFields().get(1); return new ProtoFieldInterpreter() {