You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Tim Verbelen (JIRA)" <ji...@apache.org> on 2014/01/06 11:27:50 UTC
[jira] [Commented] (FELIX-4375) Error when reading gosh_profile
from stream
[ https://issues.apache.org/jira/browse/FELIX-4375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13862901#comment-13862901 ]
Tim Verbelen commented on FELIX-4375:
-------------------------------------
Instead of using a large buffer when the stream length is unknown upfront, one could also use a StringBuffer :
private CharSequence readScript(URI script) throws Exception
{
URLConnection conn = script.toURL().openConnection();
int length = conn.getContentLength();
StringBuffer sbuf = new StringBuffer();
CharBuffer cbuf;
if(length == -1)
cbuf = CharBuffer.allocate(1024);
else
cbuf = CharBuffer.allocate(length);
InputStream in = conn.getInputStream();
Reader reader = new InputStreamReader(in);
while(reader.read(cbuf) > 0){
cbuf.flip();
sbuf.append(cbuf);
cbuf.clear();
}
in.close();
return sbuf;
}
> Error when reading gosh_profile from stream
> -------------------------------------------
>
> Key: FELIX-4375
> URL: https://issues.apache.org/jira/browse/FELIX-4375
> Project: Felix
> Issue Type: Bug
> Components: Gogo Shell
> Affects Versions: gogo.shell-0.10.0
> Environment: Error occurred using Gogo shell on top op Concierge OSGi runtime.
> Reporter: Tim Verbelen
> Priority: Minor
>
> An error occurs when "gosh_profile" is read from a stream without knowing the lenght upfront. In that case, method `CharSequence readScript(URI script)` from `Shell.java` causes an error, since it does not correctly handle the case when the length is -1. In that case, a large size buffer is allocated (fixed on 10240 atm), and thus as the buffer will not be completely filled, one cannot use `cbuf.rewind()`, but use `cbuf.flip()` instead.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)