Example usage for com.fasterxml.jackson.core JsonParser close

List of usage examples for com.fasterxml.jackson.core JsonParser close

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonParser close.

Prototype

@Override
public abstract void close() throws IOException;

Source Link

Document

Closes the parser so that no further iteration or data access can be made; will also close the underlying input source if parser either owns the input source, or feature Feature#AUTO_CLOSE_SOURCE is enabled.

Usage

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();
    }
}