@Override public boolean isRepeated() { return getProtoType().isRepeated(); }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { return new TypeName("dict"); } else if (type.isRepeated()) { return new TypeName("list"); } else { return getTypeNameForElementType(type); } }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { return new TypeName("Hash"); } else if (type.isRepeated()) { return new TypeName("Array"); } else { return getTypeNameForElementType(type); } }
@Override public boolean isPrimitive(TypeModel typeModel) { if (!(typeModel instanceof ProtoTypeRef)) { return typeModel.isPrimitive(); } TypeRef type = ((ProtoTypeRef) typeModel).getProtoType(); if (type.isRepeated()) { return false; } switch (type.getKind()) { case TYPE_BOOL: case TYPE_DOUBLE: case TYPE_ENUM: case TYPE_FIXED32: case TYPE_FIXED64: case TYPE_FLOAT: case TYPE_INT32: case TYPE_INT64: case TYPE_SFIXED32: case TYPE_SFIXED64: case TYPE_SINT32: case TYPE_SINT64: case TYPE_UINT32: case TYPE_UINT64: return true; default: return false; } }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { return new TypeName("array"); } else if (type.isRepeated()) { TypeName elementTypeName = getTypeNameForElementType(type); return new TypeName("", "", "%i[]", elementTypeName); } else { return getTypeNameForElementType(type); } }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { return new TypeName("Object"); } else if (type.isRepeated()) { TypeName elementTypeName = getTypeNameForElementType(type); return new TypeName("", "", "%i[]", elementTypeName); } else { return getTypeNameForElementType(type); } }
private TypeName getTypeNameForTypedResourceName( ResourceNameConfig resourceNameConfig, TypeRef type, String typedResourceShortName) { String longName = getResourceNamePackage(resourceNameConfig) + "." + typedResourceShortName; TypeName simpleTypeName = new TypeName(longName, typedResourceShortName); if (type.isMap()) { throw new IllegalArgumentException("Map type not supported for typed resource name"); } else if (type.isRepeated()) { TypeName listTypeName = typeNameConverter.getTypeName("java.util.List"); return new TypeName( listTypeName.getFullName(), listTypeName.getNickname(), "%s<%i>", simpleTypeName); } else { return simpleTypeName; } }
@Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call getTypeName; we don't need to import these. if (type.isMap()) { return TypedValue.create(new TypeName("dict"), "{}"); } if (type.isRepeated()) { return TypedValue.create(new TypeName("list"), "[]"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { return TypedValue.create(getTypeName(type), "{}"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(new TypeName(""), "None"); }
/** * Returns the PHP representation of a zero value for that type, to be used in code sample doc. */ @Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call getTypeName; we don't need to import these. if (type.isMap()) { return TypedValue.create(new TypeName("array"), "[]"); } if (type.isRepeated()) { return TypedValue.create(new TypeName("array"), "[]"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { return TypedValue.create(getTypeName(type), "new %s()"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(new TypeName(""), "null"); }
/** * Returns the Ruby representation of a zero value for that type, to be used in code sample doc. */ @Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call getTypeName; we don't need to import these. if (type.isMap()) { return TypedValue.create(new TypeName("Hash"), "{}"); } if (type.isRepeated()) { return TypedValue.create(new TypeName("Array"), "[]"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { TypeName typeName = getTypeName(type); return TypedValue.create(typeName, "{}"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(new TypeName(""), "nil"); }
/** * Returns the NodeJS representation of a zero value for that type, to be used in code sample doc. */ @Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call getTypeName; we don't need to import these. if (type.isMap()) { return TypedValue.create(new TypeName("Object"), "{}"); } if (type.isRepeated()) { return TypedValue.create(new TypeName("Array"), "[]"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { return TypedValue.create(getTypeName(type), "{}"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(new TypeName(""), "null"); }
/** * Returns the Java representation of a zero value for that type, to be used in code sample doc. * * <p>Parametric types may use the diamond operator, since the return value will be used only in * initialization. */ @Override public TypedValue getSnippetZeroValue(TypeRef type) { // Don't call importAndGetShortestName; we don't need to import these. if (type.isMap()) { return TypedValue.create(typeNameConverter.getTypeName("java.util.HashMap"), "new %s<>()"); } if (type.isRepeated()) { return TypedValue.create(typeNameConverter.getTypeName("java.util.ArrayList"), "new %s<>()"); } if (PRIMITIVE_ZERO_VALUE.containsKey(type.getKind())) { return TypedValue.create(getTypeName(type), PRIMITIVE_ZERO_VALUE.get(type.getKind())); } if (type.isMessage()) { return TypedValue.create(getTypeName(type), "%s.newBuilder().build()"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } return TypedValue.create(getTypeName(type), "null"); }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { TypeName keyTypeName = getTypeNameForElementType(type.getMapKeyField().getType()); TypeName valueTypeName = getTypeNameForElementType(type.getMapValueField().getType()); return new TypeName("", "", "map[%i]%i", keyTypeName, valueTypeName); } else if (type.isRepeated()) { TypeName elementTypeName = getTypeNameForElementType(type); return new TypeName("", "", "[]%i", elementTypeName); } else { return getTypeNameForElementType(type); } }
private void checkBodyConstraints(HttpAttribute binding, Method method) { if (binding.getBody() != null && !binding.bodyCapturesUnboundFields()) { if (!FieldSelector.hasSinglePathElement(binding.getBody())) { error( ResolvedLocation.create(method.getLocation()), "body field path '%s' should not reference sub messages.", binding.getBody()); } else { // There should be just one body as body is not unbounded. if (binding.getBodySelectors() != null && binding.getBodySelectors().size() == 1) { FieldSelector bodyField = Iterables.getOnlyElement(binding.getBodySelectors()); if (bodyField != null) { WellKnownType wkt = bodyField.getType().getWellKnownType(); if (!bodyField.getType().isMessage() || bodyField.getType().isRepeated() || !wkt.allowedAsHttpRequestResponse()) { error( ResolvedLocation.create(method.getLocation()), "body field path '%s' must be a non-repeated message.", bodyField); } } } } } }
private void checkBodyConstraints(HttpAttribute binding, Method method) { if (binding.getBody() != null && !binding.bodyCapturesUnboundFields()) { if (!FieldSelector.hasSinglePathElement(binding.getBody())) { error( ResolvedLocation.create(method.getLocation()), "body field path '%s' should not reference sub messages.", binding.getBody()); } else { // There should be just one body as body is not unbounded. if (binding.getBodySelectors() != null && binding.getBodySelectors().size() == 1) { FieldSelector bodyField = Iterables.getOnlyElement(binding.getBodySelectors()); if (bodyField != null) { WellKnownType wkt = bodyField.getType().getWellKnownType(); if (!bodyField.getType().isMessage() || bodyField.getType().isRepeated() || !wkt.allowedAsHttpRequestResponse()) { error( ResolvedLocation.create(method.getLocation()), "body field path '%s' must be a non-repeated message.", bodyField); } } } } } }
@Override public TypedValue getSnippetZeroValue(TypeRef type) { if (type.isRepeated() || type.isMap()) { return TypedValue.create(getTypeName(type), "nil"); } if (type.isEnum()) { return getEnumValue(type, type.getEnumType().getValues().get(0)); } if (type.isMessage()) { return TypedValue.create( getTypeName(type), "&" + getTypeName(type.getMessageType(), false).getNickname() + "{}"); } switch (type.getKind()) { case TYPE_BOOL: return TypedValue.create(getTypeName(type), "false"); case TYPE_STRING: return TypedValue.create(getTypeName(type), "\"\""); case TYPE_BYTES: return TypedValue.create(getTypeName(type), "nil"); default: // Anything else -- numeric values. return TypedValue.create(getTypeName(type), "0"); } }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { TypeName mapTypeName = typeNameConverter.getTypeName("java.util.Map"); TypeName keyTypeName = getTypeNameForElementType(type.getMapKeyField().getType(), true); TypeName valueTypeName = getTypeNameForElementType(type.getMapValueField().getType(), true); return new TypeName( mapTypeName.getFullName(), mapTypeName.getNickname(), "%s<%i, %i>", keyTypeName, valueTypeName); } else if (type.isRepeated()) { TypeName listTypeName = typeNameConverter.getTypeName("java.util.List"); TypeName elementTypeName = getTypeNameForElementType(type, true); return new TypeName( listTypeName.getFullName(), listTypeName.getNickname(), "%s<%i>", elementTypeName); } else { return getTypeNameForElementType(type, false); } }
@Override public TypeName getTypeName(TypeRef type) { if (type.isMap()) { TypeName mapTypeName = typeNameConverter.getTypeName("System.Collections.Generic.IDictionary"); TypeName keyTypeName = getTypeNameForElementType(type.getMapKeyField().getType()); TypeName valueTypeName = getTypeNameForElementType(type.getMapValueField().getType()); return new TypeName( mapTypeName.getFullName(), mapTypeName.getNickname(), "%s<%i, %i>", keyTypeName, valueTypeName); } else if (type.isRepeated()) { TypeName listTypeName = typeNameConverter.getTypeName("System.Collections.Generic.IEnumerable"); TypeName elementTypeName = getTypeNameForElementType(type); return new TypeName( listTypeName.getFullName(), listTypeName.getNickname(), "%s<%i>", elementTypeName); } else { return getTypeNameForElementType(type); } }
/** Checks context conditions for selectors bound to the HTTP path. */ private void checkPathParameterConditions(Method method, FieldSelector selector) { TypeRef type = selector.getType(); WellKnownType wkt = type.getWellKnownType(); if (type.isMap()) { error( ResolvedLocation.create(method.getLocation()), "map field not allowed: reached via '%s' on message '%s'.", selector.toString(), getInputMessageName(method)); } else if (type.isRepeated()) { error( ResolvedLocation.create(method.getLocation()), "repeated field not allowed: reached via '%s' on message '%s'.", selector, getInputMessageName(method)); } else if (type.isMessage() && !wkt.allowedAsPathParameter()) { error( ResolvedLocation.create(method.getLocation()), "message field not allowed: reached via '%s' on message '%s'.", selector, getInputMessageName(method)); } }
/** Checks context conditions for selectors bound to the HTTP path. */ private void checkPathParameterConditions(Method method, FieldSelector selector) { TypeRef type = selector.getType(); WellKnownType wkt = type.getWellKnownType(); if (type.isMap()) { error( ResolvedLocation.create(method.getLocation()), "map field not allowed: reached via '%s' on message '%s'.", selector.toString(), getInputMessageName(method)); } else if (type.isRepeated()) { error( ResolvedLocation.create(method.getLocation()), "repeated field not allowed: reached via '%s' on message '%s'.", selector, getInputMessageName(method)); } else if (type.isMessage() && !wkt.allowedAsPathParameter()) { error( ResolvedLocation.create(method.getLocation()), "message field not allowed: reached via '%s' on message '%s'.", selector, getInputMessageName(method)); } }