eaglesinblack - 2012-01-17

Hello,

I'm trying to update MSN User's profile picture but i'm getting following exception.
My sample code is here :
Can you help me ? Is it possible to update user's profile picture in JML ?

public static void uploadProfilePicture(MsnMessenger messenger) {
        File sourceFile = new File("C:/test.png");
        if (!sourceFile.isFile()) {
            System.err.println("Source File Does not exist");
            return;
        }
        byte[] avatarBytes;
        try {
            avatarBytes = getBytesFromFile(sourceFile);
            //xmpp avatar is in base64 so we need to decode it
            MsnObject pic = MsnObject.getInstance(messenger.getOwner().getEmail().toString(),
                                                  Base64.decode(avatarBytes));
            pic.setSize(avatarBytes.length);
            pic.setType(3);
            messenger.getOwner().setDisplayPicture(pic);
            //Next line is not necessary because jml calls that function inside setDisplayPicture...
            //msnclient.getOwner().setInitDisplayPicture(pic);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }

Jan 17, 2012 1:12:00 PM net.sf.jml.net.Session close
SEVERE: error shutting down input on socket
java.net.SocketException: Socket is closed
    at java.net.Socket.shutdownInput(Socket.java:1339)
    at net.sf.jml.net.Session.close(Session.java:378)
    at net.sf.jml.protocol.MsnSession.close(MsnSession.java:176)
    at net.sf.jml.impl.BasicSwitchboard.close(BasicSwitchboard.java:74)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.finishProcess(DisplayPictureRetrieveWorker.java:133)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.notifyFinalization(DisplayPictureRetrieveWorker.java:151)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.switchboardClosed(DisplayPictureRetrieveWorker.java:468)
    at net.sf.jml.impl.AbstractMessenger.fireSwitchboardClosed(AbstractMessenger.java:726)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionClosed(BasicSwitchboard.java:191)
    at net.sf.jml.net.Session.fireSessionClosed(Session.java:323)
    at net.sf.jml.net.Session.close(Session.java:409)
    at net.sf.jml.net.Session.close(Session.java:365)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionTimeout(BasicSwitchboard.java:184)
    at net.sf.jml.net.Session.fireSessionTimeout(Session.java:356)
    at net.sf.jml.net.Session.access$1600(Session.java:30)
    at net.sf.jml.net.Session$TimeoutFire.run(Session.java:543)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
Jan 17, 2012 1:12:00 PM net.sf.jml.net.Session close
SEVERE: error flushing remaining output on socket
java.net.SocketException: Socket is closed
    at java.net.Socket.getOutputStream(Socket.java:802)
    at net.sf.jml.net.Session.close(Session.java:385)
    at net.sf.jml.protocol.MsnSession.close(MsnSession.java:176)
    at net.sf.jml.impl.BasicSwitchboard.close(BasicSwitchboard.java:74)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.finishProcess(DisplayPictureRetrieveWorker.java:133)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.notifyFinalization(DisplayPictureRetrieveWorker.java:151)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.switchboardClosed(DisplayPictureRetrieveWorker.java:468)
    at net.sf.jml.impl.AbstractMessenger.fireSwitchboardClosed(AbstractMessenger.java:726)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionClosed(BasicSwitchboard.java:191)
    at net.sf.jml.net.Session.fireSessionClosed(Session.java:323)
    at net.sf.jml.net.Session.close(Session.java:409)
    at net.sf.jml.net.Session.close(Session.java:365)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionTimeout(BasicSwitchboard.java:184)
    at net.sf.jml.net.Session.fireSessionTimeout(Session.java:356)
    at net.sf.jml.net.Session.access$1600(Session.java:30)
    at net.sf.jml.net.Session$TimeoutFire.run(Session.java:543)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
Jan 17, 2012 1:12:00 PM net.sf.jml.net.Session fireSessionClosed
SEVERE: error firing events for close
java.lang.ArrayIndexOutOfBoundsException: -119
    at net.sf.jml.util.Base64$Base64Encoder.decode(Base64.java:321)
    at net.sf.jml.util.Base64.decode(Base64.java:115)
    at net.sf.jml.example.HelloMessenger.uploadProfilePicture(HelloMessenger.java:284)
    at net.sf.jml.example.HelloMessenger$1$1.notifyMsnObjectRetrieval(HelloMessenger.java:152)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.notifyFinalization(DisplayPictureRetrieveWorker.java:177)
    at net.sf.jml.message.p2p.DisplayPictureRetrieveWorker.switchboardClosed(DisplayPictureRetrieveWorker.java:468)
    at net.sf.jml.impl.AbstractMessenger.fireSwitchboardClosed(AbstractMessenger.java:726)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionClosed(BasicSwitchboard.java:191)
    at net.sf.jml.net.Session.fireSessionClosed(Session.java:323)
    at net.sf.jml.net.Session.close(Session.java:409)
    at net.sf.jml.net.Session.close(Session.java:365)
    at net.sf.jml.impl.BasicSwitchboard$SBSessionListener.sessionTimeout(BasicSwitchboard.java:184)
    at net.sf.jml.net.Session.fireSessionTimeout(Session.java:356)
    at net.sf.jml.net.Session.access$1600(Session.java:30)
    at net.sf.jml.net.Session$TimeoutFire.run(Session.java:543)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
Jan 17, 2012 1:12:13 PM net.sf.jml.protocol.MsnSession$1 messageSent
INFO: alper.ozdamar@hotmail.com NS >>> PNG
Jan 17, 2012 1:12:13 PM net.sf.jml.protocol.MsnSession$1 messageReceived
INFO: alper.ozdamar@hotmail.com NS <<< QNG 49