Test non-standard access with extended bytecode enhancement
Turns out there is nothing wrong and these tests already pass.
This commit is contained in:
parent
d43f618eba
commit
7450f916f1
|
@ -0,0 +1,765 @@
|
|||
package org.hibernate.orm.test.bytecode.enhancement.basic;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.hibernate.Hibernate;
|
||||
|
||||
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
|
||||
import org.hibernate.testing.bytecode.enhancement.EnhancementOptions;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
/**
|
||||
* Checks that non-standard access to fields by the application works correctly,
|
||||
* i.e. when exposing fields through accessors with non-standard names,
|
||||
* static accessors, accessors defined in a subclass,
|
||||
* or accessors defined in an inner class.
|
||||
*/
|
||||
@RunWith(BytecodeEnhancerRunner.class)
|
||||
@EnhancementOptions(lazyLoading = true, extendedEnhancement = true)
|
||||
public class ExtendedEnhancementNonStandardAccessTest extends BaseCoreFunctionalTestCase {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class[] {
|
||||
MyAbstractEntity.class, MyAbstractConfusingEntity.class, MyConcreteEntity.class
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nonStandardInstanceGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForPublicField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForPublicField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nonStandardInstanceGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForProtectedField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForProtectedField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nonStandardInstanceGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForPackagePrivateField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForPackagePrivateField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nonStandardInstanceGetterSetterPrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForPrivateField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForPrivateField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void staticGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.staticSetPublicField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.staticGetPublicField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void staticGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.staticSetProtectedField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.staticGetProtectedField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void staticGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.staticSetPackagePrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.staticGetPackagePrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void staticGetterSetterPrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.staticSetPrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.staticGetPrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassStaticGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.InnerClassAccessors.staticSetPublicField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.InnerClassAccessors.staticGetPublicField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassStaticGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.InnerClassAccessors.staticSetProtectedField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.InnerClassAccessors.staticGetProtectedField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassStaticGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.InnerClassAccessors.staticSetPackagePrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.InnerClassAccessors.staticGetPackagePrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassStaticGetterSetterPrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
MyConcreteEntity.InnerClassAccessors.staticSetPrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return MyConcreteEntity.InnerClassAccessors.staticGetPrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassInstanceGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new MyConcreteEntity.InnerClassAccessors().instanceSetPublicField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new MyConcreteEntity.InnerClassAccessors().instanceGetPublicField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassInstanceGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new MyConcreteEntity.InnerClassAccessors().instanceSetProtectedField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new MyConcreteEntity.InnerClassAccessors().instanceGetProtectedField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassInstanceGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new MyConcreteEntity.InnerClassAccessors().instanceSetPackagePrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new MyConcreteEntity.InnerClassAccessors().instanceGetPackagePrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void innerClassInstanceGetterSetterPrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new MyConcreteEntity.InnerClassAccessors().instanceSetPrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new MyConcreteEntity.InnerClassAccessors().instanceGetPrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassStaticGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
ExternalClassAccessors.staticSetPublicField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return ExternalClassAccessors.staticGetPublicField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassStaticGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
ExternalClassAccessors.staticSetProtectedField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return ExternalClassAccessors.staticGetProtectedField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassStaticGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
ExternalClassAccessors.staticSetPackagePrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return ExternalClassAccessors.staticGetPackagePrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassInstanceGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new ExternalClassAccessors().instanceSetPublicField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new ExternalClassAccessors().instanceGetPublicField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassInstanceGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new ExternalClassAccessors().instanceSetProtectedField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new ExternalClassAccessors().instanceGetProtectedField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void externalClassInstanceGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
new ExternalClassAccessors().instanceSetPackagePrivateField( entity, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return new ExternalClassAccessors().instanceGetPackagePrivateField( entity );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassInstanceGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.setAbstractEntityPublicField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.getAbstractEntityPublicField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassInstanceGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.setAbstractEntityProtectedField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.getAbstractEntityProtectedField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassInstanceGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.setAbstractEntityPackagePrivateField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.getAbstractEntityPackagePrivateField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassNonStandardInstanceGetterSetterPublicField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForAbstractEntityPublicField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForAbstractEntityPublicField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassNonStandardInstanceGetterSetterProtectedField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForAbstractEntityProtectedField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForAbstractEntityProtectedField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subClassNonStandardInstanceGetterSetterPackagePrivateField() {
|
||||
doTestFieldAccess( new AccessDelegate() {
|
||||
@Override
|
||||
public void setValue(MyConcreteEntity entity, Long value) {
|
||||
entity.nonStandardSetterForAbstractEntityPackagePrivateField( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getValue(MyConcreteEntity entity) {
|
||||
return entity.nonStandardGetterForAbstractEntityPackagePrivateField();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
// Ideally we'd make this a @ParameterizedTest and pass the access delegate as parameter,
|
||||
// but we cannot do that due to JUnit using a different classloader than the test.
|
||||
private void doTestFieldAccess(AccessDelegate delegate) {
|
||||
Long id = fromTransaction( em -> {
|
||||
var entity = new MyConcreteEntity();
|
||||
em.persist( entity );
|
||||
return entity.id;
|
||||
} );
|
||||
|
||||
inTransaction( em -> {
|
||||
var entity = em.find( MyConcreteEntity.class, id );
|
||||
assertThat( delegate.getValue( entity ) )
|
||||
.as( "Loaded value before update" )
|
||||
.isNull();
|
||||
} );
|
||||
|
||||
inTransaction( em -> {
|
||||
var entity = em.getReference( MyConcreteEntity.class, id );
|
||||
// Since field access is replaced with accessor calls,
|
||||
// we expect this change to be detected by dirty tracking and persisted.
|
||||
delegate.setValue( entity, 42L );
|
||||
} );
|
||||
|
||||
inTransaction( em -> {
|
||||
var entity = em.find( MyConcreteEntity.class, id );
|
||||
// We're working on an initialized entity.
|
||||
assertThat( entity )
|
||||
.as( "find() should return uninitialized entity" )
|
||||
.returns( true, Hibernate::isInitialized );
|
||||
// The above should have persisted a value that passes the assertion.
|
||||
assertThat( delegate.getValue( entity ) )
|
||||
.as( "Loaded value after update" )
|
||||
.isEqualTo( 42L );
|
||||
} );
|
||||
|
||||
inTransaction( em -> {
|
||||
var entity = em.getReference( MyConcreteEntity.class, id );
|
||||
// We're working on an uninitialized entity.
|
||||
assertThat( entity )
|
||||
.as( "getReference() should return uninitialized entity" )
|
||||
.returns( false, Hibernate::isInitialized );
|
||||
// The above should have persisted a value that passes the assertion.
|
||||
assertThat( delegate.getValue( entity ) )
|
||||
.as( "Lazily loaded value after update" )
|
||||
.isEqualTo( 42L );
|
||||
// Accessing the value should trigger initialization of the entity.
|
||||
assertThat( entity )
|
||||
.as( "Getting the value should initialize the entity" )
|
||||
.returns( true, Hibernate::isInitialized );
|
||||
} );
|
||||
}
|
||||
|
||||
@Entity(name = "abstract")
|
||||
public static abstract class MyAbstractEntity {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
public long id;
|
||||
|
||||
public Long abstractEntityPublicField;
|
||||
|
||||
protected Long abstractEntityProtectedField;
|
||||
|
||||
Long abstractEntityPackagePrivateField;
|
||||
}
|
||||
|
||||
// Just to confuse panache: the fields are not declared in the *direct* superclass.
|
||||
@Entity(name = "abstract2")
|
||||
public static abstract class MyAbstractConfusingEntity extends MyAbstractEntity {
|
||||
}
|
||||
|
||||
@Entity(name = "concrete")
|
||||
public static class MyConcreteEntity extends MyAbstractConfusingEntity {
|
||||
public Long publicField;
|
||||
protected Long protectedField;
|
||||
Long packagePrivateField;
|
||||
private Long privateField;
|
||||
|
||||
public Long getAbstractEntityPublicField() {
|
||||
return abstractEntityPublicField;
|
||||
}
|
||||
|
||||
public void setAbstractEntityPublicField(Long abstractEntityPublicField) {
|
||||
this.abstractEntityPublicField = abstractEntityPublicField;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForAbstractEntityPublicField() {
|
||||
return abstractEntityPublicField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForAbstractEntityPublicField(Long value) {
|
||||
abstractEntityPublicField = value;
|
||||
}
|
||||
|
||||
public Long getAbstractEntityProtectedField() {
|
||||
return abstractEntityProtectedField;
|
||||
}
|
||||
|
||||
public void setAbstractEntityProtectedField(Long abstractEntityProtectedField) {
|
||||
this.abstractEntityProtectedField = abstractEntityProtectedField;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForAbstractEntityProtectedField() {
|
||||
return abstractEntityProtectedField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForAbstractEntityProtectedField(Long value) {
|
||||
abstractEntityProtectedField = value;
|
||||
}
|
||||
|
||||
public Long getAbstractEntityPackagePrivateField() {
|
||||
return abstractEntityPackagePrivateField;
|
||||
}
|
||||
|
||||
public void setAbstractEntityPackagePrivateField(Long abstractEntityPackagePrivateField) {
|
||||
this.abstractEntityPackagePrivateField = abstractEntityPackagePrivateField;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForAbstractEntityPackagePrivateField() {
|
||||
return abstractEntityPackagePrivateField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForAbstractEntityPackagePrivateField(Long value) {
|
||||
abstractEntityPackagePrivateField = value;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForPublicField() {
|
||||
return publicField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForPublicField(Long value) {
|
||||
publicField = value;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForPackagePrivateField() {
|
||||
return packagePrivateField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForPackagePrivateField(Long value) {
|
||||
packagePrivateField = value;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForProtectedField() {
|
||||
return protectedField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForProtectedField(Long value) {
|
||||
protectedField = value;
|
||||
}
|
||||
|
||||
public Long nonStandardGetterForPrivateField() {
|
||||
return privateField;
|
||||
}
|
||||
|
||||
public void nonStandardSetterForPrivateField(Long value) {
|
||||
privateField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPublicField(MyConcreteEntity entity) {
|
||||
return entity.publicField;
|
||||
}
|
||||
|
||||
public static void staticSetPublicField(MyConcreteEntity entity, Long value) {
|
||||
entity.publicField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetProtectedField(MyConcreteEntity entity) {
|
||||
return entity.protectedField;
|
||||
}
|
||||
|
||||
public static void staticSetProtectedField(MyConcreteEntity entity, Long value) {
|
||||
entity.protectedField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPackagePrivateField(MyConcreteEntity entity) {
|
||||
return entity.packagePrivateField;
|
||||
}
|
||||
|
||||
public static void staticSetPackagePrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.packagePrivateField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPrivateField(MyConcreteEntity entity) {
|
||||
return entity.privateField;
|
||||
}
|
||||
|
||||
public static void staticSetPrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.privateField = value;
|
||||
}
|
||||
|
||||
public static final class InnerClassAccessors {
|
||||
public static Long staticGetPublicField(MyConcreteEntity entity) {
|
||||
return entity.publicField;
|
||||
}
|
||||
|
||||
public static void staticSetPublicField(MyConcreteEntity entity, Long value) {
|
||||
entity.publicField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetProtectedField(MyConcreteEntity entity) {
|
||||
return entity.protectedField;
|
||||
}
|
||||
|
||||
public static void staticSetProtectedField(MyConcreteEntity entity, Long value) {
|
||||
entity.protectedField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPackagePrivateField(MyConcreteEntity entity) {
|
||||
return entity.packagePrivateField;
|
||||
}
|
||||
|
||||
public static void staticSetPackagePrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.packagePrivateField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPrivateField(MyConcreteEntity entity) {
|
||||
return entity.privateField;
|
||||
}
|
||||
|
||||
public static void staticSetPrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.privateField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetPublicField(MyConcreteEntity entity) {
|
||||
return entity.publicField;
|
||||
}
|
||||
|
||||
public void instanceSetPublicField(MyConcreteEntity entity, Long value) {
|
||||
entity.publicField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetProtectedField(MyConcreteEntity entity) {
|
||||
return entity.protectedField;
|
||||
}
|
||||
|
||||
public void instanceSetProtectedField(MyConcreteEntity entity, Long value) {
|
||||
entity.protectedField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetPackagePrivateField(MyConcreteEntity entity) {
|
||||
return entity.packagePrivateField;
|
||||
}
|
||||
|
||||
public void instanceSetPackagePrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.packagePrivateField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetPrivateField(MyConcreteEntity entity) {
|
||||
return entity.privateField;
|
||||
}
|
||||
|
||||
public void instanceSetPrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.privateField = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final class ExternalClassAccessors {
|
||||
public static Long staticGetPublicField(MyConcreteEntity entity) {
|
||||
return entity.publicField;
|
||||
}
|
||||
|
||||
public static void staticSetPublicField(MyConcreteEntity entity, Long value) {
|
||||
entity.publicField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetProtectedField(MyConcreteEntity entity) {
|
||||
return entity.protectedField;
|
||||
}
|
||||
|
||||
public static void staticSetProtectedField(MyConcreteEntity entity, Long value) {
|
||||
entity.protectedField = value;
|
||||
}
|
||||
|
||||
public static Long staticGetPackagePrivateField(MyConcreteEntity entity) {
|
||||
return entity.packagePrivateField;
|
||||
}
|
||||
|
||||
public static void staticSetPackagePrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.packagePrivateField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetPublicField(MyConcreteEntity entity) {
|
||||
return entity.publicField;
|
||||
}
|
||||
|
||||
public void instanceSetPublicField(MyConcreteEntity entity, Long value) {
|
||||
entity.publicField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetProtectedField(MyConcreteEntity entity) {
|
||||
return entity.protectedField;
|
||||
}
|
||||
|
||||
public void instanceSetProtectedField(MyConcreteEntity entity, Long value) {
|
||||
entity.protectedField = value;
|
||||
}
|
||||
|
||||
public Long instanceGetPackagePrivateField(MyConcreteEntity entity) {
|
||||
return entity.packagePrivateField;
|
||||
}
|
||||
|
||||
public void instanceSetPackagePrivateField(MyConcreteEntity entity, Long value) {
|
||||
entity.packagePrivateField = value;
|
||||
}
|
||||
}
|
||||
|
||||
private interface AccessDelegate {
|
||||
void setValue(MyConcreteEntity entity, Long value);
|
||||
|
||||
Long getValue(MyConcreteEntity entity);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue