From 927fc951a02a038682acbaf637e496842794e4ad Mon Sep 17 00:00:00 2001 From: Pavel Vojtechovsky Date: Wed, 9 Nov 2016 20:45:54 +0100 Subject: [PATCH] refactor: CtBodyHolder.setBody(body) implemented --- src/main/java/spoon/reflect/code/CtBodyHolder.java | 5 +++++ src/main/java/spoon/reflect/code/CtCatch.java | 1 + src/main/java/spoon/reflect/code/CtLoop.java | 4 +++- src/main/java/spoon/reflect/code/CtTry.java | 1 + .../spoon/reflect/declaration/CtExecutable.java | 1 + .../spoon/support/reflect/code/CtCatchImpl.java | 13 +++++++++++++ .../spoon/support/reflect/code/CtLambdaImpl.java | 13 +++++++++++++ .../java/spoon/support/reflect/code/CtLoopImpl.java | 4 +++- .../java/spoon/support/reflect/code/CtTryImpl.java | 13 +++++++++++++ .../reflect/declaration/CtExecutableImpl.java | 13 +++++++++++++ 10 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/main/java/spoon/reflect/code/CtBodyHolder.java b/src/main/java/spoon/reflect/code/CtBodyHolder.java index 5e3e9ab8c9d..e3e0f302d67 100644 --- a/src/main/java/spoon/reflect/code/CtBodyHolder.java +++ b/src/main/java/spoon/reflect/code/CtBodyHolder.java @@ -27,4 +27,9 @@ public interface CtBodyHolder extends CtElement { * Gets the body of this element */ CtStatement getBody(); + + /** + * Sets the body of this element. + */ + T setBody(CtStatement body); } diff --git a/src/main/java/spoon/reflect/code/CtCatch.java b/src/main/java/spoon/reflect/code/CtCatch.java index 392f36abe4b..617733a875b 100644 --- a/src/main/java/spoon/reflect/code/CtCatch.java +++ b/src/main/java/spoon/reflect/code/CtCatch.java @@ -36,6 +36,7 @@ public interface CtCatch extends CtCodeElement, CtBodyHolder { /** * Gets the catch's body. */ + @Override CtBlock getBody(); /** diff --git a/src/main/java/spoon/reflect/code/CtLoop.java b/src/main/java/spoon/reflect/code/CtLoop.java index d9ecb873b25..57957d50cbd 100644 --- a/src/main/java/spoon/reflect/code/CtLoop.java +++ b/src/main/java/spoon/reflect/code/CtLoop.java @@ -26,12 +26,14 @@ public interface CtLoop extends CtStatement, TemplateParameter, CtBodyHold /** * Gets the body of this loop. */ + @Override CtStatement getBody(); /** * Sets the body of this loop. */ - T setBody(CtStatement body); + @Override + T setBody(CtStatement body); @Override CtLoop clone(); diff --git a/src/main/java/spoon/reflect/code/CtTry.java b/src/main/java/spoon/reflect/code/CtTry.java index 81030580b4b..37e616e1694 100644 --- a/src/main/java/spoon/reflect/code/CtTry.java +++ b/src/main/java/spoon/reflect/code/CtTry.java @@ -55,6 +55,7 @@ public interface CtTry extends CtStatement, TemplateParameter, CtBodyHolde /** * Sets the tried body. */ + @Override CtBlock getBody(); /** diff --git a/src/main/java/spoon/reflect/declaration/CtExecutable.java b/src/main/java/spoon/reflect/declaration/CtExecutable.java index fa9500b60b6..b5446b943bc 100644 --- a/src/main/java/spoon/reflect/declaration/CtExecutable.java +++ b/src/main/java/spoon/reflect/declaration/CtExecutable.java @@ -45,6 +45,7 @@ public interface CtExecutable extends CtNamedElement, CtTypedElement, CtBo /** * Gets the body expression. */ + @Override CtBlock getBody(); /** diff --git a/src/main/java/spoon/support/reflect/code/CtCatchImpl.java b/src/main/java/spoon/support/reflect/code/CtCatchImpl.java index 1fc08f79eb1..8caa929def1 100644 --- a/src/main/java/spoon/support/reflect/code/CtCatchImpl.java +++ b/src/main/java/spoon/support/reflect/code/CtCatchImpl.java @@ -17,8 +17,10 @@ package spoon.support.reflect.code; import spoon.reflect.code.CtBlock; +import spoon.reflect.code.CtBodyHolder; import spoon.reflect.code.CtCatch; import spoon.reflect.code.CtCatchVariable; +import spoon.reflect.code.CtStatement; import spoon.reflect.visitor.CtVisitor; public class CtCatchImpl extends CtCodeElementImpl implements CtCatch { @@ -43,6 +45,17 @@ public CtCatchVariable getParameter() { return parameter; } + @Override + public T setBody(CtStatement statement) { + CtBlock block; + if (statement instanceof CtBlock) { + block = (CtBlock) statement; + } else { + block = getFactory().Code().createCtBlock(statement); + } + return setBody(block); + } + @Override public T setBody(CtBlock body) { if (body != null) { diff --git a/src/main/java/spoon/support/reflect/code/CtLambdaImpl.java b/src/main/java/spoon/support/reflect/code/CtLambdaImpl.java index 814e56a4a15..9eee3c7906f 100644 --- a/src/main/java/spoon/support/reflect/code/CtLambdaImpl.java +++ b/src/main/java/spoon/support/reflect/code/CtLambdaImpl.java @@ -18,8 +18,10 @@ import spoon.SpoonException; import spoon.reflect.code.CtBlock; +import spoon.reflect.code.CtBodyHolder; import spoon.reflect.code.CtExpression; import spoon.reflect.code.CtLambda; +import spoon.reflect.code.CtStatement; import spoon.reflect.declaration.CtExecutable; import spoon.reflect.declaration.CtNamedElement; import spoon.reflect.declaration.CtParameter; @@ -64,6 +66,17 @@ public CtBlock getBody() { return (CtBlock) body; } + @Override + public T setBody(CtStatement statement) { + CtBlock block; + if (statement instanceof CtBlock) { + block = (CtBlock) statement; + } else { + block = getFactory().Code().createCtBlock(statement); + } + return setBody(block); + } + @Override public > C setBody(CtBlock body) { if (expression != null && body != null) { diff --git a/src/main/java/spoon/support/reflect/code/CtLoopImpl.java b/src/main/java/spoon/support/reflect/code/CtLoopImpl.java index 9756234bf89..a8b02897c9f 100644 --- a/src/main/java/spoon/support/reflect/code/CtLoopImpl.java +++ b/src/main/java/spoon/support/reflect/code/CtLoopImpl.java @@ -16,6 +16,7 @@ */ package spoon.support.reflect.code; +import spoon.reflect.code.CtBodyHolder; import spoon.reflect.code.CtCodeElement; import spoon.reflect.code.CtLoop; import spoon.reflect.code.CtStatement; @@ -31,8 +32,9 @@ public CtStatement getBody() { return body; } + @SuppressWarnings("unchecked") @Override - public T setBody(CtStatement body) { + public T setBody(CtStatement body) { if (body != null) { body.setParent(this); } diff --git a/src/main/java/spoon/support/reflect/code/CtTryImpl.java b/src/main/java/spoon/support/reflect/code/CtTryImpl.java index c3217b1c428..cf4c3f77772 100644 --- a/src/main/java/spoon/support/reflect/code/CtTryImpl.java +++ b/src/main/java/spoon/support/reflect/code/CtTryImpl.java @@ -17,8 +17,10 @@ package spoon.support.reflect.code; import spoon.reflect.code.CtBlock; +import spoon.reflect.code.CtBodyHolder; import spoon.reflect.code.CtCatch; import spoon.reflect.code.CtCodeElement; +import spoon.reflect.code.CtStatement; import spoon.reflect.code.CtTry; import spoon.reflect.declaration.CtType; import spoon.reflect.visitor.CtVisitor; @@ -98,6 +100,17 @@ public CtBlock getBody() { return body; } + @Override + public T setBody(CtStatement statement) { + CtBlock block; + if (statement instanceof CtBlock) { + block = (CtBlock) statement; + } else { + block = getFactory().Code().createCtBlock(statement); + } + return setBody(block); + } + @Override public T setBody(CtBlock body) { if (body != null) { diff --git a/src/main/java/spoon/support/reflect/declaration/CtExecutableImpl.java b/src/main/java/spoon/support/reflect/declaration/CtExecutableImpl.java index c1d08d29ba8..c1f1eb24aed 100644 --- a/src/main/java/spoon/support/reflect/declaration/CtExecutableImpl.java +++ b/src/main/java/spoon/support/reflect/declaration/CtExecutableImpl.java @@ -23,6 +23,8 @@ import java.util.Set; import spoon.reflect.code.CtBlock; +import spoon.reflect.code.CtBodyHolder; +import spoon.reflect.code.CtStatement; import spoon.reflect.declaration.CtExecutable; import spoon.reflect.declaration.CtParameter; import spoon.reflect.reference.CtExecutableReference; @@ -54,6 +56,17 @@ public CtBlock getBody() { return (CtBlock) body; } + @Override + public T setBody(CtStatement statement) { + CtBlock block; + if (statement instanceof CtBlock) { + block = (CtBlock) statement; + } else { + block = getFactory().Code().createCtBlock(statement); + } + return setBody(block); + } + @Override public > T setBody(CtBlock body) { if (body != null) {