blob: 7457056b07f253b9f19fcfa6354b7a1e6cd0442d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.xpath10 ;
/**
* Java JDK dependencies ...
*/
import java.util.List;
/**
*
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Aug 26, 2008
*/
public class Visitor {
protected void visit ( PathExpr expr ) {
visit ( expr.getFilterExpr() );
visit ( expr.getLocationPath() );
}
protected void visit (LocationPath expr ) {
visitList( expr.getSteps() );
}
protected void visit (FilterExpr expr) {
visit(expr.getExpr());
visitList( expr.getPredicates() );
}
protected void visit (BinaryExpr expr) {
visit(expr.getLHS());
visit(expr.getRHS());
}
protected void visit(UnaryExpr expr) {
visit( expr.getExpr() );
}
protected void visit(UnionExpr expr) {
visit(expr.getLHS());
visit(expr.getRHS());
}
protected void visit (NumberExpr expr) {
}
protected void visit (LiteralExpr expr) {
}
protected void visit (VariableReferenceExpr expr) {
}
protected void visit (FunctionCallExpr expr) {
visitList( expr.getParameters() );
}
protected void visit (NameStep step) {
visitList(step.getPredicates());
}
protected void visit(ProcessingInstructionNodeStep step) {
visitList(step.getPredicates());
}
protected void visit(AllNodeStep step) {
visitList(step.getPredicates());
}
protected void visit (TextNodeStep step) {
visitList(step.getPredicates());
}
protected void visit (CommentNodeStep step) {
visitList(step.getPredicates());
}
protected void visit (Predicate predicate) {
visit(predicate.getExpr());
}
void visitList ( List<?> list) {
for(Object next: list) {
visit(next);
}
}
/**
* @param obj
*/
public void visit ( Object obj ) {
if (obj instanceof PathExpr) {
visit((PathExpr) obj);
} else if (obj instanceof LocationPath) {
visit((LocationPath) obj);
} else if (obj instanceof BinaryExpr) {
visit((BinaryExpr) obj);
} else if (obj instanceof FilterExpr) {
visit((FilterExpr)obj);
} else if (obj instanceof UnaryExpr) {
visit((UnaryExpr)obj);
} else if (obj instanceof NumberExpr) {
visit((NumberExpr)obj);
} else if (obj instanceof LiteralExpr) {
visit((LiteralExpr)obj);
} else if (obj instanceof VariableReferenceExpr) {
visit((VariableReferenceExpr)obj);
} else if (obj instanceof FunctionCallExpr) {
visit((FunctionCallExpr) obj);
} else if (obj instanceof List) {
visitList((List<?>) obj);
} else if (obj instanceof NameStep) {
visit((NameStep)obj);
} else if (obj instanceof ProcessingInstructionNodeStep) {
visit((ProcessingInstructionNodeStep) obj);
} else if (obj instanceof AllNodeStep) {
visit((AllNodeStep)obj);
} else if (obj instanceof TextNodeStep) {
visit((TextNodeStep)obj);
} else if (obj instanceof CommentNodeStep) {
visit((CommentNodeStep)obj);
} else if (obj instanceof Predicate) {
visit((Predicate)obj);
} else {
// ignore or throw error ... ?
}
}
}