package com.mobilesorcery.sdk.html5.debug.rewrite;
import org.eclipse.wst.jsdt.core.dom.ASTNode;
import org.eclipse.wst.jsdt.core.dom.Block;
import org.eclipse.wst.jsdt.core.dom.CatchClause;
import org.eclipse.wst.jsdt.core.dom.TryStatement;
import com.mobilesorcery.sdk.core.IFilter;
import com.mobilesorcery.sdk.html5.debug.Position;
public class CatchRewrite extends NodeRewrite {
public CatchRewrite(ISourceSupport source, ASTNode node) {
super(source, node);
}
@Override
public void rewrite(IFilter<String> features, IRewrite rewrite) {
CatchClause catchClause = (CatchClause) getNode();
String exceptionVar = catchClause.getException().getName().getIdentifier();
Block body = catchClause.getBody();
Position bodyStart = getPosition(body, true);
String source = getSource(body);
int insideBodyStart = source.indexOf("{");
if (insideBodyStart != -1) {
insideBodyStart += bodyStart.getPosition() + 1;
}
rewrite.seek(insideBodyStart);
rewrite.insert("if (" + exceptionVar + ".dropToFrame) { throw " + exceptionVar + "; }");
defaultRewrite(features, rewrite);
}
}