On Mon, 21 Jan 2013, Alexey Ryabukhin wrote:

Here is a Java part:

public double[][] getArrayPixels()
   {
       double array[][] = new double[nx][ny];
       int k = 0;
       for(int j = 0; j < ny; j++)
       {
           for(int i = 0; i < nx; i++)
               array[i][j] = pixels[k++];
       }

       return array;
   }


public void putArrayPixels(double array[][])
   {
       int bx = array.length;
       int by = array[0].length;
       int k = 0;
       for(int j = 0; j < by; j++)
       {
           for(int i = 0; i < bx; i++)
               pixels[k++] = array[i][j];
       }

   }



Python part:

a = p.ImageAccess(5, 5).getArrayPixels()
print a
JArray<object>[<Object: [D@14efcb0>, <Object: [D@af8eaa>, <Object:
[D@1bf4061>, <Object: [D@11ba64d>, <Object: [D@432685>]
This part works fine, I can cast each object as JArray double



ijresize.ImageAccess(5, 5).putArrayPixels(a)
Produces error:

p.InvalidArgsError: (<type 'ImageAccess'>, 'putArrayPixels',
JArray<object>[<Object: [D@af8eaa>, <Object: [D@1bf4061>, <Object:
[D@11ba64d>, <Object: [D@432685>, <Object: [D@9609cc>])

The code parsing python parameter tuples didn't allow for nested arrays.
I added code to bypass array element checking when the array is in fact a nested array and treat it as an array of java.lang.Object.

This is checked into rev 1437761 of pylucene trunk.
I modified your code to actually build and was able to pass a nested array back and forth and examine its contents in both the Java and Python sides.

Andi..


2013/1/21 Andi Vajda <va...@apache.org>:

On Mon, 21 Jan 2013, Alexey Ryabukhin wrote:

I have a function in java code that returns double array[][].
In python I have this:
JArray<object>[<Object: [D@11ba64d>, <Object: [D@14efcb0>, <Object:
[D@432685>, <Object: [D@9609cc>, <Object: [D@5d62a4>]
Works fine.

But when I put it back to java it shows error:
self.putArrayPixels(self.getArrayPixels())
ijresize.InvalidArgsError: (<class '__main__.ia'>, 'putArrayPixels',
JArray<object>[<Object: [D@1869971>, <Object: [D@1c3cd93>, <Object:
[D@1ed790e>, <Object: [D@1a6bc76>, <Object: [D@19f1b1d>])




Is it possible somehow to do this?


I'm not sure I know what you mean. Could you please include a small Java
class + Python program that reproduces the problem ?

Thanks !

Andi..

Reply via email to