use of spoon.reflect.code.CtTryWithResource in project spoon by INRIA.
the class TryCatchTest method testTryWithOneResource.
@Test
public void testTryWithOneResource() throws Exception {
CtClass<?> clazz = build("spoon.test.trycatch", "TryCatchResourceClass");
CtMethod<?> method = clazz.getMethodsByName("readFirstLineFromFile").get(0);
CtTryWithResource ctTryWithResource = method.getElements(new TypeFilter<CtTryWithResource>(CtTryWithResource.class)).get(0);
// Checks try has only one resource.
assertTrue(ctTryWithResource.getResources().size() == 1);
}
use of spoon.reflect.code.CtTryWithResource in project spoon by INRIA.
the class TryCatchTest method testModelBuildingInitializer.
@Test
public void testModelBuildingInitializer() throws Exception {
CtClass<Main> type = build("spoon.test.trycatch", "Main");
assertEquals("Main", type.getSimpleName());
CtMethod<Void> m = type.getMethod("test");
assertNotNull(m);
assertEquals(2, m.getBody().getStatements().size());
assertTrue(m.getBody().getStatements().get(0) instanceof CtTry);
assertTrue(m.getBody().getStatements().get(1) instanceof CtTryWithResource);
CtTryWithResource t2 = m.getBody().getStatement(1);
assertNotNull(t2.getResources());
}
use of spoon.reflect.code.CtTryWithResource in project spoon by INRIA.
the class TryCatchTest method testTryWithResources.
@Test
public void testTryWithResources() throws Exception {
CtClass<?> clazz = build("spoon.test.trycatch", "TryCatchResourceClass");
CtMethod<?> method = clazz.getMethodsByName("writeToFileZipFileContents").get(0);
CtTryWithResource ctTryWithResource = method.getElements(new TypeFilter<CtTryWithResource>(CtTryWithResource.class)).get(0);
// Checks try has more than one resource.
assertTrue(ctTryWithResource.getResources().size() > 1);
}
use of spoon.reflect.code.CtTryWithResource in project spoon by INRIA.
the class AccessibleVariablesFinder method getVariable.
private List<CtVariable> getVariable(final CtElement parent) {
final List<CtVariable> variables = new ArrayList<>();
if (parent == null) {
return variables;
}
class VariableScanner extends CtInheritanceScanner {
@Override
public void visitCtStatementList(CtStatementList e) {
for (int i = 0; i < e.getStatements().size(); i++) {
CtStatement ctStatement = e.getStatements().get(i);
if (ctStatement.getPosition() == null) {
}
if (ctStatement.getPosition() != null && ctStatement.getPosition().getSourceStart() > expression.getPosition().getSourceEnd()) {
break;
}
if (ctStatement instanceof CtVariable) {
variables.add((CtVariable) ctStatement);
}
}
super.visitCtStatementList(e);
}
@Override
public <T> void scanCtType(CtType<T> type) {
List<CtField<?>> fields = type.getFields();
for (int i = 0; i < fields.size(); i++) {
CtField<?> ctField = fields.get(i);
if (ctField.hasModifier(ModifierKind.PUBLIC) || ctField.hasModifier(ModifierKind.PROTECTED)) {
variables.add(ctField);
} else if (ctField.hasModifier(ModifierKind.PRIVATE)) {
if (expression.hasParent(type)) {
variables.add(ctField);
}
} else if (expression.getParent(CtPackage.class).equals(type.getParent(CtPackage.class))) {
// default visibility
variables.add(ctField);
}
}
CtTypeReference<?> superclass = type.getSuperclass();
if (superclass != null) {
variables.addAll(getVariable(superclass.getTypeDeclaration()));
}
Set<CtTypeReference<?>> superInterfaces = type.getSuperInterfaces();
for (Iterator<CtTypeReference<?>> iterator = superInterfaces.iterator(); iterator.hasNext(); ) {
CtTypeReference<?> typeReference = iterator.next();
variables.addAll(getVariable(typeReference.getTypeDeclaration()));
}
super.scanCtType(type);
}
@Override
public void visitCtTryWithResource(CtTryWithResource e) {
variables.addAll(e.getResources());
super.visitCtTryWithResource(e);
}
@Override
public void scanCtExecutable(CtExecutable e) {
variables.addAll(e.getParameters());
super.scanCtExecutable(e);
}
@Override
public void visitCtFor(CtFor e) {
for (CtStatement ctStatement : e.getForInit()) {
this.scan(ctStatement);
}
super.visitCtFor(e);
}
@Override
public void visitCtForEach(CtForEach e) {
variables.add(e.getVariable());
super.visitCtForEach(e);
}
@Override
public void visitCtMethod(CtMethod e) {
this.scan(e.getBody());
super.visitCtMethod(e);
}
@Override
public void visitCtLocalVariable(CtLocalVariable e) {
variables.add(e);
super.visitCtLocalVariable(e);
}
@Override
public void visitCtCatch(CtCatch e) {
variables.add(e.getParameter());
super.visitCtCatch(e);
}
}
new VariableScanner().scan(parent);
return variables;
}
use of spoon.reflect.code.CtTryWithResource in project spoon by INRIA.
the class DefaultCoreFactory method createTryWithResource.
@Override
public CtTryWithResource createTryWithResource() {
CtTryWithResource e = new CtTryWithResourceImpl();
e.setFactory(getMainFactory());
return e;
}
Aggregations