@Override public Object getProperty(T instance, String propertyName) throws ConversionException { try { Method annotatedGetter = ReflectionUtil.findPropertyGetterMethod(this, propertyName); if (annotatedGetter != null) { return annotatedGetter.invoke(this, instance); } return PropertyUtils.getProperty(instance, propertyName); } catch (Exception ex) { throw new ConversionException("Unable to get property " + propertyName, ex); } }
/** * @see org.openmrs.module.webservices.rest.web.resource.api.Converter#getProperty(java.lang.Object, * java.lang.String) */ @Override public Object getProperty(T instance, String propertyName) throws ConversionException { try { DelegatingResourceHandler<? extends T> handler = getResourceHandler(instance); // try to find a @PropertyGetter-annotated method Method annotatedGetter = ReflectionUtil.findPropertyGetterMethod(handler, propertyName); if (annotatedGetter != null) { return annotatedGetter.invoke(handler, instance); } return PropertyUtils.getProperty(instance, propertyName); } catch (Exception ex) { // some properties are allowed to be missing, since they may have been added in later OpenMRS versions if (allowedMissingProperties.contains(propertyName)) return null; throw new ConversionException(propertyName + " on " + instance.getClass(), ex); } }
/** * Gets a property from the delegate, with the given representation * * @param propertyName * @param rep * @return * @throws ConversionException */ public static Object getPropertyWithRepresentation(Object bean, String propertyName, Representation rep) throws ConversionException { Object o; try { o = PropertyUtils.getProperty(bean, propertyName); } catch (Exception ex) { throw new ConversionException(null, ex); } if (o instanceof Collection) { List<Object> ret = new ArrayList<Object>(); for (Object element : (Collection<?>) o) ret.add(convertToRepresentation(element, rep)); return ret; } else { o = convertToRepresentation(o, rep); return o; } }
/** * Overrides BaseDelegatingResource getProperty method to get properties from User property of * UserAndPassword instead of UserAndPassword itself * * @see org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingResource#setProperty(T, * java.lang.String, java.lang.Object) * @param instance * @param propertyName * @throws ConversionException */ @Override public Object getProperty(UserAndPassword1_8 instance, String propertyName) throws ConversionException { try { if (propertyName.equals("password")) { return instance.getPassword(); } else { // try to find a @PropertyGetter-annotated method Method annotatedGetter = ReflectionUtil.findPropertyGetterMethod(this, propertyName); if (annotatedGetter != null) { return annotatedGetter.invoke(this, instance); } return PropertyUtils.getProperty(instance.getUser(), propertyName); } } catch (Exception ex) { throw new ConversionException(propertyName, ex); } }
protected void assertNoCycles(Concept delegate, Set<String> path) throws ConversionException { for (Concept member : delegate.getSetMembers()) { if (path.add(member.getUuid())) { assertNoCycles(member, path); } else { throw new ConversionException("Cycles in children are not supported. Concept with uuid " + delegate.getUuid() + " repeats in a set."); } path.remove(member.getUuid()); } }
@Override public void setProperty(Object instance, String propertyName, Object value) throws ConversionException { try { // try to find a @PropertySetter-annotated method Method annotatedSetter = ReflectionUtil.findPropertySetterMethod(this, propertyName); if (annotatedSetter != null) { Type expectedType = annotatedSetter.getGenericParameterTypes()[1]; value = ConversionUtil.convert(value, expectedType); annotatedSetter.invoke(this, instance, value); return; } // we need the generic type of this property, not just the class Method setter = PropertyUtils.getPropertyDescriptor(instance, propertyName).getWriteMethod(); // Convert the value to the specified type value = ConversionUtil.convert(value, setter.getGenericParameterTypes()[0], instance); setPropertyWhichMayBeAHibernateCollection(instance, propertyName, value); } catch (Exception ex) { throw new ConversionException(propertyName + " on " + instance.getClass(), ex); } }
/** * Overrides BaseDelegatingResource setProperty method to allow properties to be set on User * property of UserAndPassword instead of UserAndPassword itself * * @see org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingResource#setProperty(T, * java.lang.String, java.lang.Object) * @param instance * @param propertyName * @param value * @throws ConversionException */ @Override public void setProperty(Object instance, String propertyName, Object value) throws ConversionException { try { UserAndPassword1_8 userAndPassword = (UserAndPassword1_8) instance; if (propertyName.equals("password")) { userAndPassword.setPassword(value != null ? value.toString() : null); } else { // just treat every other property like a we're on the User object super.setProperty(userAndPassword.getUser(), propertyName, value); } } catch (Exception ex) { throw new ConversionException(propertyName, ex); } }
throw new ConversionException("Some properties are not allowed to be set: " + StringUtils.join(notAllowedProperties, ", ")); throw new ConversionException("Some required properties are missing: " + StringUtils.join(missingProperties, ", "));
throw new ConversionException("Can only convert a Collection to a Collection/Array. Not " + object.getClass() + " to " + toType, null); ret = new ArrayList(); } else { throw new ConversionException("Don't know how to handle collection class: " + toClass, null); throw new ConversionException( "Error converting date - correct format (ISO8601 Long): yyyy-MM-dd'T'HH:mm:ss.SSSZ", pex); } else if (toClass.isAssignableFrom(Locale.class)) { throw new ConversionException("Could not convert from " + object.getClass() + " to " + toType, e); throw new ConversionException("Don't know how to convert from " + object.getClass() + " to " + toType, null);
public <T> Object evaluate(BaseDelegatingConverter<T> converter, T delegate) throws ConversionException { if (delegateProperty != null) { Object propVal = converter.getProperty(delegate, delegateProperty); if (propVal instanceof Collection) { List<Object> ret = new ArrayList<Object>(); for (Object element : (Collection<?>) propVal) ret.add(ConversionUtil.convertToRepresentation(element, rep, getConvertAs())); return ret; } else { return ConversionUtil.convertToRepresentation(propVal, rep, getConvertAs()); } } else if (method != null) { try { return method.invoke(converter, delegate); } catch (Exception ex) { throw new ConversionException("method " + method, ex); } } else { throw new RuntimeException("Property with no delegateProperty or method specified"); } }
throw new ConversionException("converting " + o.getClass() + " to " + rep, ex);
throw new ConversionException(propertyName + " on " + instance.getClass(), ex);
private List<CustomDatatypeRepresentation> getAllCustomDatatypes() { List<String> datatypeClassnames = CustomDatatypeUtil.getDatatypeClassnames(); List<CustomDatatypeRepresentation> datatypes = new ArrayList<CustomDatatypeRepresentation>(); for (String datatypeClassname : datatypeClassnames) { CustomDatatypeRepresentation datatype = new CustomDatatypeRepresentation(); datatypes.add(datatype); datatype.setDatatypeClassname(datatypeClassname); Class<CustomDatatype<?>> datatypeClass; try { datatypeClass = (Class<CustomDatatype<?>>) Context.loadClass(datatypeClassname); } catch (ClassNotFoundException e) { throw new ConversionException("Failed to load datatype class", e); } List<Class<? extends CustomDatatypeHandler>> handlerClasses = Context.getDatatypeService().getHandlerClasses( datatypeClass); for (Class<? extends CustomDatatypeHandler> handlerClass : handlerClasses) { datatype.getHandlers().add(new CustomDatatypeHandlerRepresentation(datatype, handlerClass.getName())); } } return datatypes; }
throw new ConversionException(null, ex); throw new ConversionException("Don't know how to get " + getClass().getSimpleName() + "(" + delegate.getClass() + ") as " + representation.getRepresentation(), null);
hl7 = (String) object.get("hl7"); if (hl7 == null) { throw new ConversionException("Missing the hl7 property"); throw new ConversionException("The " + source + " source was not recognized"); throw new ConversionException(e.getMessage(), e);
throw new ConversionException("Unexpected value: " + value + " set as the value of boolean. " + trueValues + falseValues + ", ConceptService.getTrueConcept or " + ", ConceptService.getFalseConcept expected");
@Test public void handleConversionException_shouldLogConversionErrorAsInfo() throws Exception { String message = "conversion error"; ConversionException ex = new ConversionException(message); SimpleObject responseSimpleObject = controller.conversionExceptionHandler(ex, request, response); assertThat(response.getStatus(), is(HttpServletResponse.SC_BAD_REQUEST)); LinkedHashMap errors = (LinkedHashMap) responseSimpleObject.get("error"); Assert.assertEquals("[" + message + "]", errors.get("message")); } }
public Patient getPatient(SimpleObject propertiesToCreate) { Object personProperty = propertiesToCreate.get("person"); Person person = null; if (personProperty == null) { throw new ConversionException("The person property is missing"); } else if (personProperty instanceof String) { person = Context.getPersonService().getPersonByUuid((String) personProperty); Context.evictFromSession(person); } else if (personProperty instanceof Map) { person = (Person) ConversionUtil.convert(personProperty, Person.class); propertiesToCreate.put("person", ""); } Patient delegate = new Patient(person); setConvertedProperties(delegate, propertiesToCreate, getCreatableProperties(), true); return delegate; }