List of usage examples for com.fasterxml.jackson.core JsonParser close
@Override public abstract void close() throws IOException;
From source file:com.github.heuermh.personalgenome.client.converter.JacksonPersonalGenomeConverter.java
@Override public List<Trait> parseTraits(final InputStream inputStream) { checkNotNull(inputStream);/* www .j a v a 2 s. c o m*/ JsonParser parser = null; try { parser = jsonFactory.createParser(inputStream); parser.nextToken(); String id = null; String reportId = null; String description = null; String trait = null; Set<String> possibleTraits = new HashSet<String>(); List<Trait> traits = new ArrayList<Trait>(); while (parser.nextToken() != JsonToken.END_OBJECT) { String field = parser.getCurrentName(); parser.nextToken(); if ("id".equals(field)) { id = parser.getText(); } else if ("traits".equals(field)) { while (parser.nextToken() != JsonToken.END_ARRAY) { while (parser.nextToken() != JsonToken.END_OBJECT) { String traitField = parser.getCurrentName(); parser.nextToken(); if ("report_id".equals(traitField)) { reportId = parser.getText(); } else if ("description".equals(traitField)) { description = parser.getText(); } else if ("trait".equals(traitField)) { trait = parser.getText(); } else if ("possible_traits".equals(traitField)) { while (parser.nextToken() != JsonToken.END_ARRAY) { possibleTraits.add(parser.getText()); } } } traits.add(new Trait(id, reportId, description, trait, possibleTraits)); reportId = null; description = null; trait = null; possibleTraits.clear(); } } } return traits; } catch (IOException e) { logger.warn("could not parse traits", e); } finally { try { inputStream.close(); } catch (Exception e) { // ignored } try { parser.close(); } catch (Exception e) { // ignored } } return null; }
From source file:net.floodlightcontroller.loadbalancer.MonitorsResource.java
protected LBMonitor jsonToMonitor(String json) throws IOException { MappingJsonFactory f = new MappingJsonFactory(); JsonParser jp; LBMonitor monitor = new LBMonitor(); try {/* w w w.j a va 2 s . c om*/ jp = f.createJsonParser(json); } catch (JsonParseException e) { throw new IOException(e); } jp.nextToken(); if (jp.getCurrentToken() != JsonToken.START_OBJECT) { throw new IOException("Expected START_OBJECT"); } while (jp.nextToken() != JsonToken.END_OBJECT) { if (jp.getCurrentToken() != JsonToken.FIELD_NAME) { throw new IOException("Expected FIELD_NAME"); } String n = jp.getCurrentName(); jp.nextToken(); if (jp.getText().equals("")) continue; else if (n.equals("monitor")) { while (jp.nextToken() != JsonToken.END_OBJECT) { String field = jp.getCurrentName(); if (field.equals("id")) { monitor.id = jp.getText(); continue; } if (field.equals("name")) { monitor.name = jp.getText(); continue; } if (field.equals("type")) { monitor.type = Short.parseShort(jp.getText()); continue; } if (field.equals("delay")) { monitor.delay = Short.parseShort(jp.getText()); continue; } if (field.equals("timeout")) { monitor.timeout = Short.parseShort(jp.getText()); continue; } if (field.equals("attempts_before_deactivation")) { monitor.attemptsBeforeDeactivation = Short.parseShort(jp.getText()); continue; } if (field.equals("network_id")) { monitor.netId = jp.getText(); continue; } if (field.equals("address")) { monitor.address = Integer.parseInt(jp.getText()); continue; } if (field.equals("protocol")) { monitor.protocol = Byte.parseByte(jp.getText()); continue; } if (field.equals("port")) { monitor.port = Short.parseShort(jp.getText()); continue; } if (field.equals("admin_state")) { monitor.adminState = Short.parseShort(jp.getText()); continue; } if (field.equals("status")) { monitor.status = Short.parseShort(jp.getText()); continue; } log.warn("Unrecognized field {} in " + "parsing Vips", jp.getText()); } } } jp.close(); return monitor; }
From source file:com.ntsync.shared.RequestGenerator.java
/** * //from w w w . ja v a 2 s . c om * @param key * @param clientId * @param response * @return * @throws HeaderParseException */ public static SyncResponse processServerResponse(SecretKey key, String clientId, final byte[] response) throws HeaderParseException { short version = SyncDataHelper.readShort(response, 0); SyncState syncState = null; Map<Long, String> newGroupIdMap = null; Map<Long, String> newContactIdMap = null; SyncAnchor newSyncAnchor = new SyncAnchor(); int skippedRows = 0; List<RawContact> serverContactList = new ArrayList<RawContact>(); List<ContactGroup> serverGroupList = new ArrayList<ContactGroup>(); String newClientId = clientId; Restrictions restr = null; if (version == RequestGenerator.PROT_VERSION) { int headerLength = SyncDataHelper.readInt(response, 2); JsonParser jp = null; try { jp = getJsonFactory().createParser(response, HEADER_POS, headerLength); jp.nextToken(); while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldname = jp.getCurrentName(); // move to value, or START_OBJECT/START_ARRAY if (jp.nextToken() == null) { break; } if (CLIENT_FIELD_NAME.equals(fieldname)) { while (jp.nextToken() != JsonToken.END_OBJECT) { String clientField = jp.getCurrentName(); if (jp.nextToken() == null) { break; } if (PARAM_SYNC_ANCHOR.equals(clientField)) { while (jp.nextToken() != JsonToken.END_OBJECT) { String anchorType = jp.getCurrentName(); if (jp.nextToken() == null) { break; } long syncAnchor = jp.getLongValue(); if (anchorType != null && anchorType.length() > 0) { newSyncAnchor.setAnchor((byte) anchorType.charAt(0), syncAnchor); } } } else if (PARAM_CLIENTID.equals(clientField)) { newClientId = jp.getValueAsString(); } else if (TAG_GROUPIDS.equals(clientField)) { newGroupIdMap = extractNewIdList(jp); } else if (TAG_CONTACTIDS.equals(clientField)) { newContactIdMap = extractNewIdList(jp); } else { LOG.warn("Unsupported Client-Header-Field: {}", clientField); } } } else if (SERVER_FIELD_NAME.equals(fieldname)) { while (jp.nextToken() != JsonToken.END_OBJECT) { String serverField = jp.getCurrentName(); if (jp.nextToken() == null) { break; } if (RequestGenerator.SYNCSTATE_FIELD_NAME.equals(serverField)) { String syncStateStr = jp.getValueAsString(); if (syncStateStr != null && syncStateStr.length() > 0) { syncState = SyncState.fromErrorVal(syncStateStr); } } else if (RequestGenerator.TAG_SERVER_CONFIG.equals(serverField)) { restr = parseRestr(jp); } } } } final int respLen = response.length; if (respLen > headerLength + HEADER_POS) { skippedRows = getUpdatedRows(key, serverContactList, serverGroupList, response, headerLength, respLen); } } catch (UnsupportedEncodingException ex) { throw new RuntimeException(ex); } catch (JsonParseException ex) { throw new HeaderParseException(ex); } catch (IOException e) { throw new HeaderParseException(e); } finally { if (jp != null) { try { jp.close(); } catch (IOException ex) { LOG.warn("Could not close JSONParser", ex); } } } } return new SyncResponse(syncState, serverContactList, serverGroupList, newSyncAnchor, newClientId, newGroupIdMap, newContactIdMap, skippedRows, restr); }
From source file:com.entertailion.android.shapeways.MainActivity.java
private void getMaterials() { Log.d(LOG_TAG, "getMaterials"); try {//from w ww . jav a 2 s. co m HttpResponse httpResponse = ((ShapewaysApplication) getApplicationContext()).getShapewaysClient() .getResponse(ShapewaysClient.API_URL_BASE + ShapewaysClient.MATERIALS_PATH); String response = EntityUtils.toString(httpResponse.getEntity()); Log.i(LOG_TAG, "response=" + response); // http://wiki.fasterxml.com/JacksonInFiveMinutes ObjectMapper mapper = new ObjectMapper(); Map<String, Object> map = mapper.readValue(response, Map.class); Log.i(LOG_TAG, "map=" + map); // The response does not use array[] notation for the list of // materials. // So, have to manually parse the JSON to get the list data. MappingJsonFactory f = new MappingJsonFactory(); JsonParser jp = f.createJsonParser(response); Materials materials = new Materials(); materials.setStatusCode(httpResponse.getStatusLine().getStatusCode()); jp.nextToken(); // will return JsonToken.START_OBJECT (verify?) while (jp.nextToken() != JsonToken.END_OBJECT) { String fieldname = jp.getCurrentName(); Log.d(LOG_TAG, "fieldname=" + fieldname); jp.nextToken(); // move to value if ("materials".equals(fieldname)) { // contains an object // Material material = jp.readValueAs(Material.class); boolean end = false; do { Material material = new Material(); while (jp.nextToken() != JsonToken.END_OBJECT) { String namefield = jp.getCurrentName(); Log.d(LOG_TAG, "namefield=" + namefield); jp.nextToken(); // move to value if ("materialId".equals(namefield)) { material.setMaterialId(Integer.parseInt(jp.getText())); } else if ("title".equals(namefield)) { material.setTitle(jp.getText()); } else if ("supportsColorFiles".equals(namefield)) { material.setSupportsColorFiles(Integer.parseInt(jp.getText())); } else if ("printerId".equals(namefield)) { material.setPrinterId(jp.getText()); } else if ("swatch".equals(namefield)) { material.setSwatch(jp.getText()); } else { Log.w(LOG_TAG, "Unrecognized material field: " + namefield); } } materials.getMaterials().add(material); JsonToken token = jp.nextToken(); Log.d(LOG_TAG, "token=" + token); if (token == JsonToken.FIELD_NAME) { try { Integer.parseInt(jp.getCurrentName()); jp.nextToken(); } catch (Exception ex) { end = true; } } else if (token == JsonToken.END_OBJECT) { end = true; } } while (!end); } else if ("result".equals(fieldname)) { if (jp.getText().equals(Result.success.name())) { materials.setResult(Result.success); } else if (jp.getText().equals(Result.failure.name())) { materials.setResult(Result.failure); } } else { Log.w(LOG_TAG, "Unrecognized materials field: " + fieldname); } } jp.close(); // ensure resources get cleaned up timely and properly Log.i(LOG_TAG, "materials=" + materials.getMaterials().size()); Log.i(LOG_TAG, "material: id=" + materials.getMaterials().get(0).getMaterialId()); Log.i(LOG_TAG, "material: title=" + materials.getMaterials().get(0).getTitle()); Log.i(LOG_TAG, "material: swatch=" + materials.getMaterials().get(0).getSwatch()); } catch (Exception e) { Log.e(LOG_TAG, "getMaterials", e); } }
From source file:com.github.heuermh.personalgenome.client.converter.JacksonPersonalGenomeConverter.java
@Override public Haplogroup parseHaplogroups(final InputStream inputStream) { checkNotNull(inputStream);// w w w . j a v a2 s . co m JsonParser parser = null; try { parser = jsonFactory.createParser(inputStream); parser.nextToken(); String id = null; String maternal = null; String paternal = null; String rsid = null; String rcrsPosition = null; String snp = null; List<PaternalTerminalSnp> paternalTerminalSnps = new ArrayList<PaternalTerminalSnp>(); List<MaternalTerminalSnp> maternalTerminalSnps = new ArrayList<MaternalTerminalSnp>(); while (parser.nextToken() != JsonToken.END_OBJECT) { String field = parser.getCurrentName(); parser.nextToken(); if ("id".equals(field)) { id = parser.getText(); } else if ("maternal".equals(field)) { maternal = parser.getText(); } else if ("paternal".equals(field)) { paternal = "null" == parser.getText() ? null : parser.getText(); } else if ("maternal_terminal_snps".equals(field)) { while (parser.nextToken() != JsonToken.END_ARRAY) { while (parser.nextToken() != JsonToken.END_OBJECT) { String maternalTerminalSnpsField = parser.getCurrentName(); parser.nextToken(); if ("rsid".equals(maternalTerminalSnpsField)) { rsid = parser.getText(); } else if ("rcrs_position".equals(maternalTerminalSnpsField)) { rcrsPosition = parser.getText(); } } maternalTerminalSnps.add(new MaternalTerminalSnp(rsid, rcrsPosition)); } } else if ("paternal_terminal_snps".equals(field)) { while (parser.nextToken() != JsonToken.END_ARRAY) { while (parser.nextToken() != JsonToken.END_OBJECT) { String paternalTerminalSnpsField = parser.getCurrentName(); parser.nextToken(); if ("rsid".equals(paternalTerminalSnpsField)) { rsid = parser.getText(); } else if ("snp".equals(paternalTerminalSnpsField)) { snp = parser.getText(); } } paternalTerminalSnps.add(new PaternalTerminalSnp(rsid, snp)); } } } return new Haplogroup(id, paternal, maternal, paternalTerminalSnps, maternalTerminalSnps); } catch (IOException e) { logger.warn("could not parse haplogroups", e); } finally { try { inputStream.close(); } catch (Exception e) { // ignored } try { parser.close(); } catch (Exception e) { // ignored } } return null; }
From source file:msearch.io.MSFilmlisteLesen.java
private boolean filmlisteJsonEinlesen(File vonDatei, ListeFilme listeFilme) { boolean ret = false; BZip2CompressorInputStream bZip2CompressorInputStream; JsonFactory jsonF = new JsonFactory(); JsonParser jp = null; JsonToken jsonToken;/*from w ww . j a va 2s. c o m*/ String sender = "", thema = ""; try { // ########################################################## // und jetzt die Liste einlesen, URL kann es jetzt schon nicht mehr sein! if (!vonDatei.exists()) { MSLog.fehlerMeldung(702030698, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen", "Datei existiert nicht: " + vonDatei.getName()); return false; } if (vonDatei.getName().endsWith(MSConst.FORMAT_XZ)) { XZInputStream xZInputStream = new XZInputStream(new FileInputStream(vonDatei)); jp = jsonF.createParser(new InputStreamReader(xZInputStream, MSConst.KODIERUNG_UTF)); } else if (vonDatei.getName().endsWith(MSConst.FORMAT_BZ2)) { bZip2CompressorInputStream = new BZip2CompressorInputStream(new FileInputStream(vonDatei)); jp = jsonF.createParser(new InputStreamReader(bZip2CompressorInputStream, MSConst.KODIERUNG_UTF)); } else if (vonDatei.getName().endsWith(MSConst.FORMAT_ZIP)) { ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(vonDatei)); zipInputStream.getNextEntry(); jp = jsonF.createParser(new InputStreamReader(zipInputStream, MSConst.KODIERUNG_UTF)); } else { jp = jsonF.createParser(vonDatei); // geht so am schnellsten } if (jp.nextToken() != JsonToken.START_OBJECT) { throw new IOException("Expected data to start with an Object"); } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { for (int k = 0; k < ListeFilme.MAX_ELEM; ++k) { listeFilme.metaDaten[k] = jp.nextTextValue(); } break; } } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { // sind nur die Feldbeschreibungen, brauch mer nicht jp.nextToken(); break; } } while ((jsonToken = jp.nextToken()) != null) { if (jsonToken == JsonToken.END_OBJECT) { break; } if (jp.isExpectedStartArrayToken()) { DatenFilm datenFilm = new DatenFilm(); for (int i = 0; i < DatenFilm.COLUMN_NAMES_JSON.length; ++i) { datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = jp.nextTextValue(); /// fr die Entwicklungszeit if (datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] == null) { datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = ""; } } if (datenFilm.arr[DatenFilm.FILM_SENDER_NR].equals("")) { datenFilm.arr[DatenFilm.FILM_SENDER_NR] = sender; } else { sender = datenFilm.arr[DatenFilm.FILM_SENDER_NR]; } if (datenFilm.arr[DatenFilm.FILM_THEMA_NR].equals("")) { datenFilm.arr[DatenFilm.FILM_THEMA_NR] = thema; } else { thema = datenFilm.arr[DatenFilm.FILM_THEMA_NR]; } listeFilme.importFilmliste(datenFilm); } } jp.close(); ret = true; } catch (Exception ex) { MSLog.fehlerMeldung(468956200, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen", ex, "von: " + vonDatei.getName()); } return ret; }
From source file:org.instagram4j.DefaultInstagramClient.java
private <T> Result<T> requestEntity(HttpRequestBase method, Class<T> type, boolean signableRequest) throws InstagramException { method.getParams().setParameter("http.useragent", "Instagram4j/1.0"); JsonParser jp = null; HttpResponse response = null;//from ww w.ja va 2s . c om ResultMeta meta = null; try { method.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8"); if (signableRequest) setEnforceHeader(method); HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(AllClientPNames.CONNECTION_TIMEOUT, 15000); client.getParams().setParameter(AllClientPNames.SO_TIMEOUT, 30000); if (LOG.isDebugEnabled()) LOG.debug(String.format("Requesting entity entry point %s, method %s", method.getURI().toString(), method.getMethod())); autoThrottle(); response = client.execute(method); jp = createParser(response, method); JsonToken tok = jp.nextToken(); if (tok != JsonToken.START_OBJECT) { if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) throw createInstagramException("Instagram request failed", method.getURI().toString(), response, null, null); throw createInstagramException("Invalid response format from Instagram API", method.getURI().toString(), response, null, null); } T data = null; while (true) { tok = jp.nextValue(); if (tok == JsonToken.START_ARRAY) { throw createInstagramException("Unexpected array in entity response " + jp.getCurrentName(), method.getURI().toString(), response, meta, null); } else if (tok == JsonToken.START_OBJECT) { // Should be "data" or "meta" String name = jp.getCurrentName(); if ("meta".equals(name)) meta = jp.readValueAs(ResultMeta.class); else if ("data".equals(name)) { if (type != null) data = jp.readValueAs(type); else jp.readValueAs(Map.class); // Consume & ignore } else throw createInstagramException("Unexpected field name " + name, method.getURI().toString(), response, meta, null); } else break; } if (data == null && meta == null && response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) throw createInstagramException("Instagram request failed", method.getURI().toString(), response, null, null); Result<T> result = new Result<T>(null, meta, data); setRateLimits(response, result); return result; } catch (JsonParseException e) { throw createInstagramException("Error parsing response from Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } catch (JsonProcessingException e) { throw createInstagramException("Error parsing response from Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } catch (IOException e) { throw createInstagramException("Error communicating with Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } finally { if (jp != null) try { jp.close(); } catch (IOException e) { } method.releaseConnection(); } }
From source file:org.zapto.samhippiemiddlepoolchecker.Values.java
PoolError update(String address, URL... urls) { //error is returned at the end PoolError error = PoolError.NONE;// w ww.ja v a 2 s. c o m //Aborting the http to save data throws an error. This says if we should cover it up. boolean actualNetworkError = true; //reset the values. If they are never changed, then 0 is the most accurate number accepted = 0; rejected = 0; immature = 0; unexchanged = 0; balance = 0; paid = 0; try { //streaming the json HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(urls[0].toString()); HttpResponse response = client.execute(request); InputStream in = response.getEntity().getContent(); JsonFactory factory = new JsonFactory(); JsonParser parser = factory.createParser(in); boolean addressFound = false;//see if we need to return and address not found error mainParse: //label for breaking when address is found while (parser.nextToken() != JsonToken.END_OBJECT)//finding "report" { if ("report".equals(parser.getCurrentName()))//beginning of report { boolean firstRun = true; while (parser.nextToken() == JsonToken.START_ARRAY)//each address has its own array { if (firstRun)//this jumps over some junk at the begining { parser.nextToken(); firstRun = false; } parser.nextToken();//have to skip some junk each time if (address.equals(parser.getText()))//we have found our address { addressFound = true;//this prevents an address not found error from being returned while (parser.nextToken() != JsonToken.END_ARRAY) { //getting each of our values from the array. //having -420 as a default lets us see if the value is there while not using up 0 if ("megahashesPerSecond".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { accepted = value; } } if ("rejectedMegahashesPerSecond".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { rejected = value; } } if ("immatureBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { immature = value; } } if ("unexchangedBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { unexchanged = value; } } if ("bitcoinBalance".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { balance = value; } } if ("paidOut".equals(parser.getCurrentName())) { float value = (float) parser.getValueAsDouble(-420); if (value > 0)//negative means wrong value { paid = value; } } } break mainParse;//no need to download any more addresses } else { while (parser.nextToken() != JsonToken.END_ARRAY) { } //skipping over an unwanted address } } } } if (!addressFound)//we never found an address { error = PoolError.ADDRESS; } actualNetworkError = false; request.abort();//should stop any extra data usage, also forces ioexception (which is ignored) parser.close(); in.close(); } catch (MalformedURLException e) { if (actualNetworkError) { error = PoolError.NETWORK; } } catch (IOException e) { if (actualNetworkError) { error = PoolError.NETWORK; } } return error; }
From source file:org.instagram4j.DefaultInstagramClient.java
@SuppressWarnings("unchecked") private <T> Result<T[]> requestEntities(HttpRequestBase method, Class<T> type) throws InstagramException { method.getParams().setParameter("http.useragent", "Instagram4j/1.0"); JsonParser jp = null; HttpResponse response = null;//from w ww. j av a 2 s. c om ResultMeta meta = null; try { method.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8"); setEnforceHeader(method); HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(AllClientPNames.CONNECTION_TIMEOUT, 15000); client.getParams().setParameter(AllClientPNames.SO_TIMEOUT, 30000); if (LOG.isDebugEnabled()) LOG.debug(String.format("Requesting entities entry point %s, method %s", method.getURI().toString(), method.getMethod())); autoThrottle(); response = client.execute(method); jp = createParser(response, method); JsonToken tok = jp.nextToken(); if (tok != JsonToken.START_OBJECT) { if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) throw createInstagramException("Instagram request failed", method.getURI().toString(), response, null, null); throw createInstagramException("Invalid response format from Instagram API", method.getURI().toString(), response, null, null); } Pagination pagination = null; T[] data = null; while (true) { tok = jp.nextValue(); if (tok == JsonToken.START_ARRAY) { // Should be "data" String name = jp.getCurrentName(); if (!"data".equals(name)) throw createInstagramException("Unexpected field name " + name, method.getURI().toString(), response, meta, null); List<T> items = new ArrayList<T>(); tok = jp.nextToken(); if (tok == JsonToken.START_OBJECT) { if (type != null) { T item; while ((item = jp.readValueAs(type)) != null) items.add(item); } else jp.readValueAs(Map.class); // Consume & ignore } data = (T[]) Array.newInstance(type, items.size()); System.arraycopy(items.toArray(), 0, data, 0, items.size()); } else if (tok == JsonToken.START_OBJECT) { // Should be "pagination" or "meta" String name = jp.getCurrentName(); if ("pagination".equals(name)) pagination = jp.readValueAs(Pagination.class); else if ("meta".equals(name)) meta = jp.readValueAs(ResultMeta.class); else throw createInstagramException("Unexpected field name " + name, method.getURI().toString(), response, meta, null); } else break; } if (data == null && meta == null && response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) throw createInstagramException("Instagram request failed", method.getURI().toString(), response, null, null); Result<T[]> result = new Result<T[]>(pagination, meta, data); setRateLimits(response, result); return result; } catch (JsonParseException e) { throw createInstagramException("Error parsing response from Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } catch (JsonProcessingException e) { throw createInstagramException("Error parsing response from Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } catch (IOException e) { throw createInstagramException("Error communicating with Instagram: " + e.getMessage(), method.getURI().toString(), response, meta, e); } finally { if (jp != null) try { jp.close(); } catch (IOException e) { } method.releaseConnection(); } }