|
Groovy example source code file (StaticPropertyBug.groovy)
The Groovy StaticPropertyBug.groovy source codepackage groovy.bugs class StaticPropertyBug extends GroovyTestCase { MetaClassRegistry registry MetaClass originalMetaClass void setUp() { registry = GroovySystem.metaClassRegistry originalMetaClass = registry.getMetaClass(StaticPropertyFoo) } void tearDown() { registry.setMetaClass(StaticPropertyFoo, originalMetaClass) } void testCallSiteShouldBeUpdatedAfterProxyMetaClassIsSet() { def getFoo = {-> StaticPropertyFoo.bar } assert 'foo' == StaticPropertyFoo.bar assert 'foo' == getFoo() MetaClass mc = new StaticPropertyClassProxyMetaClass(registry, StaticPropertyFoo, originalMetaClass) registry.setMetaClass(StaticPropertyFoo, mc) assert 'static' == StaticPropertyFoo.bar assert 'static' == getFoo() } void testCallSiteShouldBeUpdatedAfterOriginalMetaClassIsRestored() { def getFoo = {-> StaticPropertyFoo.bar } MetaClass mc = new StaticPropertyClassProxyMetaClass(registry, StaticPropertyFoo, originalMetaClass) registry.setMetaClass(StaticPropertyFoo, mc) assert 'static' == StaticPropertyFoo.bar assert 'static' == getFoo() registry.setMetaClass(StaticPropertyFoo, originalMetaClass) assert 'foo' == StaticPropertyFoo.bar assert 'foo' == getFoo() } } class StaticPropertyFoo { static bar = 'foo' } class StaticPropertyClassProxyMetaClass extends ProxyMetaClass { StaticPropertyClassProxyMetaClass(MetaClassRegistry metaClassRegistry, Class aClass, MetaClass adaptee) { super(metaClassRegistry, aClass, adaptee) } public Object getProperty(Class aClass, Object object, String property, boolean b, boolean b1) { 'static' } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy StaticPropertyBug.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.