You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Peter Niederwieser (JIRA)" <ji...@apache.org> on 2014/05/27 15:38:01 UTC

[jira] [Updated] (TAP5-2340) Make proxies honor Java 8 default methods

     [ https://issues.apache.org/jira/browse/TAP5-2340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter Niederwieser updated TAP5-2340:
-------------------------------------

          Description: 
MyInterface.java:
{code}
public interface MyInterface {
  default int compute() { return 42; }
}
{code}

PlasticSpec.groovy:
{code}
class PlasticSpec extends Specification {
  def "plastic proxy for interface with default method"() {
    def manager = PlasticManager.withClassLoader(getClass().classLoader).create()
    def proxy = manager.createProxy(MyInterface, {})
    def impl = proxy.newInstance()

    expect:
    impl.compute() == 42 // fails; actual: 0
  }

  def "manual implementation of interface with default method"() {
    def impl = new MyInterface() {}

    expect:
    impl.compute() == 42 // passes
  }
}
{code}

Tested with 5.4-beta-6.

  was:
MyInterface.java:
{code}
public interface MyInterface {
  default int compute() { return 42; }
}
{code}

PlasticSpec.groovy:
{code}
class PlasticSpec extends Specification {
  def "plastic proxy for interface with default method"() {
    def manager = PlasticManager.withClassLoader(getClass().classLoader).create()
    def proxy = manager.createProxy(MyInterface, {})
    def impl = proxy.newInstance()

    expect:
    impl.compute() == 42 // fails; actual: 0
  }

  def "manual implementation of interface with default method"() {
    def impl = new MyInterface() {}

    expect:
    impl.compute() == 42 // passes
  }
}
{code}

    Affects Version/s: 5.4

> Make proxies honor Java 8 default methods
> -----------------------------------------
>
>                 Key: TAP5-2340
>                 URL: https://issues.apache.org/jira/browse/TAP5-2340
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: plastic
>    Affects Versions: 5.4
>            Reporter: Peter Niederwieser
>
> MyInterface.java:
> {code}
> public interface MyInterface {
>   default int compute() { return 42; }
> }
> {code}
> PlasticSpec.groovy:
> {code}
> class PlasticSpec extends Specification {
>   def "plastic proxy for interface with default method"() {
>     def manager = PlasticManager.withClassLoader(getClass().classLoader).create()
>     def proxy = manager.createProxy(MyInterface, {})
>     def impl = proxy.newInstance()
>     expect:
>     impl.compute() == 42 // fails; actual: 0
>   }
>   def "manual implementation of interface with default method"() {
>     def impl = new MyInterface() {}
>     expect:
>     impl.compute() == 42 // passes
>   }
> }
> {code}
> Tested with 5.4-beta-6.



--
This message was sent by Atlassian JIRA
(v6.2#6252)