/** Sets the entry classes to use when parsing. */ public void setEntryClasses(Class<?>... entryClasses) { int numEntries = entryClasses.length; HashMap<String, Class<?>> kindToEntryClassMap = this.kindToEntryClassMap; for (int i = 0; i < numEntries; i++) { Class<?> entryClass = entryClasses[i]; ClassInfo typeInfo = ClassInfo.of(entryClass); Field field = typeInfo.getField("@gd:kind"); if (field == null) { throw new IllegalArgumentException("missing @gd:kind field for " + entryClass.getName()); } Object entry = Types.newInstance(entryClass); String kind = (String) FieldInfo.getFieldValue(field, entry); if (kind == null) { throw new IllegalArgumentException( "missing value for @gd:kind field in " + entryClass.getName()); } kindToEntryClassMap.put(kind, entryClass); } }
"cannot specify field mask for a Map or Collection class: " + dataClass); ClassInfo classInfo = ClassInfo.of(dataClass); for (String name : new TreeSet<String>(classInfo.getNames())) { FieldInfo fieldInfo = classInfo.getFieldInfo(name); if (fieldInfo.isFinal()) { continue;
public static HttpHeaders setHeader(HttpHeaders headers, String key, String value) { ClassInfo classInfo = headers.getClassInfo(); FieldInfo fieldInfo = classInfo.getFieldInfo(key); Object headerValue; if (fieldInfo == null) { headerValue = value; } else { Class<?> elementyType = fieldInfo.getType(); if (List.class.isAssignableFrom(fieldInfo.getType())) { elementyType = "Age".equalsIgnoreCase(key) || "Content-Length".equalsIgnoreCase(key) ? Long.class : String.class; } headerValue = ImmutableList.of(fromString(elementyType, value)); } headers.set(key, headerValue); return headers; }
private static <RequestT extends StorageRequest<?>> void setUserProject( RequestT request, String projectId) { Field userProjectField = request.getClassInfo().getField(USER_PROJECT_FIELD_NAME); if (userProjectField != null) { request.set(USER_PROJECT_FIELD_NAME, projectId); } } }
public String createSignedCustomAuthTokenForUser( String uid, Map<String, Object> developerClaims) throws IOException { checkArgument(!Strings.isNullOrEmpty(uid), "Uid must be provided."); checkArgument(uid.length() <= 128, "Uid must be shorter than 128 characters."); JsonWebSignature.Header header = new JsonWebSignature.Header().setAlgorithm("RS256"); final long issuedAt = clock.currentTimeMillis() / 1000; FirebaseCustomAuthToken.Payload payload = new FirebaseCustomAuthToken.Payload() .setUid(uid) .setIssuer(signer.getAccount()) .setSubject(signer.getAccount()) .setAudience(FirebaseCustomAuthToken.FIREBASE_AUDIENCE) .setIssuedAtTimeSeconds(issuedAt) .setExpirationTimeSeconds(issuedAt + FirebaseCustomAuthToken.TOKEN_DURATION_SECONDS); if (developerClaims != null) { Collection<String> reservedNames = payload.getClassInfo().getNames(); for (String key : developerClaims.keySet()) { if (reservedNames.contains(key)) { throw new IllegalArgumentException( String.format("developerClaims must not contain a reserved key: %s", key)); } } GenericJson jsonObject = new GenericJson(); jsonObject.putAll(developerClaims); payload.setDeveloperClaims(jsonObject); } return signPayload(header, payload); }
private static Object setDefaultValuesForPrimitiveTypes(Object object) { if (!(object instanceof GenericJson)) { return object; } GenericJson genericJson = (GenericJson) object; for (FieldInfo f : genericJson.getClassInfo().getFieldInfos()) { if (Boolean.class.equals(f.getType())) { f.setValue(genericJson, Optional.ofNullable(f.getValue(genericJson)).orElse(false)); } else if (Integer.class.equals(f.getType())) { f.setValue(genericJson, Optional.ofNullable(f.getValue(genericJson)).orElse(0)); } else if (GenericJson.class.isAssignableFrom(f.getType())) { setDefaultValuesForPrimitiveTypes(f.getValue(genericJson)); } else if (Collection.class.isAssignableFrom(f.getType())) { Object collection = f.getValue(genericJson); if (collection == null) { f.setValue(genericJson, Collections.emptyList()); } else { Collection<?> values = (Collection<?>) collection; for (Object v : values) { setDefaultValuesForPrimitiveTypes(v); } } } } return object; }
public static HttpHeaders setHeader(HttpHeaders headers, String key, String value) { ClassInfo classInfo = headers.getClassInfo(); FieldInfo fieldInfo = classInfo.getFieldInfo(key); Object headerValue; if (fieldInfo == null) { headerValue = value; } else { Class<?> elementyType = fieldInfo.getType(); if (List.class.isAssignableFrom(fieldInfo.getType())) { elementyType = "Age".equalsIgnoreCase(key) || "Content-Length".equalsIgnoreCase(key) ? Long.class : String.class; } headerValue = ImmutableList.of(fromString(elementyType, value)); } headers.set(key, headerValue); return headers; }
/** * @param parser JSON parser * @param feedClass feed class * @param itemClasses item classes */ public JsonMultiKindFeedParser(JsonParser parser, Class<T> feedClass, Class<?>... itemClasses) { super(parser, feedClass); int numItems = itemClasses.length; HashMap<String, Class<?>> kindToItemClassMap = this.kindToItemClassMap; for (int i = 0; i < numItems; i++) { Class<?> itemClass = itemClasses[i]; ClassInfo classInfo = ClassInfo.of(itemClass); Field field = classInfo.getField("kind"); if (field == null) { throw new IllegalArgumentException("missing kind field for " + itemClass.getName()); } Object item = Types.newInstance(itemClass); String kind = (String) FieldInfo.getFieldValue(field, item); if (kind == null) { throw new IllegalArgumentException( "missing value for kind field in " + itemClass.getName()); } kindToItemClassMap.put(kind, itemClass); } }
public <T> T parse(HttpResponse response, Class<T> dataClass) throws IOException { T newInstance = Types.newInstance(dataClass); ClassInfo classInfo = ClassInfo.of(dataClass); response.disableContentLogging = true; InputStream content = response.getContent(); String value = line.substring(equals + 1); Field field = classInfo.getField(key); if (field != null) { Class<?> fieldClass = field.getType();
destinationMap != null || destination == null ? null : ClassInfo.of(destination.getClass()); if (parser.getEventType() == XmlPullParser.START_DOCUMENT) { parser.next(); ? "" : namespaceDictionary.getNamespaceAliasForUriErrorOnUnknown(attributeNamespace); String fieldName = getFieldName(true, attributeAlias, attributeNamespace, attributeName); Field field = classInfo == null ? null : classInfo.getField(fieldName); parseAttributeOrTextContent(parser.getAttributeValue(i), field, field = classInfo == null ? null : classInfo.getField(TEXT_CONTENT); parseAttributeOrTextContent(parser.getText(), field, field = classInfo == null ? null : classInfo.getField(fieldName); Type fieldType = field == null ? valueType : field.getGenericType(); fieldType = Data.resolveWildcardTypeOrTypeVariable(context, fieldType);