Package org.apache.felix.ipojo.parser

Examples of org.apache.felix.ipojo.parser.FieldMetadata


            } else {
                prop.setValue(configuration.get(name));
            }

            if (fieldName != null) {
                FieldMetadata field = new FieldMetadata(fieldName, type);
                getInstanceManager().register(field, prop);
            }

            if (index != -1) {
                getInstanceManager().register(index, prop);
View Full Code Here


     * @see org.apache.felix.ipojo.Handler#configure(org.apache.felix.ipojo.metadata.Element, java.util.Dictionary)
     */
    public void configure(Element metadata, Dictionary configuration) throws ConfigurationException {
        Element[] controller = metadata.getElements("controller");
        m_field = controller[0].getAttribute("field");
        getInstanceManager().register(new FieldMetadata(m_field, "boolean"), this);
    }
View Full Code Here

        if (field == null) {
            throw new ConfigurationException("Lifecycle controller : the controller element needs to contain a field attribute");
        }

        PojoMetadata method = getFactory().getPojoMetadata();
        FieldMetadata fieldMetadata = method.getField(field);
        if (fieldMetadata == null) {
            throw new ConfigurationException("Lifecycle controller : The field " + field + " does not exist in the implementation class");
        }

        if (!fieldMetadata.getFieldType().equalsIgnoreCase("boolean")) {
            throw new ConfigurationException("Lifecycle controller : The field " + field + " must be a boolean (" + fieldMetadata.getFieldType() + " found)");
        }
    }
View Full Code Here

                    if (object != null) {
                        prop.setValue(object);
                    }

                    if (field != null) {
                        getInstanceManager().register(new FieldMetadata(field, type), this);
                        // Cannot register the property as the interception is necessary
                        // to deal with registration update.
                    }
                }

                // Attach to properties to the provided service
                svc.setProperties(properties);
            }

            Element[] controllers = providedService.getElements("Controller");
            if (controllers != null) {
                for (Element controller : controllers) {
                    String field = controller.getAttribute("field");
                    if (field == null) {
                        throw new ConfigurationException("The field attribute of a controller is mandatory");
                    }

                    String v = controller.getAttribute("value");
                    boolean value = !(v != null && v.equalsIgnoreCase("false"));
                    String s = controller.getAttribute("specification");
                    if (s == null) {
                        s = "ALL";
                    }
                    svc.setController(field, value, s);

                    getInstanceManager().register(new FieldMetadata(field, "boolean"), this);
                }
            }

            if (checkProvidedService(svc)) {
                m_providedServices.add(svc);
View Full Code Here

                // Check type if not already set
                if (type == null) {
                    if (field == null) {
                        throw new ConfigurationException("The property " + name + " has neither type nor field.");
                    }
                    FieldMetadata fieldMeta = manipulation.getField(field);
                    if (fieldMeta == null) {
                        throw new ConfigurationException("A declared property was not found in the implementation class : " + field);
                    }
                    type = fieldMeta.getFieldType();
                    props[j].addAttribute(new Attribute("type", type));
                }

                // Is the property set to immutable
                boolean immutable = false;
View Full Code Here

     * @param manipulation the manipulation metadata
     * @throws ConfigurationException if the field used to inject the given dependency is not in the component class.
     */
    private static void ensureThatTheFieldIsInComponentClass(Dependency dependency, PojoMetadata manipulation) throws ConfigurationException {
        if (dependency.getField() != null) {
            FieldMetadata field = manipulation.getField(dependency.getField());
            if (field == null) {
                throw new ConfigurationException("Incorrect field injection for " + DependencyHandler
                        .getDependencyIdentifier(dependency) + " - reason: the field " + dependency.getField() + " is" +
                        " not in the component class (" + dependency.getHandler().getInstanceManager().getClassName()
                      + ")");
View Full Code Here

     * @throws ConfigurationException if the type of the field or constructor parameter used to inject the dependency
     * is not suitable for aggregate dependencies.
     */
    private static void deduceAggregationFromTheInjectionPoints(Dependency dependency, PojoMetadata manipulation) throws ConfigurationException {
        if (dependency.getField() != null) {
            FieldMetadata field = manipulation.getField(dependency.getField());
            String type = field.getFieldType();
            if (type.endsWith("[]")) {
                dependency.setAggregateType(AggregateDependencyInjectionType.ARRAY);
            } else if (Collection.class.getName().equals(type|| List.class.getName().equals(type)) {
                dependency.setAggregateType(AggregateDependencyInjectionType.LIST);
            } else if (Set.class.getName().equals(type)) {
                dependency.setAggregateType(AggregateDependencyInjectionType.SET);
            } else if (Vector.class.getName().equals(type)) {
                dependency.setAggregateType(AggregateDependencyInjectionType.VECTOR);
            } else if (dependency.isAggregate()) {
                // Something wrong. The dependency has a field that is not suitable for aggregate dependencies
                throw new ConfigurationException("The dependency " + DependencyHandler.getDependencyIdentifier
                        (dependency) + " cannot be an aggregate dependency - reason: the type " + field.getFieldType
                        () + " of the field " + field.getFieldName() + " is not suitable for aggregate " +
                        "dependencies. Compatible types are array, vector, list, set and collection.");
            }
        }
        if (dependency.getConstructorParameterIndex() != -1) {
            String type = manipulation.getConstructors()[0].getMethodArguments()[dependency
View Full Code Here

     * @param field the field
     * @param manipulation the manipulation metadata
     * @return the service specification, or {@code null} if is cannot be extracted.
     */
    private static String extractSpecificationFromField(String field, PojoMetadata manipulation) {
        FieldMetadata metadata = manipulation.getField(field);
        if (metadata.getFieldType().endsWith("[]")) {
            return metadata.getFieldType().substring(0, metadata.getFieldType().length() - 2);
        }
        if (AggregateDependencyInjectionType.AGGREGATE_TYPES.contains(metadata.getFieldType())) {
            return null; // It's an aggregate
        }
        return metadata.getFieldType();
    }
View Full Code Here

    private String[] strAProp;
    private int[] intAProp;
    private boolean boolProp;
     */
   
    FieldMetadata field;
   
    field = manip.getField("intProp");   
    assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intProp");
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
        assertEquals("Check field reflective type : " + field.getFieldName(), FieldMetadata.getReflectionType(field.getFieldType()), "int");
       
        field = manip.getField("intProp", "int");     
        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intProp");
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
       
        field = manip.getField("intProp", "long");
        assertNull("Check bad field", field);
   
    field = manip.getField("strProp");
    assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strProp");
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String");
        assertEquals("Check field reflective type : " + field.getFieldName(), FieldMetadata.getReflectionType(field.getFieldType()), "java.lang.String");
       
        field = manip.getField("strProp", "String");
        assertNull("Check bad field", field);
       
        field = manip.getField("strProp", "java.lang.String");
        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strProp");
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String");
   
    field = manip.getField("strAProp");
    assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strAProp");
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String[]");
        assertEquals("Check field reflective type : " + field.getFieldName() + " -> " + FieldMetadata.getReflectionType(field.getFieldType()), FieldMetadata.getReflectionType(field.getFieldType()), "[Ljava.lang.String;");
       
        field = manip.getField("strAProp", "java.lang.String[]");
        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strAProp");
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String[]");
       
        field = manip.getField("strAProp", "String[]");
        assertNull("Check bad field", field);
   
    field = manip.getField("intAProp");
    assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intAProp");
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
        assertEquals("Check field reflective type : " + field.getFieldName() + " -> " + FieldMetadata.getReflectionType(field.getFieldType()), FieldMetadata.getReflectionType(field.getFieldType()), "[I");
       
        field = manip.getField("intAProp", "int[]");
        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intAProp");
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
       
        field = manip.getField("intAProp", "String[]");
        assertNull("Check bad field", field);
   
    field = manip.getField("boolProp");
    assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "boolProp");
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
        assertEquals("Check field reflective type : " + field.getFieldName(), FieldMetadata.getReflectionType(field.getFieldType()), "boolean");
       
        field = manip.getField("boolProp", "boolean");
        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "boolProp");
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
       
        field = manip.getField("boolProp", "bool");
        assertNull("Check bad field", field);
  }
View Full Code Here

  public void testPrimitivesFields() {
      PojoMetadata manip = PrimitiveManipulationTester;
    FieldMetadata[] fields = manip.getFields();
    assertEquals("Check field count", fields.length, 16);

    FieldMetadata field;

    field = manip.getField("b");   
    assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "byte");
    field = manip.getField("s");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "short");
    field = manip.getField("i");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
    field = manip.getField("l");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "long");
    field = manip.getField("d");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "double");
    field = manip.getField("f");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "float");
    field = manip.getField("c");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "char");
    field = manip.getField("bool");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
   
    field = manip.getField("bs");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "byte[]");
    field = manip.getField("ss");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "short[]");
    field = manip.getField("is");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
    field = manip.getField("ls");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "long[]");
    field = manip.getField("ds");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "double[]");
    field = manip.getField("fs");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "float[]");
    field = manip.getField("cs");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "char[]");
    field = manip.getField("bools");   
        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean[]");   
  }
View Full Code Here

TOP

Related Classes of org.apache.felix.ipojo.parser.FieldMetadata

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.