io.ebeaninternal.server.deploy.BeanDescriptorElement Maven / Gradle / Ivy
package io.ebeaninternal.server.deploy;
import io.ebean.bean.EntityBean;
import io.ebean.core.type.ScalarType;
import io.ebeaninternal.server.deploy.meta.DeployBeanDescriptor;
import java.util.Arrays;
/**
* Bean descriptor used with ElementCollection (where we don't have a mapped type/class).
*
* This is somewhat a BeanDescriptor created 'on the fly' for a specific element collection property
* with a unidirectional property and mapping etc specific to the property (and not the type if embedded).
*/
abstract class BeanDescriptorElement extends BeanDescriptor {
private final String simpleName;
final ElementHelp elementHelp;
BeanDescriptorElement(BeanDescriptorMap owner, DeployBeanDescriptor deploy, ElementHelp elementHelp) {
super(owner, deploy);
this.simpleName = shortName(deploy.getName());
this.elementHelp = elementHelp;
}
private String shortName(String name) {
int pos = name.lastIndexOf('.');
if (pos > 1) {
pos = name.lastIndexOf('.', pos - 1);
if (pos > 1) {
return name.substring(pos + 1);
}
}
return name;
}
@Override
public String simpleName() {
return simpleName;
}
@Override
public boolean isJsonReadCollection() {
return true;
}
/**
* Find and return the first base scalar type (and we expect only 1).
*/
ScalarType