/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.flex.compiler.internal.visitor.mxml;
import org.apache.flex.compiler.tree.as.IASNode;
import org.apache.flex.compiler.tree.mxml.IMXMLArrayNode;
import org.apache.flex.compiler.tree.mxml.IMXMLBindingNode;
import org.apache.flex.compiler.tree.mxml.IMXMLBooleanNode;
import org.apache.flex.compiler.tree.mxml.IMXMLComponentNode;
import org.apache.flex.compiler.tree.mxml.IMXMLDataBindingNode;
import org.apache.flex.compiler.tree.mxml.IMXMLDeclarationsNode;
import org.apache.flex.compiler.tree.mxml.IMXMLDeferredInstanceNode;
import org.apache.flex.compiler.tree.mxml.IMXMLDocumentNode;
import org.apache.flex.compiler.tree.mxml.IMXMLEmbedNode;
import org.apache.flex.compiler.tree.mxml.IMXMLEventSpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLFactoryNode;
import org.apache.flex.compiler.tree.mxml.IMXMLFileNode;
import org.apache.flex.compiler.tree.mxml.IMXMLImplementsNode;
import org.apache.flex.compiler.tree.mxml.IMXMLInstanceNode;
import org.apache.flex.compiler.tree.mxml.IMXMLIntNode;
import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStyleNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStyleSpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLUintNode;
import org.apache.flex.compiler.tree.mxml.IMXMLVectorNode;
import org.apache.flex.compiler.visitor.IASNodeStrategy;
import org.apache.flex.compiler.visitor.IBlockVisitor;
import org.apache.flex.compiler.visitor.mxml.IMXMLBlockVisitor;
/**
* @author Michael Schmalle
* @author Erik de Bruin
*/
public class MXMLNodeSwitch implements IASNodeStrategy
{
private final IMXMLBlockVisitor visitor;
public MXMLNodeSwitch(IBlockVisitor visitor)
{
this.visitor = (IMXMLBlockVisitor) visitor;
}
@Override
public void handle(IASNode node)
{
switch (node.getNodeID())
{
case MXMLArrayID:
visitor.visitArray((IMXMLArrayNode) node);
break;
case MXMLBooleanID:
visitor.visitBoolean((IMXMLBooleanNode) node);
break;
case MXMLDeclarationsID:
visitor.visitDeclarations((IMXMLDeclarationsNode) node);
break;
case MXMLDeferredInstanceID:
visitor.visitDeferredInstance((IMXMLDeferredInstanceNode) node);
break;
case MXMLDocumentID:
visitor.visitDocument((IMXMLDocumentNode) node);
break;
case MXMLEventSpecifierID:
visitor.visitEventSpecifier((IMXMLEventSpecifierNode) node);
break;
case MXMLFileID:
visitor.visitFile((IMXMLFileNode) node);
break;
case MXMLIntID:
visitor.visitInt((IMXMLIntNode) node);
break;
case MXMLInstanceID:
visitor.visitInstance((IMXMLInstanceNode) node);
break;
case MXMLLiteralID:
visitor.visitLiteral((IMXMLLiteralNode) node);
break;
case MXMLNumberID:
visitor.visitNumber((IMXMLNumberNode) node);
break;
case MXMLPropertySpecifierID:
visitor.visitPropertySpecifier((IMXMLPropertySpecifierNode) node);
break;
case MXMLScriptID:
visitor.visitScript((IMXMLScriptNode) node);
break;
case MXMLStringID:
visitor.visitString((IMXMLStringNode) node);
break;
case MXMLStyleSpecifierID:
visitor.visitStyleSpecifier((IMXMLStyleSpecifierNode) node);
break;
case MXMLUintID:
visitor.visitUint((IMXMLUintNode) node);
break;
case MXMLStyleID:
visitor.visitStyleBlock((IMXMLStyleNode)node);
break;
case MXMLStateID:
visitor.visitInstance((IMXMLInstanceNode) node);
break;
case MXMLFactoryID:
visitor.visitFactory((IMXMLFactoryNode) node);
break;
case MXMLComponentID:
visitor.visitComponent((IMXMLComponentNode) node);
break;
case MXMLMetadataID:
visitor.visitMetadata((IMXMLMetadataNode) node);
break;
case MXMLEmbedID:
visitor.visitEmbed((IMXMLEmbedNode) node);
break;
case MXMLImplementsID:
visitor.visitImplements((IMXMLImplementsNode) node);
break;
case MXMLVectorID:
visitor.visitVector((IMXMLVectorNode) node);
break;
case MXMLDataBindingID:
visitor.visitDatabinding((IMXMLDataBindingNode) node);
break;
case MXMLBindingID:
visitor.visitBinding((IMXMLBindingNode) node);
break;
case MXMLObjectID:
visitor.visitObject((IMXMLObjectNode) node);
break;
case MXMLApplicationID:
case MXMLBindingAttributeID:
case MXMLClassID:
case MXMLClassDefinitionID:
case MXMLClearID:
case MXMLConcatenatedDataBindingID:
case MXMLDateID:
case MXMLDefinitionID:
case MXMLDesignLayerID:
case MXMLEffectSpecifierID:
case MXMLFunctionID:
case MXMLHTTPServiceID:
case MXMLHTTPServiceRequestID:
case MXMLLibraryID:
case MXMLModelID:
case MXMLModelPropertyID:
case MXMLModelRootID:
case MXMLPrivateID:
case MXMLRegExpID:
case MXMLRemoteObjectID:
case MXMLRemoteObjectMethodID:
case MXMLReparentID:
//case MXMLRepeaterID:
case MXMLResourceID:
case MXMLWebServiceID:
case MXMLWebServiceOperationID:
case MXMLXMLID:
case MXMLXMLListID:
default:
throw new IllegalArgumentException(
"No handler specified for nodes of type '"
+ node.getNodeID().getParaphrase() + "'");
}
}
}