Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Need full support java 8 closure #25

Closed
nicolaichuk opened this issue Feb 27, 2017 · 1 comment
Closed

Need full support java 8 closure #25

nicolaichuk opened this issue Feb 27, 2017 · 1 comment

Comments

@nicolaichuk
Copy link
Contributor

nicolaichuk commented Feb 27, 2017

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.

P.S.: also repost to dragome/dragome-sdk#147

@xpenatan
Copy link
Owner

xpenatan commented Mar 9, 2017

I'll close this because its more dragome side.

@xpenatan xpenatan closed this as completed Mar 9, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants