Files
ebean/src/main/java/io/ebeaninternal/server/properties/EnhanceBeanPropertyAccess.java
T
Roland PramlandRob Bygrave 40f5596837 add missing @override (#975)
* no effective code change: add missing @override in "io.ebean.*" package
* no effective code change: add missing @override in "io.ebeaninternal.api.*" package
* no effective code change: add missing @override in "io.ebeaninternal.server.*" package
* no effective code change: add missing @override in "io.ebeaninternal.util.*" package
* no effective code change: add missing @override in "io.ebeanservice.*" package
* no effective code change: add missing @override in "src/test/java/"
2017-02-24 00:01:25 +13:00

89 lines
2.1 KiB
Java

package io.ebeaninternal.server.properties;
import io.ebean.bean.EntityBean;
/**
* Returns Getter and Setter methods based on EntityBean enhancement and field position.
*/
public final class EnhanceBeanPropertyAccess implements BeanPropertyAccess {
private static final int CACHE_SIZE = 30;
private final BeanPropertyGetter[] getters = initGetters(CACHE_SIZE);
private final BeanPropertySetter[] setters = initSetters(CACHE_SIZE);
public EnhanceBeanPropertyAccess() {
}
private BeanPropertyGetter[] initGetters(int count) {
BeanPropertyGetter[] getters = new BeanPropertyGetter[count];
for (int i = 0; i < count; i++) {
getters[i] = new Getter(i);
}
return getters;
}
private BeanPropertySetter[] initSetters(int count) {
BeanPropertySetter[] setters = new BeanPropertySetter[count];
for (int i = 0; i < count; i++) {
setters[i] = new Setter(i);
}
return setters;
}
@Override
public BeanPropertyGetter getGetter(int position) {
if (position < CACHE_SIZE) {
return getters[position];
}
return new Getter(position);
}
@Override
public BeanPropertySetter getSetter(int position) {
if (position < CACHE_SIZE) {
return setters[position];
}
return new Setter(position);
}
private static final class Getter implements BeanPropertyGetter {
private final int fieldIndex;
Getter(int fieldIndex) {
this.fieldIndex = fieldIndex;
}
@Override
public Object get(EntityBean bean) {
return bean._ebean_getField(fieldIndex);
}
@Override
public Object getIntercept(EntityBean bean) {
return bean._ebean_getFieldIntercept(fieldIndex);
}
}
private static final class Setter implements BeanPropertySetter {
private final int fieldIndex;
Setter(int fieldIndex) {
this.fieldIndex = fieldIndex;
}
@Override
public void set(EntityBean bean, Object value) {
bean._ebean_setField(fieldIndex, value);
}
@Override
public void setIntercept(EntityBean bean, Object value) {
bean._ebean_setFieldIntercept(fieldIndex, value);
}
}
}