use of org.springframework.beans.BeanWrapperImpl in project spring-framework by spring-projects.
the class AbstractAutowireCapableBeanFactory method instantiateBean.
/**
* Instantiate the given bean using its default constructor.
* @param beanName the name of the bean
* @param mbd the bean definition for the bean
* @return BeanWrapper for the new instance
*/
protected BeanWrapper instantiateBean(final String beanName, final RootBeanDefinition mbd) {
try {
Object beanInstance;
final BeanFactory parent = this;
if (System.getSecurityManager() != null) {
beanInstance = AccessController.doPrivileged(new PrivilegedAction<Object>() {
@Override
public Object run() {
return getInstantiationStrategy().instantiate(mbd, beanName, parent);
}
}, getAccessControlContext());
} else {
beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, parent);
}
BeanWrapper bw = new BeanWrapperImpl(beanInstance);
initBeanWrapper(bw);
return bw;
} catch (Throwable ex) {
throw new BeanCreationException(mbd.getResourceDescription(), beanName, "Instantiation of bean failed", ex);
}
}
use of org.springframework.beans.BeanWrapperImpl in project opennms by OpenNMS.
the class OnmsRestService method getBeanWrapperForClass.
protected static BeanWrapper getBeanWrapperForClass(final Class<?> criteriaClass) {
final BeanWrapper wrapper = new BeanWrapperImpl(criteriaClass);
wrapper.registerCustomEditor(XMLGregorianCalendar.class, new StringXmlCalendarPropertyEditor());
wrapper.registerCustomEditor(java.util.Date.class, new ISO8601DateEditor());
wrapper.registerCustomEditor(java.net.InetAddress.class, new InetAddressTypeEditor());
wrapper.registerCustomEditor(OnmsSeverity.class, new OnmsSeverityEditor());
wrapper.registerCustomEditor(PrimaryType.class, new PrimaryTypeEditor());
return wrapper;
}
use of org.springframework.beans.BeanWrapperImpl in project MyPig by weifuchow.
the class BeanUtilsExt method getNullPropertyNames.
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<String>();
for (java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null)
emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
use of org.springframework.beans.BeanWrapperImpl in project opennms by OpenNMS.
the class XmlTest method assertDepthEquals.
private static void assertDepthEquals(final int depth, final String propertyName, final Object expected, Object actual) {
if (expected == null && actual == null) {
return;
} else if (expected == null) {
fail("expected " + propertyName + " was null but actual was not!");
} else if (actual == null) {
fail("actual " + propertyName + " was null but expected was not!");
}
final String assertionMessage = propertyName == null ? ("Top-level objects (" + expected.getClass().getName() + ") do not match.") : ("Properties " + propertyName + " do not match.");
if (expected.getClass().getName().startsWith("java") || actual.getClass().getName().startsWith("java")) {
// java primitives, just do assertEquals
if (expected instanceof Object[] || actual instanceof Object[]) {
assertTrue(assertionMessage, Arrays.equals((Object[]) expected, (Object[]) actual));
} else {
assertEquals(assertionMessage, expected, actual);
}
return;
}
final BeanWrapper expectedWrapper = new BeanWrapperImpl(expected);
final BeanWrapper actualWrapper = new BeanWrapperImpl(actual);
final Set<String> properties = new TreeSet<>();
for (final PropertyDescriptor descriptor : expectedWrapper.getPropertyDescriptors()) {
properties.add(descriptor.getName());
}
for (final PropertyDescriptor descriptor : actualWrapper.getPropertyDescriptors()) {
properties.add(descriptor.getName());
}
properties.remove("class");
for (final String property : properties) {
final PropertyDescriptor expectedDescriptor = expectedWrapper.getPropertyDescriptor(property);
final PropertyDescriptor actualDescriptor = actualWrapper.getPropertyDescriptor(property);
if (expectedDescriptor != null && actualDescriptor != null) {
// both have descriptors, so walk the sub-objects
Object expectedValue = null;
Object actualValue = null;
try {
expectedValue = expectedWrapper.getPropertyValue(property);
} catch (final Exception e) {
}
try {
actualValue = actualWrapper.getPropertyValue(property);
} catch (final Exception e) {
}
assertDepthEquals(depth + 1, property, expectedValue, actualValue);
} else if (expectedDescriptor != null) {
fail("Should have '" + property + "' property on actual object, but there was none!");
} else if (actualDescriptor != null) {
fail("Should have '" + property + "' property on expected object, but there was none!");
}
}
if (expected instanceof Object[] || actual instanceof Object[]) {
final Object[] expectedArray = (Object[]) expected;
final Object[] actualArray = (Object[]) actual;
assertTrue(assertionMessage, Arrays.equals(expectedArray, actualArray));
} else if (expected instanceof long[] || actual instanceof long[]) {
final long[] expectedArray = (long[]) expected;
final long[] actualArray = (long[]) actual;
assertTrue(assertionMessage, Arrays.equals(expectedArray, actualArray));
} else if (expected instanceof int[] || actual instanceof int[]) {
final int[] expectedArray = (int[]) expected;
final int[] actualArray = (int[]) actual;
assertTrue(assertionMessage, Arrays.equals(expectedArray, actualArray));
} else if (expected instanceof byte[] || actual instanceof byte[]) {
final byte[] expectedArray = (byte[]) expected;
final byte[] actualArray = (byte[]) actual;
assertTrue(assertionMessage, Arrays.equals(expectedArray, actualArray));
} else {
expected.getClass().isPrimitive();
assertEquals(assertionMessage, expected, actual);
}
}
use of org.springframework.beans.BeanWrapperImpl in project webanno by webanno.
the class PreferencesUtil method loadPreferences.
/**
* Set annotation preferences of users for a given project such as window size, annotation
* layers,... reading from the file system.
*
* @param aUsername
* The {@link User} for whom we need to read the preference (preferences are stored
* per user)
* @param aRepositoryService the repository service.
* @param aAnnotationService the annotation service.
* @param aBModel
* The {@link AnnotatorState} that will be populated with preferences from the
* file
* @param aMode the mode.
* @throws BeansException hum?
* @throws IOException hum?
*/
public static void loadPreferences(String aUsername, SettingsService aSettingsService, ProjectService aRepositoryService, AnnotationSchemaService aAnnotationService, AnnotatorState aBModel, Mode aMode) throws BeansException, IOException {
AnnotationPreference preference = new AnnotationPreference();
BeanWrapper wrapper = new BeanWrapperImpl(preference);
// get annotation preference from file system
try {
Properties props = aRepositoryService.loadUserSettings(aUsername, aBModel.getProject());
for (Entry<Object, Object> entry : props.entrySet()) {
String property = entry.getKey().toString();
int index = property.indexOf(".");
String propertyName = property.substring(index + 1);
String mode = property.substring(0, index);
if (wrapper.isWritableProperty(propertyName) && mode.equals(aMode.getName())) {
if (AnnotationPreference.class.getDeclaredField(propertyName).getGenericType() instanceof ParameterizedType) {
if (entry.getValue().toString().startsWith("[")) {
// its a list
List<String> value = Arrays.asList(StringUtils.replaceChars(entry.getValue().toString(), "[]", "").split(","));
if (!value.get(0).equals("")) {
wrapper.setPropertyValue(propertyName, value);
}
} else if (entry.getValue().toString().startsWith("{")) {
// its a map
String s = StringUtils.replaceChars(entry.getValue().toString(), "{}", "");
Map<String, String> value = Arrays.stream(s.split(",")).map(x -> x.split("=")).collect(Collectors.toMap(x -> x[0], x -> x[1]));
wrapper.setPropertyValue(propertyName, value);
}
} else {
wrapper.setPropertyValue(propertyName, entry.getValue());
}
}
}
// set layers according to preferences
List<AnnotationLayer> enabledLayers = aAnnotationService.listAnnotationLayer(aBModel.getProject()).stream().filter(// only allow enabled layers
l -> l.isEnabled()).collect(Collectors.toList());
List<Long> hiddenLayerIds = preference.getHiddenAnnotationLayerIds();
enabledLayers = enabledLayers.stream().filter(l -> !hiddenLayerIds.contains(l.getId())).collect(Collectors.toList());
aBModel.setAnnotationLayers(enabledLayers);
// Get color preferences for each layer, init with legacy if not found
Map<Long, ColoringStrategyType> colorPerLayer = preference.getColorPerLayer();
for (AnnotationLayer layer : aAnnotationService.listAnnotationLayer(aBModel.getProject())) {
if (!colorPerLayer.containsKey(layer.getId())) {
colorPerLayer.put(layer.getId(), ColoringStrategyType.LEGACY);
}
}
}// no preference found
catch (Exception e) {
// If no layer preferences are defined,
// then just assume all enabled layers are preferred
List<AnnotationLayer> enabledLayers = aAnnotationService.listAnnotationLayer(aBModel.getProject()).stream().filter(// only allow enabled layers
l -> l.isEnabled()).collect(Collectors.toList());
aBModel.setAnnotationLayers(enabledLayers);
preference.setWindowSize(aSettingsService.getNumberOfSentences());
// add default coloring strategy
Map<Long, ColoringStrategyType> colorPerLayer = new HashMap<>();
for (AnnotationLayer layer : aBModel.getAnnotationLayers()) {
colorPerLayer.put(layer.getId(), ColoringStrategy.getBestInitialStrategy(aAnnotationService, layer, preference));
}
preference.setColorPerLayer(colorPerLayer);
}
aBModel.setPreferences(preference);
}
Aggregations