Example usage for java.io Reader read

List of usage examples for java.io Reader read

Introduction

In this page you can find the example usage for java.io Reader read.

Prototype

public int read() throws IOException 

Source Link

Document

Reads a single character.

Usage

From source file:org.osiam.client.connector.OsiamConnectorTest.java

private User get_expected_user() throws Exception {
    Reader reader = null;
    StringBuilder jsonUser = null;
    User expectedUser;//from  www  .ja v a 2  s . c o m
    try {
        reader = new FileReader("src/test/resources/__files/user_" + userIdString + ".json");
        jsonUser = new StringBuilder();
        for (int c; (c = reader.read()) != -1;)
            jsonUser.append((char) c);
    } finally {
        try {
            reader.close();
        } catch (Exception e) {
        }
    }

    expectedUser = new ObjectMapper().readValue(jsonUser.toString(), User.class);
    return expectedUser;
}

From source file:com.streamsets.pipeline.lib.json.StreamingJsonParser.java

public StreamingJsonParser(Reader reader, long initialPosition, Mode mode) throws IOException {
    starting = true;/*from   ww  w .  j a v a 2s  .  c om*/
    this.reader = reader;
    if (mode == Mode.MULTIPLE_OBJECTS) {
        if (initialPosition > 0) {
            IOUtils.skipFully(reader, initialPosition);
            posCorrection += initialPosition;
        }
        if (reader.markSupported()) {
            reader.mark(MAX_CHARS_TO_READ_FORWARD);
            int count = 0;
            byte firstByte = -1;
            while (count++ < MAX_CHARS_TO_READ_FORWARD && (firstByte = (byte) reader.read()) != -1
                    && firstByte <= ' ')
                ; // everything less than a space is whitespace
            if (firstByte > ' ') {
                firstNonSpaceChar = firstByte;
            }
            reader.reset();
        }
    }
    jsonParser = getObjectMapper().getFactory().createParser(reader);
    if (mode == Mode.ARRAY_OBJECTS && initialPosition > 0) {
        fastForwardJsonParser(initialPosition);
    }
    this.mode = mode;
}

From source file:net.sf.jabref.JabRefPreferences.java

private static String getNextUnit(Reader data) throws IOException {
    // character last read
    // -1 if end of stream
    // initialization necessary, because of Java compiler
    int c = -1;/*from w w w.j av a  2 s.  co  m*/

    // last character was escape symbol
    boolean escape = false;

    // true if a ";" is found
    boolean done = false;

    StringBuilder res = new StringBuilder();
    while (!done && ((c = data.read()) != -1)) {
        if (c == '\\') {
            if (escape) {
                escape = false;
                res.append('\\');
            } else {
                escape = true;
            }
        } else {
            if (c == ';') {
                if (escape) {
                    res.append(';');
                } else {
                    done = true;
                }
            } else {
                res.append((char) c);
            }
            escape = false;
        }
    }
    if (res.length() > 0) {
        return res.toString();
    } else if (c == -1) {
        // end of stream
        return null;
    } else {
        return "";
    }
}

From source file:net.sf.jabref.preferences.JabRefPreferences.java

private static Optional<String> getNextUnit(Reader data) throws IOException {
    // character last read
    // -1 if end of stream
    // initialization necessary, because of Java compiler
    int c = -1;//from w  w w.  j av  a  2s. co  m

    // last character was escape symbol
    boolean escape = false;

    // true if a ";" is found
    boolean done = false;

    StringBuilder res = new StringBuilder();
    while (!done && ((c = data.read()) != -1)) {
        if (c == '\\') {
            if (escape) {
                escape = false;
                res.append('\\');
            } else {
                escape = true;
            }
        } else {
            if (c == ';') {
                if (escape) {
                    res.append(';');
                } else {
                    done = true;
                }
            } else {
                res.append((char) c);
            }
            escape = false;
        }
    }
    if (res.length() > 0) {
        return Optional.of(res.toString());
    } else if (c == -1) {
        // end of stream
        return Optional.empty();
    } else {
        return Optional.of("");
    }
}

From source file:ConcatReader.java

/**
 * Read a single character. This method will block until a
 * character is available, an I/O error occurs, or the end of all underlying
 * streams are reached./* w ww . jav a 2s  .  c o m*/
 * <p>
 * If this class in not done accepting readers and the end of the last known
 * stream is reached, this method will block forever unless another thread
 * adds a reader or interrupts.
 *
 * @return The character read, as an integer in the range 0 to 65535 (0x00-0xffff),
 *    or -1 if the end of the stream has been reached
 *
 * @throws IOException - If an I/O error occurs
 *
 * @since ostermillerutils 1.04.00
 */
@Override
public int read() throws IOException {
    if (closed)
        throw new IOException("Reader closed");
    int r = -1;
    while (r == -1) {
        Reader in = getCurrentReader();
        if (in == null) {
            if (doneAddingReaders)
                return -1;
            try {
                Thread.sleep(100);
            } catch (InterruptedException iox) {
                throw new IOException("Interrupted");
            }
        } else {
            r = in.read();
            if (r == -1)
                advanceToNextReader();
        }
    }
    return r;
}

From source file:com.sfs.jbtimporter.JBTProcessor.java

/**
 * Post the data to the service./* w  w w . j  av  a 2 s . c  o m*/
 *
 * @param postMethod the post method
 * @param data the data
 * @return the string
 * @throws IOException Signals that an I/O exception has occurred.
 */
private String postData(final PostMethod postMethod, final NameValuePair[] data) throws IOException {

    final StringBuffer raw = new StringBuffer();

    postMethod.setRequestBody(data);

    // Execute the post request
    httpClient.executeMethod(postMethod);

    try {
        Reader reader = new InputStreamReader(postMethod.getResponseBodyAsStream(),
                postMethod.getResponseCharSet());
        // consume the response entity
        int dataread = reader.read();
        while (dataread != -1) {
            char theChar = (char) dataread;
            raw.append(theChar);
            dataread = reader.read();
        }
    } finally {
        postMethod.releaseConnection();
    }
    return raw.toString();
}

From source file:framework.GroovyTemplateEngine.java

public void generate(String name, Reader reader, File outputFile) throws FileNotFoundException, IOException {
    List<String> imports = IOUtils.readLines(Template.class.getResourceAsStream("/imports.groovy"));
    FileWriter writer = new FileWriter(outputFile);
    try {//from w w w  . j  av  a 2s .  c om
        for (String line : imports) {
            writer.append(line).append('\n');
        }
        writer.append("framework.ThreadData data = framework.FrontController.threadData.get()\n");
        writer.append("Writer out = data.out\n");

        int s = 0;
        int ch = -1;
        writer.append("out.write '");
        while ((ch = reader.read()) != -1) {
            if (ch == '<' && s == 0) {
                s = 1;
                writer.append("'\n");
            } else if (ch == '%' && s == 1) {
                s = 2;
            } else if (ch == '#' && s == 2) {
                s = 7;
            } else if (s == 1) {
                s = 0;
                writer.append("out.write '<");
                addChar(writer, s, ch);
            } else if (ch == '=' && s == 2) {
                s = 3;
                writer.append("out.write '' + (");
            } else if (s == 2) {
                s = 6;
                addChar(writer, s, ch);
            } else if (ch == '%' && s == 7) {
                s = 8;
            } else if (ch == '%' && s == 6) {
                s = 4;
            } else if (ch == '%' && s == 3) {
                s = 5;
            } else if (ch == '>' && s == 8) {
                s = 0;
                writer.append("out.write '");
            } else if (ch == '>' && s == 4) {
                s = 0;
                writer.append("\nout.write '");
            } else if (ch == '>' && s == 5) {
                s = 0;
                writer.append(")\nout.write '");
            } else if (s == 4) {
                s = 2;
                writer.append('%');
            } else if (s == 5) {
                s = 3;
                writer.append('%');
            } else if (ch == '\n') {
                if (s == 0) {
                    writer.append("\\n'\nout.write '");
                } else {
                    writer.append(" ");
                }
                s = 0;
            } else if (ch == '\r') {
                if (s != 0) {
                    writer.append(" ");
                }
            } else if (s != 7) {
                addChar(writer, s, ch);
            }
        }
        if (s == 0) {
            writer.append("'");
        }
    } finally {
        reader.close();
        writer.close();
    }
}

From source file:com.google.acre.script.AcreFetch.java

@SuppressWarnings("boxing")
public void fetch(boolean system, String response_encoding, boolean log_to_user, boolean no_redirect) {

    if (request_url.length() > 2047) {
        throw new AcreURLFetchException("fetching URL failed - url is too long");
    }/*from w w  w. j  a v a 2s  .  c om*/

    DefaultHttpClient client = new DefaultHttpClient(_connectionManager, null);

    HttpParams params = client.getParams();

    // pass the deadline down to the invoked service.
    // this will be ignored unless we are fetching from another
    // acre server.
    // note that we may send a deadline that is already passed:
    // it's not our job to throw here since we don't know how
    // the target service will interpret the quota header.
    // NOTE: this is done *after* the user sets the headers to overwrite
    // whatever settings they might have tried to change for this value
    // (which could be a security hazard)
    long sub_deadline = (HostEnv.LIMIT_EXECUTION_TIME) ? _deadline - HostEnv.SUBREQUEST_DEADLINE_ADVANCE
            : System.currentTimeMillis() + HostEnv.ACRE_URLFETCH_TIMEOUT;
    int reentries = _reentries + 1;
    request_headers.put(HostEnv.ACRE_QUOTAS_HEADER, "td=" + sub_deadline + ",r=" + reentries);

    // if this is not an internal call, we need to invoke the call thru a proxy
    if (!_internal) {
        // XXX No sense wasting the resources to gzip inside the network.
        // XXX seems that twitter gets upset when we do this
        /*
        if (!request_headers.containsKey("accept-encoding")) {
        request_headers.put("accept-encoding", "gzip");
        }
        */
        String proxy_host = Configuration.Values.HTTP_PROXY_HOST.getValue();
        int proxy_port = -1;
        if (!(proxy_host.length() == 0)) {
            proxy_port = Configuration.Values.HTTP_PROXY_PORT.getInteger();
            HttpHost proxy = new HttpHost(proxy_host, proxy_port, "http");
            params.setParameter(AllClientPNames.DEFAULT_PROXY, proxy);
        }
    }

    params.setParameter(AllClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);

    // in msec

    long timeout = _deadline - System.currentTimeMillis();
    if (timeout < 0)
        timeout = 0;
    params.setParameter(AllClientPNames.CONNECTION_TIMEOUT, (int) timeout);
    params.setParameter(AllClientPNames.SO_TIMEOUT, (int) timeout);

    // we're not streaming the request so this should be a win.
    params.setParameter(AllClientPNames.TCP_NODELAY, true);

    // reuse an existing socket if it is in TIME_WAIT state.
    params.setParameter(AllClientPNames.SO_REUSEADDR, true);

    // set the encoding of our POST payloads to UTF-8
    params.setParameter(AllClientPNames.HTTP_CONTENT_CHARSET, "UTF-8");

    BasicCookieStore cstore = new BasicCookieStore();
    for (AcreCookie cookie : request_cookies.values()) {
        cstore.addCookie(cookie.toClientCookie());
    }
    client.setCookieStore(cstore);

    HttpRequestBase method;

    HashMap<String, String> logmsg = new HashMap<String, String>();
    logmsg.put("Method", request_method);
    logmsg.put("URL", request_url);

    params.setParameter(AllClientPNames.HANDLE_REDIRECTS, !no_redirect);
    logmsg.put("Redirect", Boolean.toString(!no_redirect));

    try {
        if (request_method.equals("GET")) {
            method = new HttpGet(request_url);
        } else if (request_method.equals("POST")) {
            method = new HttpPost(request_url);
        } else if (request_method.equals("HEAD")) {
            method = new HttpHead(request_url);
        } else if (request_method.equals("PUT")) {
            method = new HttpPut(request_url);
        } else if (request_method.equals("DELETE")) {
            method = new HttpDelete(request_url);
        } else if (request_method.equals("PROPFIND")) {
            method = new HttpPropFind(request_url);
        } else {
            throw new AcreURLFetchException("Failed: unsupported (so far) method " + request_method);
        }
        method.getParams().setBooleanParameter(AllClientPNames.USE_EXPECT_CONTINUE, false);
    } catch (java.lang.IllegalArgumentException e) {
        throw new AcreURLFetchException("Unable to fetch URL; this is most likely an issue with URL encoding.");
    } catch (java.lang.IllegalStateException e) {
        throw new AcreURLFetchException("Unable to fetch URL; possibly an illegal protocol?");
    }

    StringBuilder request_header_log = new StringBuilder();
    for (Map.Entry<String, String> header : request_headers.entrySet()) {
        String key = header.getKey();
        String value = header.getValue();

        // XXX should suppress cookie headers?
        // content-type and length?

        if ("content-type".equalsIgnoreCase(key)) {
            Matcher m = contentTypeCharsetPattern.matcher(value);
            if (m.find()) {
                content_type = m.group(1);
                content_type_charset = m.group(2);
            } else {
                content_type_charset = "utf-8";
            }
            method.addHeader(key, value);
        } else if ("content-length".equalsIgnoreCase(key)) {
            // ignore user-supplied content-length, which is
            // probably wrong due to chars vs bytes and is
            // redundant anyway
            ArrayList<String> msg = new ArrayList<String>();
            msg.add("User-supplied content-length header is ignored");
            _acre_response.log("warn", msg);
        } else if ("user-agent".equalsIgnoreCase(key)) {
            params.setParameter(AllClientPNames.USER_AGENT, value);
        } else {
            method.addHeader(key, value);
        }
        if (!("x-acre-auth".equalsIgnoreCase(key))) {
            request_header_log.append(key + ": " + value + "\r\n");
        }
    }
    logmsg.put("Headers", request_header_log.toString());

    // XXX need more detailed error checking
    if (method instanceof HttpEntityEnclosingRequestBase && request_body != null) {

        HttpEntityEnclosingRequestBase em = (HttpEntityEnclosingRequestBase) method;
        try {
            if (request_body instanceof String) {
                StringEntity ent = new StringEntity((String) request_body, content_type_charset);
                em.setEntity(ent);
            } else if (request_body instanceof JSBinary) {
                ByteArrayEntity ent = new ByteArrayEntity(((JSBinary) request_body).get_data());
                em.setEntity(ent);
            }
        } catch (UnsupportedEncodingException e) {
            throw new AcreURLFetchException(
                    "Failed to fetch URL. " + " - Unsupported charset: " + content_type_charset);
        }
    }

    if (!system && log_to_user) {
        ArrayList<Object> msg = new ArrayList<Object>();
        msg.add("urlfetch request");
        msg.add(logmsg);
        _acre_response.log("debug", msg);
    }
    _logger.info("urlfetch.request", logmsg);

    long startTime = System.currentTimeMillis();

    try {
        // this sends the http request and waits
        HttpResponse hres = client.execute(method);
        status = hres.getStatusLine().getStatusCode();
        HashMap<String, String> res_logmsg = new HashMap<String, String>();
        res_logmsg.put("URL", request_url);
        res_logmsg.put("Status", ((Integer) status).toString());

        Header content_type_header = null;

        // translate response headers
        StringBuilder response_header_log = new StringBuilder();
        Header[] rawheaders = hres.getAllHeaders();
        for (Header rawheader : rawheaders) {
            String headername = rawheader.getName().toLowerCase();
            if (headername.equalsIgnoreCase("content-type")) {
                content_type_header = rawheader;
                // XXX should strip everything after ;
                content_type = rawheader.getValue();

                // XXX don't set content_type_parameters, deprecated?
            } else if (headername.equalsIgnoreCase("x-metaweb-cost")) {
                _costCollector.merge(rawheader.getValue());
            } else if (headername.equalsIgnoreCase("x-metaweb-tid")) {
                res_logmsg.put("ITID", rawheader.getValue());
            }

            headers.put(headername, rawheader.getValue());
            response_header_log.append(headername + ": " + rawheader.getValue() + "\r\n");
        }

        res_logmsg.put("Headers", response_header_log.toString());

        if (!system && log_to_user) {
            ArrayList<Object> msg = new ArrayList<Object>();
            msg.add("urlfetch response");
            msg.add(res_logmsg);
            _acre_response.log("debug", msg);
        }

        _logger.info("urlfetch.response", res_logmsg);

        // read cookies
        for (Cookie c : cstore.getCookies()) {
            cookies.put(c.getName(), new AcreCookie(c));
        }

        // get body encoding

        String charset = null;
        if (content_type_header != null) {
            HeaderElement values[] = content_type_header.getElements();
            if (values.length == 1) {
                NameValuePair param = values[0].getParameterByName("charset");
                if (param != null) {
                    charset = param.getValue();
                }
            }
        }

        if (charset == null)
            charset = response_encoding;

        // read body
        HttpEntity ent = hres.getEntity();
        if (ent != null) {
            InputStream res_stream = ent.getContent();
            Header cenc = ent.getContentEncoding();
            if (cenc != null && res_stream != null) {
                HeaderElement[] codecs = cenc.getElements();
                for (HeaderElement codec : codecs) {
                    if (codec.getName().equalsIgnoreCase("gzip")) {
                        res_stream = new GZIPInputStream(res_stream);
                    }
                }
            }

            long firstByteTime = 0;
            long endTime = 0;
            if (content_type != null
                    && (content_type.startsWith("image/") || content_type.startsWith("application/octet-stream")
                            || content_type.startsWith("multipart/form-data"))) {
                // HttpClient's InputStream doesn't support mark/reset, so
                // wrap it with one that does.
                BufferedInputStream bufis = new BufferedInputStream(res_stream);
                bufis.mark(2);
                bufis.read();
                firstByteTime = System.currentTimeMillis();
                bufis.reset();
                byte[] data = IOUtils.toByteArray(bufis);

                endTime = System.currentTimeMillis();
                body = new JSBinary();
                ((JSBinary) body).set_data(data);

                try {
                    if (res_stream != null) {
                        res_stream.close();
                    }
                } catch (IOException e) {
                    // ignore
                }
            } else if (res_stream == null || charset == null) {
                firstByteTime = endTime = System.currentTimeMillis();
                body = "";
            } else {
                StringWriter writer = new StringWriter();
                Reader reader = new InputStreamReader(res_stream, charset);
                int i = reader.read();
                firstByteTime = System.currentTimeMillis();
                writer.write(i);
                IOUtils.copy(reader, writer);
                endTime = System.currentTimeMillis();
                body = writer.toString();

                try {
                    reader.close();
                    writer.close();
                } catch (IOException e) {
                    // ignore
                }
            }

            long waitingTime = firstByteTime - startTime;
            long readingTime = endTime - firstByteTime;

            _logger.debug("urlfetch.timings", "waiting time: " + waitingTime + "ms");
            _logger.debug("urlfetch.timings", "reading time: " + readingTime + "ms");

            Statistics.instance().collectUrlfetchTime(startTime, firstByteTime, endTime);

            _costCollector.collect((system) ? "asuc" : "auuc").collect((system) ? "asuw" : "auuw", waitingTime)
                    .collect((system) ? "asub" : "auub", waitingTime);
        }
    } catch (IllegalArgumentException e) {
        Throwable cause = e.getCause();
        if (cause == null)
            cause = e;
        throw new AcreURLFetchException("failed to fetch URL. " + " - Request Error: " + cause.getMessage());
    } catch (IOException e) {
        Throwable cause = e.getCause();
        if (cause == null)
            cause = e;
        throw new AcreURLFetchException("Failed to fetch URL. " + " - Network Error: " + cause.getMessage());
    } catch (RuntimeException e) {
        Throwable cause = e.getCause();
        if (cause == null)
            cause = e;
        throw new AcreURLFetchException("Failed to fetch URL. " + " - Network Error: " + cause.getMessage());
    } finally {
        method.abort();
    }
}

From source file:com.cognitect.transit.TransitTest.java

public void testReadSymbol() throws IOException {

    Reader r = reader("\"~$foo\"");
    Object v = r.read();
    assertEquals("foo", v.toString());
}

From source file:com.cognitect.transit.TransitTest.java

public void testReadInteger() throws IOException {

    Reader r = reader("\"~i42\"");
    assertEquals(42L, r.read());
    r = reader("\"~n4256768765123454321897654321234567\"");
    assertEquals(0, (new BigInteger("4256768765123454321897654321234567")).compareTo((BigInteger) r.read()));
}