baasbox / Android-SDK

BaasBox Android SDK
Apache License 2.0
27 stars 26 forks source link

NPE while getting file content #17

Closed andresmafra closed 10 years ago

andresmafra commented 10 years ago

I'm trying to get a file in BAASBOX version 0.7.4 but i´m getting NPE:

05-13 19:49:05.408: E/AndroidRuntime(19731): FATAL EXCEPTION: Thread-5212
05-13 19:49:05.408: E/AndroidRuntime(19731): java.lang.RuntimeException: java.lang.NullPointerException
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.ExceptionHandler$1.onError(ExceptionHandler.java:33)
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.impl.Dispatcher$Worker.run(Dispatcher.java:174)
05-13 19:49:05.408: E/AndroidRuntime(19731): Caused by: java.lang.NullPointerException
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.StreamBody.finishStream(StreamBody.java:37)
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.AsyncStream.getFromCache(AsyncStream.java:64)
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.NetworkTask.asyncCall(NetworkTask.java:146)
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.impl.Task.execute(Task.java:186)
05-13 19:49:05.408: E/AndroidRuntime(19731):    at com.baasbox.android.impl.Dispatcher$Worker.run(Dispatcher.java:170)

I can query the file and it id, but it fails while getting the stream content. My code:

picture.stream(new BaasHandler<BaasFile>() {

    @Override
    public void handle(BaasResult<BaasFile> result) {

        if (result.isSuccess()) {

            try {
                if (result.get() != null) {
                    byte[] pictureData = result.get().getData();

                    if (pictureData != null) {
                        locationImages.add(decodeByteArray(pictureData, 0,
                                pictureData.length));
                        // FIXME
                    }

                }
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());
            }

        } else {
            // TODO no picture data
            Log.e(TAG, "a");
        }

    }
});

For query the file with success I use the following:

Filter where = Filter.where("attachedData.idPublic = '" + locationId + "'", new Object[] {});

BaasFile.fetchAll(where, new BaasHandler<List<BaasFile>>() {
    @Override
    public void handle(BaasResult<List<BaasFile>> res) {

        try {

            if (res.isSuccess()) {
...
eliantor commented 10 years ago

closed by commit 05c086fd51f165d07a5e74b0e8850969606c044c