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 extends Throwable> 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) {