Package org.drools.util.asm

Examples of org.drools.util.asm.ClassFieldInspector


     * @param fieldName
     */
    public BaseClassFieldWriter(final Class< ? > clazz,
                                final String fieldName) {
        try {
            final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
            this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
            this.fieldType = (Class< ? >) inspector.getFieldTypes().get( fieldName );
            this.valueType = ValueType.determineValueType( this.fieldType );
        } catch ( final Exception e ) {
            throw new RuntimeDroolsException( e );
        }
    }
View Full Code Here


     * @param fieldName
     */
    public BaseClassFieldReader(final Class< ? > clazz,
                                final String fieldName) {
        try {
            final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
            this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
            this.fieldType = (Class< ? >) inspector.getFieldTypes().get( fieldName );
            this.valueType = ValueType.determineValueType( this.fieldType );
        } catch ( final Exception e ) {
            throw new RuntimeDroolsException( e );
        }
    }
View Full Code Here

                                 final String shortTypeName) throws IOException {
        if (clazz == null) {
            return;
        }

        final ClassFieldInspector inspector = new ClassFieldInspector(clazz);
        Set<String> fieldSet = new HashSet<String>();
        fieldSet.addAll(inspector.getFieldNames().keySet());
        // add the "this" field. This won't come out from the inspector
        fieldSet.add("this");

        String [] fields = fieldSet.toArray(new String []{});
        Arrays.sort(fields);

        fields = removeIrrelevantFields(fields);

        this.builder.addFieldsForType(shortTypeName, fields);
       
        Method[] methods = clazz.getMethods();
        List<String> modifierStrings = new ArrayList<String>();
        for (Method method : methods) {
            modifierStrings.add(method.getName());
        }
        String[] modifiers = new String[modifierStrings.size()];
        modifierStrings.toArray(modifiers);

        this.builder.addModifiersForType(shortTypeName, modifiers);

        // remove this back out because there is no type for it. We add it explicity
        fieldSet.remove("this");
        this.builder.addFieldType(shortTypeName + ".this", SuggestionCompletionEngine.TYPE_OBJECT);

        for (String field : fieldSet) {
            final Class type = inspector.getFieldTypes().get(field);
            final String fieldType = getFieldType(type);
            this.builder.addFieldType(shortTypeName + "." + field, fieldType);
        }
       
        ClassMethodInspector methodInspector = new ClassMethodInspector(clazz);
View Full Code Here

     * @param fieldName
     */
    public BaseClassFieldReader(final Class clazz,
                                   final String fieldName) {
        try {
            final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
            this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
            this.fieldType = (Class) inspector.getFieldTypes().get( fieldName );
            this.valueType = ValueType.determineValueType( this.fieldType );
        } catch ( final Exception e ) {
            throw new RuntimeDroolsException( e );
        }
    }
View Full Code Here

                                 final String shortTypeName) throws IOException {
        if (clazz == null) {
            return;
        }

        final ClassFieldInspector inspector = new ClassFieldInspector(clazz);
        Set<String> fieldSet = new HashSet<String>();
        fieldSet.addAll(inspector.getFieldNames().keySet());
        // add the "this" field. This won't come out from the inspector
        fieldSet.add("this");

        String [] fields = fieldSet.toArray(new String []{});
        Arrays.sort(fields);

        fields = removeIrrelevantFields(fields);

        this.builder.addFieldsForType(shortTypeName, fields);

        Method[] methods = clazz.getMethods();
        List<String> modifierStrings = new ArrayList<String>();
        for (Method method : methods) {
            modifierStrings.add(method.getName());
        }
        String[] modifiers = new String[modifierStrings.size()];
        modifierStrings.toArray(modifiers);

        this.builder.addModifiersForType(shortTypeName, modifiers);

        // remove this back out because there is no type for it. We add it explicity
        fieldSet.remove("this");
        this.builder.addFieldType(shortTypeName + ".this", SuggestionCompletionEngine.TYPE_OBJECT);

        for (String field : fieldSet) {
            final Class type = inspector.getFieldTypes().get(field);
            final String fieldType = getFieldType(type);
            this.builder.addFieldType(shortTypeName + "." + field, fieldType);
        }

    }
View Full Code Here

                                 final String shortTypeName) throws IOException {
        if (clazz == null) {
            return;
        }

        final ClassFieldInspector inspector = new ClassFieldInspector(clazz);
        Set<String> fieldSet = new HashSet<String>();
        fieldSet.addAll(inspector.getFieldNames().keySet());
        // add the "this" field. This won't come out from the inspector
        fieldSet.add("this");

        String [] fields = fieldSet.toArray(new String []{});
        Arrays.sort(fields);

        fields = removeIrrelevantFields(fields);

        this.builder.addFieldsForType(shortTypeName, fields);
       
        Method[] methods = clazz.getMethods();
        List<String> modifierStrings = new ArrayList<String>();
        for (Method method : methods) {
            modifierStrings.add(method.getName());
        }
        String[] modifiers = new String[modifierStrings.size()];
        modifierStrings.toArray(modifiers);

        this.builder.addModifiersForType(shortTypeName, modifiers);

        // remove this back out because there is no type for it. We add it explicity
        fieldSet.remove("this");
        this.builder.addFieldType(shortTypeName + ".this", SuggestionCompletionEngine.TYPE_OBJECT);

        for (String field : fieldSet) {
            final Class type = inspector.getFieldTypes().get(field);
            final String fieldType = getFieldType(type);
            this.builder.addFieldType(shortTypeName + "." + field, fieldType);
            Field f = inspector.getFieldTypesField().get(field);
            this.builder.addFieldTypeField(shortTypeName + "." + field,f);
        }
       
        ClassMethodInspector methodInspector = new ClassMethodInspector(clazz);
       
View Full Code Here

                                 final String shortTypeName) throws IOException {
        if (clazz == null) {
            return;
        }

        final ClassFieldInspector inspector = new ClassFieldInspector(clazz);
        Set<String> fieldSet = new HashSet<String>();
        fieldSet.addAll(inspector.getFieldNames().keySet());
        // add the "this" field. This won't come out from the inspector
        fieldSet.add("this");

        String [] fields = fieldSet.toArray(new String []{});
        Arrays.sort(fields);

        fields = removeIrrelevantFields(fields);

        this.builder.addFieldsForType(shortTypeName, fields);

        Method[] methods = clazz.getMethods();
        List<String> modifierStrings = new ArrayList<String>();
        for (Method method : methods) {
            modifierStrings.add(method.getName());
        }
        String[] modifiers = new String[modifierStrings.size()];
        modifierStrings.toArray(modifiers);

        this.builder.addModifiersForType(shortTypeName, modifiers);

        // remove this back out because there is no type for it. We add it explicity
        fieldSet.remove("this");
        this.builder.addFieldType(shortTypeName + ".this", SuggestionCompletionEngine.TYPE_OBJECT);

        for (String field : fieldSet) {
            final Class type = inspector.getFieldTypes().get(field);
            final String fieldType = getFieldType(type);
            this.builder.addFieldType(shortTypeName + "." + field, fieldType);
        }

    }
View Full Code Here

                return new MVELClassFieldExtractor( clazz,
                                                    fieldName,
                                                    classLoader );
            } else {
                // otherwise, bytecode generate a specific extractor
                ClassFieldInspector inspector = (ClassFieldInspector) inspectors.get( clazz );
                if ( inspector == null ) {
                    inspector = new ClassFieldInspector( clazz );
                    inspectors.put( clazz,
                                    inspector );
                }
                final Class fieldType = (Class) inspector.getFieldTypes().get( fieldName );
                final Method getterMethod = (Method) inspector.getGetterMethods().get( fieldName );
                if( fieldType != null && getterMethod != null ) {
                    final String className = ClassFieldExtractorFactory.BASE_PACKAGE + "/" + Type.getInternalName( clazz ) + "$" + getterMethod.getName();

                    // generating byte array to create target class
                    final byte[] bytes = dump( clazz,
                                               className,
                                               getterMethod,
                                               fieldType,
                                               clazz.isInterface() );
                    // use bytes to get a class

                    final Class newClass = byteArrayClassLoader.defineClass( className.replace( '/',
                                                                                                '.' ),
                                                                             bytes,
                                                                             PROTECTION_DOMAIN );
                    // instantiating target class
                    final Integer index = (Integer) inspector.getFieldNames().get( fieldName );
                    final ValueType valueType = ValueType.determineValueType( fieldType );
                    final Object[] params = {index, fieldType, valueType};
                    return (BaseClassFieldExtractor) newClass.getConstructors()[0].newInstance( params );
                } else {
                    throw new RuntimeDroolsException("Field/method '"+fieldName+"' not found for class '"+clazz.getName()+"'" );
View Full Code Here

    private void loadClassFields(final Class clazz,
                                 final String shortTypeName) throws IOException {
        if ( clazz == null ) {
            return;
        }
        final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
        String[] fields = (String[]) inspector.getFieldNames().keySet().toArray( new String[inspector.getFieldNames().size()] );
        Arrays.sort(fields);

        fields = removeIrrelevantFields( fields );

        this.builder.addFieldsForType( shortTypeName,
                                       fields );

        Method[] methods = clazz.getMethods();
        List modifierStrings = new ArrayList();
        for (int i = 0; i < methods.length; i++) {
            Method method = methods[i];
            modifierStrings.add((String) method.getName());
        }
        String[] modifiers = new String[modifierStrings.size()];
        modifierStrings.toArray(modifiers);

        this.builder.addModifiersForType( shortTypeName,
                                       modifiers);

        for ( int i = 0; i < fields.length; i++ ) {
            final Class type = (Class) inspector.getFieldTypes().get( fields[i] );
            final String fieldType = getFieldType( type );
            this.builder.addFieldType( shortTypeName + "." + fields[i],
                                       fieldType );
        }
    }
View Full Code Here

TOP

Related Classes of org.drools.util.asm.ClassFieldInspector

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.