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)

Reply via email to