protected void bindRule()

in commons-digester3-core/src/main/java/org/apache/commons/digester3/xmlrules/ObjectCreateRule.java [41:72]


    protected void bindRule( final LinkedRuleBuilder linkedRuleBuilder, final Attributes attributes )
        throws Exception
    {
        final ObjectCreateBuilder builder = linkedRuleBuilder.createObject()
            .ofType( attributes.getValue( "classname" ) )
            .ofTypeSpecifiedByAttribute( attributes.getValue( "attrname" ) );

        final String paramTypesStr = attributes.getValue( "paramtypes" );
        if ( paramTypesStr != null && !paramTypesStr.isEmpty() )
        {
            final StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
            final String[] paramTypeNames = new String[tokens.countTokens()];
            int counter = 0;
            while ( tokens.hasMoreTokens() )
            {
                paramTypeNames[counter++] = tokens.nextToken();
            }
            builder.usingConstructor( paramTypeNames );
        }
        final String paramsStr = attributes.getValue( "params" );
        if ( paramsStr != null && !paramsStr.isEmpty() )
        {
            final StringTokenizer tokens = new StringTokenizer( paramTypesStr, " \t\n\r," );
            final Object[] params = new Object[tokens.countTokens()];
            int counter = 0;
            while ( tokens.hasMoreTokens() )
            {
                params[counter++] = tokens.nextToken();
            }
            builder.usingDefaultConstructorArguments( params );
        }
    }