blob: 661048be9ab80b1e94a10d941887c1909afebb03 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2005 IBM 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jem.tests.proxy;
/*
* $RCSfile: ExpressionThreadTransferCallBack.java,v $
* $Revision: 1.2 $ $Date: 2005/08/24 20:58:54 $
*/
import java.io.InputStream;
import org.eclipse.jem.internal.proxy.core.*;
import org.eclipse.jem.internal.proxy.initParser.tree.ForExpression;
import org.eclipse.jem.internal.proxy.initParser.tree.InfixOperator;
/**
* This is the callback for the expression test thread transfer. This runs on the IDE side.
*/
public class ExpressionThreadTransferCallBack implements ICallback {
Expression expression;
public Throwable error;
public ExpressionProxy ep;
public ExpressionThreadTransferCallBack(Expression expression) {
this.expression = expression;
}
public Object calledBack(int msgID, IBeanProxy parm){
return null;
}
public Object calledBack(int msgID, Object parm) {
try {
expression.transferThread();
// The test here is for equality.
ep = expression.createProxyAssignmentExpression(ForExpression.ROOTEXPRESSION);
expression.createInfixExpression(ForExpression.ASSIGNMENT_RIGHT, InfixOperator.IN_EQUALS, 0);
expression.createTypeLiteral(ForExpression.INFIX_LEFT, "java.lang.String");
expression.createTypeLiteral(ForExpression.INFIX_RIGHT, "java.lang.String");
} catch (RuntimeException e) {
error = e;
} finally {
if (expression.isValid())
try {
expression.beginTransferThread(); // Set to return expression to other thread.
} catch (IllegalStateException e) {
error = e;
} catch (ThrowableProxy e) {
error = e;
}
}
return null;
}
public Object calledBack(int msgID, Object[] parms){
return null;
}
public void calledBackStream(int msgID, InputStream in){
}
}