org.drools.verifier.visitor.DeclarativeInvokerDescrVisitor Maven / Gradle / Ivy
/*
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.verifier.visitor;
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.DeclarativeInvokerDescr;
import org.drools.lang.descr.FieldAccessDescr;
import org.drools.lang.descr.FunctionCallDescr;
import org.drools.lang.descr.MethodAccessDescr;
import org.drools.verifier.components.VerifierAccessorDescr;
import org.drools.verifier.components.VerifierFieldAccessDescr;
import org.drools.verifier.components.VerifierFunctionCallDescr;
import org.drools.verifier.components.VerifierMethodAccessDescr;
import org.drools.verifier.components.VerifierRule;
import org.drools.verifier.data.VerifierComponent;
import org.drools.verifier.data.VerifierData;
public class DeclarativeInvokerDescrVisitor {
private final VerifierData data;
private final VerifierRule rule;
private int orderNumber = 0;
public DeclarativeInvokerDescrVisitor(VerifierData data,
VerifierRule rule) {
this.data = data;
this.rule = rule;
}
public VerifierComponent visit(DeclarativeInvokerDescr descr) throws UnknownDescriptionException {
VerifierComponent ds;
if ( descr instanceof AccessorDescr ) {
ds = visit( (AccessorDescr) descr );
} else if ( descr instanceof FieldAccessDescr ) {
ds = visit( (FieldAccessDescr) descr );
} else if ( descr instanceof FunctionCallDescr ) {
ds = visit( (FunctionCallDescr) descr );
} else if ( descr instanceof MethodAccessDescr ) {
ds = visit( (MethodAccessDescr) descr );
} else {
throw new UnknownDescriptionException( descr );
}
return ds;
}
/**
* End leaf
*
* @param descr
* @return
*/
private VerifierFunctionCallDescr visit(FunctionCallDescr descr) {
VerifierFunctionCallDescr functionCall = new VerifierFunctionCallDescr( rule );
functionCall.setName( descr.getName() );
functionCall.setArguments( descr.getArguments() );
functionCall.setOrderNumber( orderNumber );
functionCall.setParentPath( rule.getPath() );
functionCall.setParentType( rule.getVerifierComponentType() );
return functionCall;
}
/**
* End leaf
*
* @param descr
*/
private VerifierFieldAccessDescr visit(FieldAccessDescr descr) {
VerifierFieldAccessDescr accessor = new VerifierFieldAccessDescr( rule );
accessor.setFieldName( descr.getFieldName() );
accessor.setArgument( descr.getArgument() );
accessor.setOrderNumber( orderNumber );
accessor.setParentPath( rule.getPath() );
accessor.setParentType( rule.getVerifierComponentType() );
data.add( accessor );
return accessor;
}
private VerifierAccessorDescr visit(AccessorDescr descr) {
VerifierAccessorDescr accessor = new VerifierAccessorDescr( rule );
accessor.setOrderNumber( orderNumber );
accessor.setParentPath( rule.getPath() );
accessor.setParentType( rule.getVerifierComponentType() );
// TODO: I wonder what this descr does.
data.add( accessor );
return accessor;
}
/**
* End leaf
*
* @param descr
*/
private VerifierMethodAccessDescr visit(MethodAccessDescr descr) {
VerifierMethodAccessDescr accessor = new VerifierMethodAccessDescr( rule );
accessor.setMethodName( descr.getMethodName() );
accessor.setArguments( descr.getArguments() );
accessor.setOrderNumber( orderNumber );
accessor.setParentPath( rule.getPath() );
accessor.setParentType( rule.getVerifierComponentType() );
data.add( accessor );
return accessor;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy