Emily Berk created KARAF-5362:
---------------------------------
Summary: NPE Creating Session with a null "in" parameter from a
SessionFactory
Key: KARAF-5362
URL: https://issues.apache.org/jira/browse/KARAF-5362
Project: Karaf
Issue Type: Bug
Components: karaf-shell
Affects Versions: 4.1.2
Reporter: Emily Berk
Priority: Trivial
The javadoc for {{SessionFactory#create(InputStream, PrintStream,
PrintStream)}} says
{code:java}
@param in the input stream, can be <code>null</code> if the session is only
used to execute a command using {@link Session#execute(CharSequence)}
{code}
When I try
{code:java}
package org.apache.karaf.shell.impl.console;
import static org.easymock.EasyMock.createMock;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import org.apache.felix.service.threadio.ThreadIO;
import org.apache.karaf.shell.api.console.SessionFactory;
import org.junit.Test;
public class SessionFactoryImplTest {
@Test
public void createWithNullInputStream() throws UnsupportedEncodingException
{
final SessionFactory sessionFactory = new
SessionFactoryImpl(createMock(ThreadIO.class));
sessionFactory.create(null, createMock(PrintStream.class),
createMock(PrintStream.class));
}
}
{code}
I get
{code}
java.lang.NullPointerException: "in" is null!
at java.nio.channels.Channels.checkNotNull(Channels.java:67)
at java.nio.channels.Channels.newChannel(Channels.java:347)
at
org.apache.felix.gogo.runtime.CommandSessionImpl.<init>(CommandSessionImpl.java:108)
at
org.apache.felix.gogo.runtime.CommandProcessorImpl.createSession(CommandProcessorImpl.java:82)
at
org.apache.felix.gogo.runtime.CommandProcessorImpl.createSession(CommandProcessorImpl.java:38)
at
org.apache.karaf.shell.impl.console.HeadlessSessionImpl.<init>(HeadlessSessionImpl.java:67)
at
org.apache.karaf.shell.impl.console.SessionFactoryImpl.create(SessionFactoryImpl.java:155)
at
org.apache.karaf.shell.impl.console.SessionFactoryImpl.create(SessionFactoryImpl.java:146)
at
org.apache.karaf.shell.impl.console.SessionFactoryImplTest.createWithNullInputStream(SessionFactoryImplTest.java:41)
{code}
A work-around is to pass a non-null {{InputStream}} that should never be called
if the {{Session}} is only used to execute a command using
{{Session#execute(CharSequence)}}.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)