package org.jacorb.notification.filter.etcl;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1999-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
import org.jacorb.notification.filter.ComponentName;
import org.jacorb.notification.filter.EvaluationContext;
import org.jacorb.notification.filter.EvaluationException;
import org.jacorb.notification.filter.EvaluationResult;
import org.jacorb.notification.interfaces.Message;
import antlr.Token;
/**
* node that represents a COMPONENT Name
*
* @author Alphonse Bendt
*/
public class ETCLComponentName extends AbstractTCLNode implements ComponentName
{
private final String value_;
private String componentName_;
////////////////////////////////////////
protected ETCLComponentName() {
super();
value_ = null;
}
public ETCLComponentName( Token tok )
{
super( tok );
setName( "ComponentName" );
value_ = tok.getText();
}
////////////////////////////////////////
public EvaluationResult evaluate( EvaluationContext context )
throws EvaluationException
{
final EvaluationResult _result;
Message _event = context.getCurrentMessage();
AbstractTCLNode _left = left();
if (_left == null) {
// this is the case when the expression just consists of
// '$'. $ denotes the current Message.
return EvaluationResult.fromAny( _event.toAny() );
}
switch (_left.getType()) {
case TCLParserTokenTypes.RUNTIME_VAR:
RuntimeVariableNode _var = ( RuntimeVariableNode ) _left;
_result = _event.extractValue( context,
this,
_var );
break;
case TCLParserTokenTypes.DOT:
// fallthrough
case TCLParserTokenTypes.ASSOC:
_result = _event.extractValue(context,
this );
break;
default:
// coming here means, we've hit a bug
throw new RuntimeException("Unexpected Nodetype: "
+ getNameForType(_left.getType()));
}
return _result;
}
public String toString()
{
return value_;
}
public void setComponentName( String name )
{
componentName_ = name;
}
public String getComponentName()
{
return componentName_;
}
public void acceptPostOrder( AbstractTCLVisitor visitor ) throws VisitorException
{
if (getFirstChild() != null) {
( ( AbstractTCLNode ) getFirstChild() ).acceptPostOrder( visitor );
}
visitor.visitComponent( this );
}
public void acceptPreOrder( AbstractTCLVisitor visitor ) throws VisitorException
{
visitor.visitComponent( this );
( ( AbstractTCLNode ) getFirstChild() ).acceptPreOrder( visitor );
}
public void acceptInOrder( AbstractTCLVisitor visitor ) throws VisitorException
{
( ( AbstractTCLNode ) getFirstChild() ).acceptInOrder( visitor );
visitor.visitComponent( this );
}
}