use of org.dbflute.helper.beans.exception.DfBeanIllegalPropertyException in project dbflute-core by dbflute.
the class IfCommentEvaluator method processOneProperty.
protected Object processOneProperty(Object baseObject, String firstProperty, String property) {
if (baseObject == null) {
throwIfCommentNullPointerException(firstProperty);
}
final DfBeanDesc beanDesc = DfBeanDescFactory.getBeanDesc(baseObject.getClass());
if (beanDesc.hasPropertyDesc(property)) {
// main case
final DfPropertyDesc propertyDesc = beanDesc.getPropertyDesc(property);
try {
return propertyDesc.getValue(baseObject);
} catch (DfBeanIllegalPropertyException e) {
throwIfCommentPropertyReadFailureException(baseObject, propertyDesc.getPropertyName(), e);
// unreachable
return null;
}
}
if (property.endsWith(METHOD_SUFFIX)) {
// sub-main case
final String methodName = property.substring(0, property.length() - METHOD_SUFFIX.length());
try {
final Method method = beanDesc.getMethod(methodName);
return DfReflectionUtil.invoke(method, baseObject, (Object[]) null);
} catch (DfBeanMethodNotFoundException e) {
throwIfCommentNotFoundMethodException(baseObject, methodName);
// unreachable
return null;
} catch (ReflectionFailureException e) {
throwIfCommentMethodInvocationFailureException(baseObject, methodName, e);
// unreachable
return null;
}
}
if (MapParameterBean.class.isInstance(baseObject)) {
// used by union-query internally
// if the key does not exist, it does not process
// (different specification with Map)
final Map<?, ?> map = ((MapParameterBean<?>) baseObject).getParameterMap();
if (map.containsKey(property)) {
return map.get(property);
}
}
if (Map.class.isInstance(baseObject)) {
// if the key does not exist, treated same as a null value
final Map<?, ?> map = (Map<?, ?>) baseObject;
return map.get(property);
}
if (List.class.isInstance(baseObject)) {
if (property.startsWith("get(") && property.endsWith(")")) {
final List<?> list = (List<?>) baseObject;
final String exp = Srl.extractScopeFirst(property, "get(", ")").getContent();
try {
final Integer index = DfTypeUtil.toInteger(exp);
return list.get(index);
} catch (NumberFormatException e) {
throwIfCommentListIndexNotNumberException(list, exp, e);
// unreachable
return null;
} catch (IndexOutOfBoundsException e) {
throwIfCommentListIndexOutOfBoundsException(list, exp, e);
// unreachable
return null;
}
}
}
throwIfCommentNotFoundPropertyException(baseObject, property);
// unreachable
return null;
}
use of org.dbflute.helper.beans.exception.DfBeanIllegalPropertyException in project dbflute-core by dbflute.
the class DfPropertyDescImpl method throwPropertyNotReadableException.
protected void throwPropertyNotReadableException(Object target) {
final ExceptionMessageBuilder br = new ExceptionMessageBuilder();
br.addNotice("The property is not readable.");
setupExceptionBasicInfo(br);
br.addItem("Target Object");
br.addElement(target != null ? target.getClass() : null);
br.addElement(target);
final String msg = br.buildExceptionMessage();
throw new DfBeanIllegalPropertyException(msg);
}
use of org.dbflute.helper.beans.exception.DfBeanIllegalPropertyException in project dbflute-core by dbflute.
the class DfPropertyDescImpl method throwPropertyNotWritableException.
protected void throwPropertyNotWritableException(Object target, Object value) {
final ExceptionMessageBuilder br = new ExceptionMessageBuilder();
br.addNotice("The property is not writable.");
setupExceptionBasicInfo(br);
br.addItem("Target Object");
br.addElement(target != null ? target.getClass() : null);
br.addElement(target);
br.addItem("Wrote Object");
br.addElement(value != null ? value.getClass() : null);
br.addElement(value);
final String msg = br.buildExceptionMessage();
throw new DfBeanIllegalPropertyException(msg);
}
use of org.dbflute.helper.beans.exception.DfBeanIllegalPropertyException in project dbflute-core by dbflute.
the class DfPropertyDescImplTest method test_setValue_illegalProperty.
public void test_setValue_illegalProperty() throws Exception {
// ## Arrange ##
DfBeanDesc beanDesc = DfBeanDescFactory.getBeanDesc(MockBean.class);
DfPropertyDesc pd = beanDesc.getPropertyDesc("readOnlyName");
MockBean bean = new MockBean();
// ## Act ##
try {
pd.setValue(bean, "foo");
// ## Assert ##
fail();
} catch (DfBeanIllegalPropertyException e) {
// OK
log(e.getMessage());
}
}
use of org.dbflute.helper.beans.exception.DfBeanIllegalPropertyException in project dbflute-core by dbflute.
the class DfPropertyDescImplTest method test_getValue_illegalProperty.
public void test_getValue_illegalProperty() throws Exception {
// ## Arrange ##
DfBeanDesc beanDesc = DfBeanDescFactory.getBeanDesc(MockBean.class);
DfPropertyDesc pd = beanDesc.getPropertyDesc("writeOnlyName");
MockBean bean = new MockBean();
bean.setWriteOnlyName("foo");
// ## Act ##
try {
pd.getValue(bean);
// ## Assert ##
fail();
} catch (DfBeanIllegalPropertyException e) {
// OK
log(e.getMessage());
}
}
Aggregations