org.springframework.beans.BeanWrapper#setPropertyValue ( )源码实例Demo

下面列出了org.springframework.beans.BeanWrapper#setPropertyValue ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * Apply the specified acknowledge mode to the ActivationSpec object.
 * <p>This implementation applies the standard JCA 1.5 acknowledge modes
 * "Auto-acknowledge" and "Dups-ok-acknowledge". It throws an exception in
 * case of {@code CLIENT_ACKNOWLEDGE} or {@code SESSION_TRANSACTED}
 * having been requested.
 * @param bw the BeanWrapper wrapping the ActivationSpec object
 * @param ackMode the configured acknowledge mode
 * (according to the constants in {@link javax.jms.Session}
 * @see javax.jms.Session#AUTO_ACKNOWLEDGE
 * @see javax.jms.Session#DUPS_OK_ACKNOWLEDGE
 * @see javax.jms.Session#CLIENT_ACKNOWLEDGE
 * @see javax.jms.Session#SESSION_TRANSACTED
 */
protected void applyAcknowledgeMode(BeanWrapper bw, int ackMode) {
	if (ackMode == Session.SESSION_TRANSACTED) {
		throw new IllegalArgumentException("No support for SESSION_TRANSACTED: Only \"Auto-acknowledge\" " +
				"and \"Dups-ok-acknowledge\" supported in standard JCA 1.5");
	}
	else if (ackMode == Session.CLIENT_ACKNOWLEDGE) {
		throw new IllegalArgumentException("No support for CLIENT_ACKNOWLEDGE: Only \"Auto-acknowledge\" " +
				"and \"Dups-ok-acknowledge\" supported in standard JCA 1.5");
	}
	else if (bw.isWritableProperty("acknowledgeMode")) {
		bw.setPropertyValue("acknowledgeMode",
				ackMode == Session.DUPS_OK_ACKNOWLEDGE ? "Dups-ok-acknowledge" : "Auto-acknowledge");
	}
	else if (ackMode == Session.DUPS_OK_ACKNOWLEDGE) {
		// Standard JCA 1.5 "acknowledgeMode" apparently not supported (e.g. WebSphere MQ 6.0.2.1)
		throw new IllegalArgumentException(
				"Dups-ok-acknowledge not supported by underlying provider: " + this.activationSpecClass.getName());
	}
}
 
源代码2 项目: lams   文件: AnnotationBeanUtils.java
/**
 * Copy the properties of the supplied {@link Annotation} to the supplied target bean.
 * Any properties defined in {@code excludedProperties} will not be copied.
 * <p>A specified value resolver may resolve placeholders in property values, for example.
 * @param ann the annotation to copy from
 * @param bean the bean instance to copy to
 * @param valueResolver a resolve to post-process String property values (may be {@code null})
 * @param excludedProperties the names of excluded properties, if any
 * @see org.springframework.beans.BeanWrapper
 */
public static void copyPropertiesToBean(Annotation ann, Object bean, StringValueResolver valueResolver, String... excludedProperties) {
	Set<String> excluded = new HashSet<String>(Arrays.asList(excludedProperties));
	Method[] annotationProperties = ann.annotationType().getDeclaredMethods();
	BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(bean);
	for (Method annotationProperty : annotationProperties) {
		String propertyName = annotationProperty.getName();
		if (!excluded.contains(propertyName) && bw.isWritableProperty(propertyName)) {
			Object value = ReflectionUtils.invokeMethod(annotationProperty, ann);
			if (valueResolver != null && value instanceof String) {
				value = valueResolver.resolveStringValue((String) value);
			}
			bw.setPropertyValue(propertyName, value);
		}
	}
}
 
源代码3 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testCustomEditorForAllNestedStringProperties() {
	TestBean tb = new TestBean();
	tb.setSpouse(new TestBean());
	BeanWrapper bw = new BeanWrapperImpl(tb);
	bw.registerCustomEditor(String.class, new PropertyEditorSupport() {
		@Override
		public void setAsText(String text) throws IllegalArgumentException {
			setValue("prefix" + text);
		}
	});
	bw.setPropertyValue("spouse.name", "value");
	bw.setPropertyValue("touchy", "value");
	assertEquals("prefixvalue", bw.getPropertyValue("spouse.name"));
	assertEquals("prefixvalue", tb.getSpouse().getName());
	assertEquals("prefixvalue", bw.getPropertyValue("touchy"));
	assertEquals("prefixvalue", tb.getTouchy());
}
 
/**
 * Copy the properties of the supplied {@link Annotation} to the supplied target bean.
 * Any properties defined in {@code excludedProperties} will not be copied.
 * <p>A specified value resolver may resolve placeholders in property values, for example.
 * @param ann the annotation to copy from
 * @param bean the bean instance to copy to
 * @param valueResolver a resolve to post-process String property values (may be {@code null})
 * @param excludedProperties the names of excluded properties, if any
 * @see org.springframework.beans.BeanWrapper
 */
public static void copyPropertiesToBean(Annotation ann, Object bean, @Nullable StringValueResolver valueResolver,
		String... excludedProperties) {

	Set<String> excluded = new HashSet<>(Arrays.asList(excludedProperties));
	Method[] annotationProperties = ann.annotationType().getDeclaredMethods();
	BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(bean);
	for (Method annotationProperty : annotationProperties) {
		String propertyName = annotationProperty.getName();
		if (!excluded.contains(propertyName) && bw.isWritableProperty(propertyName)) {
			Object value = ReflectionUtils.invokeMethod(annotationProperty, ann);
			if (valueResolver != null && value instanceof String) {
				value = valueResolver.resolveStringValue((String) value);
			}
			bw.setPropertyValue(propertyName, value);
		}
	}
}
 
源代码5 项目: spring-analysis-note   文件: CustomEditorTests.java
@Test
public void testIndexedPropertiesWithListPropertyEditor() {
	IndexedTestBean bean = new IndexedTestBean();
	BeanWrapper bw = new BeanWrapperImpl(bean);
	bw.registerCustomEditor(List.class, "list", new PropertyEditorSupport() {
		@Override
		public void setAsText(String text) throws IllegalArgumentException {
			List<TestBean> result = new ArrayList<>();
			result.add(new TestBean("list" + text, 99));
			setValue(result);
		}
	});
	bw.setPropertyValue("list", "1");
	assertEquals("list1", ((TestBean) bean.getList().get(0)).getName());
	bw.setPropertyValue("list[0]", "test");
	assertEquals("test", bean.getList().get(0));
}
 
源代码6 项目: spring-analysis-note   文件: CustomEditorTests.java
@Test
public void testCharacterEditor() {
	CharBean cb = new CharBean();
	BeanWrapper bw = new BeanWrapperImpl(cb);

	bw.setPropertyValue("myChar", new Character('c'));
	assertEquals('c', cb.getMyChar());

	bw.setPropertyValue("myChar", "c");
	assertEquals('c', cb.getMyChar());

	bw.setPropertyValue("myChar", "\u0041");
	assertEquals('A', cb.getMyChar());

	bw.setPropertyValue("myChar", "\\u0022");
	assertEquals('"', cb.getMyChar());

	CharacterEditor editor = new CharacterEditor(false);
	editor.setAsText("M");
	assertEquals("M", editor.getAsText());
}
 
源代码7 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testCustomEditorForSingleProperty() {
	TestBean tb = new TestBean();
	BeanWrapper bw = new BeanWrapperImpl(tb);
	bw.registerCustomEditor(String.class, "name", new PropertyEditorSupport() {
		@Override
		public void setAsText(String text) throws IllegalArgumentException {
			setValue("prefix" + text);
		}
	});
	bw.setPropertyValue("name", "value");
	bw.setPropertyValue("touchy", "value");
	assertEquals("prefixvalue", bw.getPropertyValue("name"));
	assertEquals("prefixvalue", tb.getName());
	assertEquals("value", bw.getPropertyValue("touchy"));
	assertEquals("value", tb.getTouchy());
}
 
源代码8 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testIndexedPropertiesWithListPropertyEditor() {
	IndexedTestBean bean = new IndexedTestBean();
	BeanWrapper bw = new BeanWrapperImpl(bean);
	bw.registerCustomEditor(List.class, "list", new PropertyEditorSupport() {
		@Override
		public void setAsText(String text) throws IllegalArgumentException {
			List<TestBean> result = new ArrayList<TestBean>();
			result.add(new TestBean("list" + text, 99));
			setValue(result);
		}
	});
	bw.setPropertyValue("list", "1");
	assertEquals("list1", ((TestBean) bean.getList().get(0)).getName());
	bw.setPropertyValue("list[0]", "test");
	assertEquals("test", bean.getList().get(0));
}
 
源代码9 项目: spring4-understanding   文件: TilesConfigurer.java
@Override
protected DefinitionsFactory createDefinitionsFactory(ApplicationContext applicationContext,
		LocaleResolver resolver) {

	if (definitionsFactoryClass != null) {
		DefinitionsFactory factory = BeanUtils.instantiate(definitionsFactoryClass);
		if (factory instanceof ApplicationContextAware) {
			((ApplicationContextAware) factory).setApplicationContext(applicationContext);
		}
		BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(factory);
		if (bw.isWritableProperty("localeResolver")) {
			bw.setPropertyValue("localeResolver", resolver);
		}
		if (bw.isWritableProperty("definitionDAO")) {
			bw.setPropertyValue("definitionDAO", createLocaleDefinitionDao(applicationContext, resolver));
		}
		return factory;
	}
	else {
		return super.createDefinitionsFactory(applicationContext, resolver);
	}
}
 
源代码10 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testByteArrayPropertyEditor() {
	PrimitiveArrayBean bean = new PrimitiveArrayBean();
	BeanWrapper bw = new BeanWrapperImpl(bean);
	bw.setPropertyValue("byteArray", "myvalue");
	assertEquals("myvalue", new String(bean.getByteArray()));
}
 
/**
 * This implementation supports Spring's extended "maxConcurrency"
 * and "prefetchSize" settings through detecting corresponding
 * ActivationSpec properties: "maxSessions"/"maxNumberOfWorks" and
 * "maxMessagesPerSessions"/"maxMessages", respectively
 * (following ActiveMQ's and JORAM's naming conventions).
 */
@Override
protected void populateActivationSpecProperties(BeanWrapper bw, JmsActivationSpecConfig config) {
	super.populateActivationSpecProperties(bw, config);
	if (config.getMaxConcurrency() > 0) {
		if (bw.isWritableProperty("maxSessions")) {
			// ActiveMQ
			bw.setPropertyValue("maxSessions", Integer.toString(config.getMaxConcurrency()));
		}
		else if (bw.isWritableProperty("maxNumberOfWorks")) {
			// JORAM
			bw.setPropertyValue("maxNumberOfWorks", Integer.toString(config.getMaxConcurrency()));
		}
		else if (bw.isWritableProperty("maxConcurrency")){
			// WebSphere
			bw.setPropertyValue("maxConcurrency", Integer.toString(config.getMaxConcurrency()));
		}
	}
	if (config.getPrefetchSize() > 0) {
		if (bw.isWritableProperty("maxMessagesPerSessions")) {
			// ActiveMQ
			bw.setPropertyValue("maxMessagesPerSessions", Integer.toString(config.getPrefetchSize()));
		}
		else if (bw.isWritableProperty("maxMessages")) {
			// JORAM
			bw.setPropertyValue("maxMessages", Integer.toString(config.getPrefetchSize()));
		}
		else if (bw.isWritableProperty("maxBatchSize")){
			// WebSphere
			bw.setPropertyValue("maxBatchSize", Integer.toString(config.getPrefetchSize()));
		}
	}
}
 
源代码12 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testDefaultBooleanEditorForWrapperType() {
	BooleanTestBean tb = new BooleanTestBean();
	BeanWrapper bw = new BeanWrapperImpl(tb);

	bw.setPropertyValue("bool2", "true");
	assertTrue("Correct bool2 value", Boolean.TRUE.equals(bw.getPropertyValue("bool2")));
	assertTrue("Correct bool2 value", tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "false");
	assertTrue("Correct bool2 value", Boolean.FALSE.equals(bw.getPropertyValue("bool2")));
	assertTrue("Correct bool2 value", !tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "on");
	assertTrue("Correct bool2 value", tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "off");
	assertTrue("Correct bool2 value", !tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "yes");
	assertTrue("Correct bool2 value", tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "no");
	assertTrue("Correct bool2 value", !tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "1");
	assertTrue("Correct bool2 value", tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "0");
	assertTrue("Correct bool2 value", !tb.getBool2().booleanValue());

	bw.setPropertyValue("bool2", "");
	assertNull("Correct bool2 value", tb.getBool2());
}
 
源代码13 项目: java-technology-stack   文件: CustomEditorTests.java
@Test
public void testByteArrayPropertyEditor() {
	PrimitiveArrayBean bean = new PrimitiveArrayBean();
	BeanWrapper bw = new BeanWrapperImpl(bean);
	bw.setPropertyValue("byteArray", "myvalue");
	assertEquals("myvalue", new String(bean.getByteArray()));
}
 
源代码14 项目: java-technology-stack   文件: CustomEditorTests.java
@Test
public void testCustomNumberEditorWithFrenchBigDecimal() throws Exception {
	NumberFormat nf = NumberFormat.getNumberInstance(Locale.FRENCH);
	NumberTestBean tb = new NumberTestBean();
	BeanWrapper bw = new BeanWrapperImpl(tb);
	bw.registerCustomEditor(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, nf, true));
	bw.setPropertyValue("bigDecimal", "1000");
	assertEquals(1000.0f, tb.getBigDecimal().floatValue(), 0f);
	bw.setPropertyValue("bigDecimal", "1000,5");
	assertEquals(1000.5f, tb.getBigDecimal().floatValue(), 0f);
	bw.setPropertyValue("bigDecimal", "1 000,5");
	assertEquals(1000.5f, tb.getBigDecimal().floatValue(), 0f);
}
 
源代码15 项目: ecs-sync   文件: ConfigWrapper.java
public C parse(CommandLine commandLine, String prefix) {
    try {
        C object = getTargetClass().newInstance();
        BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(object);

        for (String name : propertyNames()) {
            ConfigPropertyWrapper propertyWrapper = getPropertyWrapper(name);
            if (!propertyWrapper.isCliOption()) continue;

            org.apache.commons.cli.Option option = propertyWrapper.getCliOption(prefix);

            if (commandLine.hasOption(option.getLongOpt())) {

                Object value = commandLine.getOptionValue(option.getLongOpt());
                if (propertyWrapper.getDescriptor().getPropertyType().isArray())
                    value = commandLine.getOptionValues(option.getLongOpt());

                if (Boolean.class == propertyWrapper.getDescriptor().getPropertyType()
                        || "boolean".equals(propertyWrapper.getDescriptor().getPropertyType().getName()))
                    value = Boolean.toString(!propertyWrapper.isCliInverted());

                beanWrapper.setPropertyValue(name, value);
            }
        }

        return object;
    } catch (InstantiationException | IllegalAccessException e) {
        throw new RuntimeException(e);
    }
}
 
源代码16 项目: onetwo   文件: MvcInterceptorManager.java
protected MvcInterceptor injectAnnotationProperties(MvcInterceptor interInst, MvcInterceptorMeta attr){
	List<PropertyAnnoMeta> properties = attr.getProperties();
	BeanWrapper bw = SpringUtils.newBeanWrapper(interInst);
	for(PropertyAnnoMeta prop : properties){
		bw.setPropertyValue(prop.getName(), prop.getValue());
	}
	return interInst;
}
 
源代码17 项目: spring-boot   文件: MyBeanUtils.java
/**
 * 拷贝 source 中的属性到 target 中
 *
 * @param source
 * @param target
 * @param properties
 */
public static void copyBeanProperties(final Object source, final Object target, final Iterable<String> properties) {

    final BeanWrapper src = new BeanWrapperImpl(source);
    final BeanWrapper trg = new BeanWrapperImpl(target);

    for (final String propertyName : properties) {
        trg.setPropertyValue(propertyName, src.getPropertyValue(propertyName));
    }

}
 
源代码18 项目: spring4-understanding   文件: CustomEditorTests.java
@Test
public void testArrayToArrayConversion() throws PropertyVetoException {
	IndexedTestBean tb = new IndexedTestBean();
	BeanWrapper bw = new BeanWrapperImpl(tb);
	bw.registerCustomEditor(TestBean.class, new PropertyEditorSupport() {
		@Override
		public void setAsText(String text) throws IllegalArgumentException {
			setValue(new TestBean(text, 99));
		}
	});
	bw.setPropertyValue("array", new String[] {"a", "b"});
	assertEquals(2, tb.getArray().length);
	assertEquals("a", tb.getArray()[0].getName());
	assertEquals("b", tb.getArray()[1].getName());
}
 
源代码19 项目: java-technology-stack   文件: CustomEditorTests.java
@Test
public void testUninitializedArrayPropertyWithCustomEditor() {
	IndexedTestBean bean = new IndexedTestBean(false);
	BeanWrapper bw = new BeanWrapperImpl(bean);
	PropertyEditor pe = new CustomNumberEditor(Integer.class, true);
	bw.registerCustomEditor(null, "list.age", pe);
	TestBean tb = new TestBean();
	bw.setPropertyValue("list", new ArrayList<>());
	bw.setPropertyValue("list[0]", tb);
	assertEquals(tb, bean.getList().get(0));
	assertEquals(pe, bw.findCustomEditor(int.class, "list.age"));
	assertEquals(pe, bw.findCustomEditor(null, "list.age"));
	assertEquals(pe, bw.findCustomEditor(int.class, "list[0].age"));
	assertEquals(pe, bw.findCustomEditor(null, "list[0].age"));
}
 
源代码20 项目: mica   文件: BeanUtil.java
/**
 * 设置Bean属性, 支持 propertyName 多级 :test.user.name
 *
 * @param bean         bean
 * @param propertyName 属性名
 * @param value        属性值
 */
public static void setProperty(Object bean, String propertyName, Object value) {
	BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(Objects.requireNonNull(bean, "bean Could not null"));
	beanWrapper.setPropertyValue(propertyName, value);
}