1 19 package org.netbeans.modules.javacore.jmiimpl.javamodel; 20 21 import java.util.*; 22 import org.netbeans.jmi.javamodel.Element; 23 import org.netbeans.jmi.javamodel.Expression; 24 import org.netbeans.jmi.javamodel.JavaModelPackage; 25 import org.netbeans.jmi.javamodel.ReturnStatement; 26 import org.netbeans.lib.java.parser.ASTree; 27 import org.netbeans.mdr.storagemodel.StorableObject; 28 import org.netbeans.modules.javacore.parser.ASTProvider; 29 30 34 public abstract class ReturnStatementImpl extends StatementImpl implements ReturnStatement { 35 private Expression expression = null; 36 37 38 public ReturnStatementImpl(StorableObject o) { 39 super(o); 40 } 41 42 public void setExpression(Expression expression) { 43 objectChanged(CHANGED_EXPRESSION); 44 changeChild(getExpression(), expression); 45 this.expression = expression; 46 } 47 48 public Expression getExpression() { 49 if (!childrenInited) { 50 initChildren(); 51 } 52 return expression; 53 } 54 55 public List getChildren() { 56 List list = new ArrayList(1); 57 addIfNotNull(list, getExpression()); 58 return list; 59 } 60 61 protected void initChildren() { 62 childrenInited = false; 63 ASTree tree = getASTree(); 64 if (tree != null) { 65 expression = (Expression) initOrCreate(expression, tree.getSubTrees()[0]); 66 } 67 childrenInited = true; 68 } 69 70 String getRawText() { 71 StringBuffer buf = new StringBuffer (); 72 StatementImpl expr = (StatementImpl) getExpression(); 73 buf.append("return"); if (expr != null) { 75 buf.append(' ').append(expr.getSourceText()); 76 } 77 buf.append(';'); 78 return buf.toString(); 79 } 80 81 public void getDiff(List diff) { 82 ASTProvider parser = getParser(); 83 ASTree tree = getASTree(); 84 ASTree[] children = tree.getSubTrees(); 85 86 int pos = parser.getToken(tree.getFirstToken()).getEndOffset(); 87 getChildDiff(diff, parser, children[0], (MetadataElement) getExpression(), CHANGED_EXPRESSION, pos, " "); } 89 90 void setData(Expression expression) { 91 changeChild(null, expression); 92 this.expression = expression; 93 } 94 95 protected void _delete() { 96 if (childrenInited) { 98 deleteChild(expression); 99 } 100 super._delete(); 104 } 105 106 public void replaceChild(Element oldElement,Element newElement) { 107 if (childrenInited) { 108 if (oldElement.equals(expression)) { 109 setExpression((Expression)newElement); 110 } 111 } 112 } 113 114 public Element duplicate(JavaModelPackage targetExtent) { 115 return targetExtent.getReturnStatement().createReturnStatement((Expression) duplicateElement(getExpression(), targetExtent)); 116 } 117 } 118 | Popular Tags |