You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2018/06/14 14:12:44 UTC

svn commit: r1833507 - /felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java

Author: gnodet
Date: Thu Jun 14 14:12:44 2018
New Revision: 1833507

URL: http://svn.apache.org/viewvc?rev=1833507&view=rev
Log:
[FELIX-5869] [goto][jline] Weird error if the script contains unicode characters

Modified:
    felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java

Modified: felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java?rev=1833507&r1=1833506&r2=1833507&view=diff
==============================================================================
--- felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java (original)
+++ felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Shell.java Thu Jun 14 14:12:44 2018
@@ -29,6 +29,7 @@ import java.io.Reader;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.net.HttpURLConnection;
 import java.net.URI;
 import java.net.URL;
 import java.net.URLConnection;
@@ -200,22 +201,29 @@ public class Shell {
     }
 
     public static CharSequence readScript(URI script) throws Exception {
+        CharBuffer buf = CharBuffer.allocate(4096);
+        StringBuilder sb = new StringBuilder();
+
         URLConnection conn = script.toURL().openConnection();
-        int length = conn.getContentLength();
 
-        if (length == -1) {
-            System.err.println("eek! unknown Contentlength for: " + script);
-            length = 10240;
+        try (InputStreamReader in = new InputStreamReader(conn.getInputStream()))
+        {
+            while (in.read(buf) > 0)
+            {
+                buf.flip();
+                sb.append(buf);
+                buf.clear();
+            }
+        }
+        finally
+        {
+            if (conn instanceof HttpURLConnection)
+            {
+                ((HttpURLConnection) conn).disconnect();
+            }
         }
 
-        InputStream in = conn.getInputStream();
-        CharBuffer cbuf = CharBuffer.allocate(length);
-        Reader reader = new InputStreamReader(in);
-        reader.read(cbuf);
-        in.close();
-        cbuf.rewind();
-
-        return cbuf;
+        return sb;
     }
 
     @SuppressWarnings("unchecked")