dragome/dragome-sdk

Need full support java 8 closure

Opened this issue · 7 comments

Repost from xpenatan/gdx-teavm#25

We can read on this page https://github.com/dragome/dragome-sdk :

Java 8 ready. Build your pages using lambda expressions, default methods, streams

but
I have this synthetic code:

====================================================

Supplier.java

public interface Supplier<T> {
	public T get();
}

ObjectPool.java

public class ObjectPool<T> {
	private final Supplier<T> supplier;

	private ObjectPool(final Supplier<T> supplier) {
		this.supplier = supplier;
	}

	public T get() {
		return supplier.get();
	}

	public static <T> ObjectPool<T> create(final Supplier<T> supplier) {
		return new ObjectPool<>(supplier);
	}

}

NodeOverlapCallback.java

public abstract class NodeOverlapCallback {
	public abstract void processNode();
}

MyNodeOverlapCallback.java

public class MyNodeOverlapCallback extends NodeOverlapCallback {
    @Override
    public void processNode() {
       // DO SOMETHING
    }
}

====================================================

Now if i do like this:

final ObjectPool<MyNodeOverlapCallback> myNodeCallbacks = ObjectPool.create(
    new Supplier<MyNodeOverlapCallback>() {
        @Override
        public MyNodeOverlapCallback get() {
            return new MyNodeOverlapCallback();
        }
    });
    
final MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
myNodeCallback.processNode();

All work well after dragome js codegen

But if i do like this:

final ObjectPool<MyNodeOverlapCallback> myNodeCallbacks = ObjectPool.create( 
    () -> new MyNodeOverlapCallback()
);

final MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
myNodeCallback.processNode();

Browser write javascript error that myNodeCallback is null;

But both implimentation work correct as java code.

@nicolaichuk: Could you please create a test to reproduce the issue?

Ok. I try do it when will have free time.

@fpetrola,
i add test suite for this issue.

great, thanks!

@fpetrola,
when do you plane fix this issue?

I think we could fix it for this milestone: https://github.com/dragome/dragome-sdk/milestone/5