private SoyValueProvider doGetFieldProvider(final String name) { if (!doHasField(name)) { // jspb implements proto.getUnsetField() incorrectly. It should return default value for the // type (0, "", etc.), but jspb returns null instead. We follow jspb semantics, so return null // here, and the value will be converted to NullData higher up the chain. return null; } return clazz().fields.get(name).interpretField(proto).resolve(); }
@Override public SoyValue getProtoField(String name) { FieldWithInterpreter field = clazz().fields.get(name); if (field == null) { throw new IllegalArgumentException( "Proto " + proto.getClass().getName() + " does not have a field of name " + name); } if (field.shouldCheckFieldPresenceToEmulateJspbNullability() && !proto.hasField(field.getDescriptor())) { return NullData.INSTANCE; } return field.interpretField(proto).resolve(); }
private SoyValueProvider doGetFieldProvider(final String name) { if (!doHasField(name)) { // jspb implements proto.getUnsetField() incorrectly. It should return default value for the // type (0, "", etc.), but jspb returns null instead. We follow jspb semantics, so return null // here, and the value will be converted to NullData higher up the chain. return null; } return clazz().fields.get(name).interpretField(proto).resolve(); }
@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); }
@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()); }