THIS IS MY CODE, at the end is the nullpointer error i get....hope you can help me....

public class CuartaApp

    // These fields are read in from the file. This file
    // must be populated with a valid IP address for Avaya Communication
    // Manager, as well as a valid extension number and password for the
    // application softphone.
    private String callServer;
    private String extension;
    private String password;

    // The Device ID for our extension number will be supplied by the
    // Communication Manager API. The Connection ID is formulated from the
    // Device ID.
    private DeviceID id = null;
    private ConnectionID connection = null;

    // This thread is used to receive a shutdown notification when the
    // application is terminated.
    private MyShutdownThread shutdownThread;

    // These fields will be populated with the handles of the various services,
    // which we will get through the ServiceProvider class.
    //private ToneDetectionServices toneDetectSvcs;
    private AvayaStation station;
    private CallRecordingServices recordSvcs;
    private VoiceUnitServices voiceSvcs;
    private CallInformationServices callInfoSvcs;

    // MonitoringServices will be used to add/remove voice unit listener and  
    // tone detection listener.
    private MonitoringServices montSvcs;

    // These are the listeners that will be added to listen for events coming
    // from VoiceUnitServices, ToneCollectionServices, TerminalServices, and
    // PhysicalDeviceServices.
    //private MyToneDetectionListener toneDetectListener;
    private MyTerminalListener registrationListener;
    private MyCallRecordingDeviceListener callRecordListener;
    private MyVoiceUnitListener playAndRecordListener;
    private MyCallInfoListener callInfoListener;

    private GetLinkStatusResponse devuelve;
    private GetCallInformationResponse Devuelveotro;

     * Creates an instance of the CuartaApp class, bootstraps it, then starts
     * the application.
    public static void main(String[] args)
        CuartaApp app = new CuartaApp();

        catch (CstaException e)
            System.out.println("Could not start the application");
        catch (Exception e)
            System.out.println("Could not start the application");

    public void bootstrap() throws CstaException, Exception
        // Get all of the arguments from the application properties file
        ClassLoader cl = CuartaApp.class.getClassLoader();
        URL appURL = cl.getResource("");
        Properties appProp = new Properties();
        callServer = appProp.getProperty("callserver");
        extension = appProp.getProperty("extension");
        password = appProp.getProperty("password");

        if ((callServer == null) || (extension == null) || (password == null))

        // Get a handle to the ServiceProvider class.
        ServiceProvider provider = ServiceProvider.getServiceProvider(null);
    recordSvcs = CallRecordingServices.getInstance();

        voiceSvcs = (VoiceUnitServices) provider.getService(

        //toneDetectSvcs =
          //  (ToneDetectionServices) provider.getService(com.avaya.csta
      //  .tonedetection.ToneDetectionServices.class.getName());

        montSvcs = (MonitoringServices) provider.getService(

        //recordSvcs = (CallRecordingServices) provider.getService(
          //      com.avaya.csta.callrecording.CallRecordingServices.class.getName());

    callInfoSvcs = (CallInformationServices)provider.getService(CallInformationServices.class.getName());   
            System.out.println("Inicia el callinfo service");

        // Create new AvayaStation object
        station = new AvayaStationImpl();
        station.init(callServer, extension, provider);

     * This method actually starts the app. It must be called after calling
     * bootstrap or it will fail.
     * @throws Exception - if an Exception is generated by one of the calls to 
     * the services, it is thrown to the caller.
    public void start() throws Exception
            "Startup using switch="
                + callServer
                + " ext="
                + extension
                + " pw="
                + password);

        // Create a thread in whose context our cleanup will occur if the app
        // is terminated. The Communication Manager API connector server code 
        // will clean up if an app goes away unexpectedly, but it's still good 
        // to clean up.
        shutdownThread = new MyShutdownThread();

        // Get the device ID from the station class
        id = station.getDeviceID();
    System.out.println("device id =" + id);

        // A connection ID is needed for requests to data services (tone
        // detection) and voice unit services (playing and recording files).
        // It is formulated from the device ID.
        connection = new ConnectionID();
        LocalDeviceID lid = new LocalDeviceID();

        // Add listeners to be notified of events coming from the various
        // services.

        // Time to register the device. Pass in the password. Shared control
        // is set to false for this application. Default media settings (media
        // goes to connector server over G.711 codec) are fine, thus the null
        // handle for the MediaInfo
        station.register(password, true, null);

    //Now we enable the recording in order to have any established
    //call recorded completely on the registered device
    recordingActivation = new Boolean(true);
    recordSvcs.enableRecording(id, recordingActivation);

    GetCallInformation callRequest = new GetCallInformation();
    System.out.println("Llega hasta aqui");
    System.out.println("mirar" + Devuelveotro.getStationName());

        // That's all we do for now! The main thread is now going to go away,
        // and the rest of the action occurs as a result of events coming into
        // our listeners. Note that the Communication Manager API client code
        // has some persistent threads that keep the application alive. The
        // rest of the code executes in the context of these threads.

     * Creates listener objects for the different services and adds them so the
     * app will be informed of events coming from the various services.
    private void addListeners() throws CstaException
        // Add a listener so we can receive events indicating when the phone is
        // registered / unregistered.
        registrationListener = new MyTerminalListener();

        // Add an AvayaStationListner to receive events indicating phone rings,
        // lamp and display updates.
        //avayaStationListener = new MyAvayaStationListener();

    // Para recibir eventos que mustren cuando se establece una llamada,
    //cuando termina y cuando falla el inicio y la terminacion de 
    //una grabacion.
    callRecordListener = new MyCallRecordingDeviceListener();
    recordSvcs.addCallRecordingDeviceListener(id, callRecordListener);

     // Add a listener to receive events indicating when announcements are
        // done being played and when recordings have completed.
        playAndRecordListener = new MyVoiceUnitListener();
        montSvcs.addVoiceUnitListener(id, playAndRecordListener);

    //para poder obterner la info de la llamada
    callInfoListener = new MyCallInfoListener();
        System.out.println("Inicia el callinfo listener");

        // Add a listener to receive events when touch tones are detected.
        //toneDetectListener = new MyToneDetectionListener();
        //montSvcs.addToneDetectionListener(id, toneDetectListener);

     * Removes all of the listeners that were added for the various services.
    private void removeListeners() throws CstaException
        //montSvcs.removeToneDetectionListener(id, toneDetectListener);
    recordSvcs.removeCallRecordingDeviceListener(id, callRecordListener);
    montSvcs.removeVoiceUnitListener(id, playAndRecordListener);

    private void cleanup()
        System.out.println("The application is terminating: clean up.");

        // There is a chance that AvayaStation has already cleaned up as a
        // result of getting the unregistered event. In this case, the station
        // is already unregistered, the device ID has been released, and the
        // server should have cleaned up. Don't bother doing anything else.
        if (station.getDeviceID() == null)

             // Make sure no listeners were left around.

            // This method will unregister the station.
        catch (Exception e)
            System.out.println("Could not clean up properly");

 private class MyCallInfoListener implements CallInformationServices, CallInformationListener

    public void addCallInformationListener(CallInformationListener listener)
       public GetLinkStatusResponse getLinkStatus(GetLinkStatus request)

    return devuelve;
       public void removeCallInformationListener(CallInformationListener listener)
    public GetCallInformationResponse getCallInformation(GetCallInformation request)

    return Devuelveotro;

    public void linkUp(LinkUpEvent upEvent)
    public void linkDown(LinkDownEvent downEvent)

I get the following error

        at sampleapps.tutorial.CuartaApp.start(
        at sampleapps.tutorial.CuartaApp.main(
because I reduced the code the line numbre does not correspond. But it refers to th followin lines:
    System.out.println("mirar" + Devuelveotro.getStationName());

Hi, hope I can help.

I see where you declare a GetCallInformationResponse object to the variable name Devuelveotro, but I don't see where you instantiate the variable.

Add a line to create a new GetCallInformationResponse object setting it to Devuelveotro, if that's what you need.

Can you get the station name from the GetCallInformation object callRequest from the line above?