/** 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); } }
/** * @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();
"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);
destinationMap != null || destination == null ? null : ClassInfo.of(destination.getClass()); if (parser.getEventType() == XmlPullParser.START_DOCUMENT) { parser.next();