public static RewriteEvent[] listRewriteHandleGeneratedMethods(RewriteEvent parent) { RewriteEvent[] children = parent.getChildren(); List<RewriteEvent> newChildren = new ArrayList<RewriteEvent>(); List<RewriteEvent> modifiedChildren = new ArrayList<RewriteEvent>(); for (int i = 0; i < children.length; i++) { RewriteEvent child = children[i]; boolean isGenerated = isGenerated((org.eclipse.jdt.core.dom.ASTNode) child.getOriginalValue()); if (isGenerated) { boolean isReplacedOrRemoved = child.getChangeKind() == RewriteEvent.REPLACED || child.getChangeKind() == RewriteEvent.REMOVED; boolean convertingFromMethod = child.getOriginalValue() instanceof org.eclipse.jdt.core.dom.MethodDeclaration; if (isReplacedOrRemoved && convertingFromMethod && child.getNewValue() != null) { modifiedChildren.add(new NodeRewriteEvent(null, child.getNewValue())); } } else { newChildren.add(child); } } // Since Eclipse doesn't honor the "insert at specified location" for already existing members, // we'll just add them last newChildren.addAll(modifiedChildren); return newChildren.toArray(new RewriteEvent[newChildren.size()]); }
private boolean isNodeInEvent(RewriteEvent event, Object value, int kind) { if (((kind & NEW) != 0) && event.getNewValue() == value) { return true; } if (((kind & ORIGINAL) != 0) && event.getOriginalValue() == value) { return true; } return false; }
/** * Kind is either ORIGINAL, NEW, or BOTH * @param value * @param kind * @return Returns the event with the given value of <code>null</code>. */ public RewriteEvent findEvent(Object value, int kind) { for (Iterator iter= this.eventLookup.values().iterator(); iter.hasNext();) { List events= (List) iter.next(); for (int i= 0; i < events.size(); i++) { RewriteEvent event= ((EventHolder) events.get(i)).event; if (isNodeInEvent(event, value, kind)) { return event; } if (event.isListRewrite()) { RewriteEvent[] children= event.getChildren(); for (int k= 0; k < children.length; k++) { if (isNodeInEvent(children[k], value, kind)) { return children[k]; } } } } } return null; }
private boolean isAllOfKind(RewriteEvent[] children, int kind) { for (int i= 0; i < children.length; i++) { if (children[i].getChangeKind() != kind) { return false; } } return true; }
private int rewriteExtraDimensions(ASTNode parent, StructuralPropertyDescriptor property, int pos) { RewriteEvent event= getEvent(parent, property); if (event == null || event.getChangeKind() == RewriteEvent.UNCHANGED) { return ((Integer) getOriginalValue(parent, property)).intValue(); } int oldDim= ((Integer) event.getOriginalValue()).intValue(); int newDim= ((Integer) event.getNewValue()).intValue(); if (oldDim != newDim) { TextEditGroup editGroup= getEditGroup(event); rewriteExtraDimensions(oldDim, newDim, pos, editGroup); } return oldDim; }
protected int getStartOfNextNode(int nextIndex, int defaultPos) { for (int i= nextIndex; i < this.list.length; i++) { RewriteEvent elem= this.list[i]; if (elem.getChangeKind() != RewriteEvent.INSERTED) { ASTNode node= (ASTNode) elem.getOriginalValue(); return getExtendedOffset(node); } } return defaultPos; }
private int rewriteParagraphList(ASTNode parent, StructuralPropertyDescriptor property, int insertPos, int insertIndent, int separator, int lead) { RewriteEvent event= getEvent(parent, property); if (event == null || event.getChangeKind() == RewriteEvent.UNCHANGED) { return doVisit(parent, property, insertPos); } RewriteEvent[] events= event.getChildren(); ParagraphListRewriter listRewriter= new ParagraphListRewriter(insertIndent, separator); StringBuffer leadString= new StringBuffer(); if (isAllOfKind(events, RewriteEvent.INSERTED)) { for (int i= 0; i < lead; i++) { leadString.append(getLineDelimiter()); } leadString.append(createIndentString(insertIndent)); } return listRewriter.rewriteList(parent, property, insertPos, leadString.toString()); }
private void rewriteOperation(ASTNode parent, StructuralPropertyDescriptor property, int posBeforeOperation) { RewriteEvent event= getEvent(parent, property); if (event != null && event.getChangeKind() != RewriteEvent.UNCHANGED) { try { String newOperation= event.getNewValue().toString(); TextEditGroup editGroup= getEditGroup(event); getScanner().readNext(posBeforeOperation, true); doTextReplace(getScanner().getCurrentStartOffset(), getScanner().getCurrentLength(), newOperation, editGroup); } catch (CoreException e) { handleException(e); } } }
public Object getNewValue() { List entries= getEntries(); ArrayList res= new ArrayList(entries.size()); for (int i= 0; i < entries.size(); i++) { RewriteEvent curr= (RewriteEvent) entries.get(i); Object newVal= curr.getNewValue(); if (newVal != null) { res.add(newVal); } } return res; }
public Object getOriginalValue(ASTNode parent, StructuralPropertyDescriptor property) { RewriteEvent event= getEvent(parent, property); if (event != null) { return event.getOriginalValue(); } return accessOriginalValue(parent, property); }
public void addEvent(ASTNode parent, StructuralPropertyDescriptor childProperty, RewriteEvent event) { validateHasChildProperty(parent, childProperty); if (event.isListRewrite()) { validateIsListProperty(childProperty); } EventHolder holder= new EventHolder(parent, childProperty, event); List entriesList = (List) this.eventLookup.get(parent); if (entriesList != null) { for (int i= 0; i < entriesList.size(); i++) { EventHolder curr= (EventHolder) entriesList.get(i); if (curr.childProperty == childProperty) { entriesList.set(i, holder); this.lastEvent= null; return; } } } else { entriesList= new ArrayList(3); this.eventLookup.put(parent, entriesList); } entriesList.add(holder); }
private ASTNode getNode(int nodeIndex) { ASTNode elem= (ASTNode) this.list[nodeIndex].getOriginalValue(); if (elem == null) { elem= (ASTNode) this.list[nodeIndex].getNewValue(); } return elem; }
/** * Kind is either ORIGINAL, NEW, or BOTH * @param value * @param kind * @return Returns the event with the given value of <code>null</code>. */ public RewriteEvent findEvent(Object value, int kind) { for (Iterator iter= this.eventLookup.values().iterator(); iter.hasNext();) { List events= (List) iter.next(); for (int i= 0; i < events.size(); i++) { RewriteEvent event= ((EventHolder) events.get(i)).event; if (isNodeInEvent(event, value, kind)) { return event; } if (event.isListRewrite()) { RewriteEvent[] children= event.getChildren(); for (int k= 0; k < children.length; k++) { if (isNodeInEvent(children[k], value, kind)) { return children[k]; } } } } } return null; }
private boolean isAllOfKind(RewriteEvent[] children, int kind) { for (int i= 0; i < children.length; i++) { if (children[i].getChangeKind() != kind) { return false; } } return true; }
private int rewriteExtraDimensions(ASTNode parent, StructuralPropertyDescriptor property, int pos) { RewriteEvent event= getEvent(parent, property); if (event == null || event.getChangeKind() == RewriteEvent.UNCHANGED) { return ((Integer) getOriginalValue(parent, property)).intValue(); } int oldDim= ((Integer) event.getOriginalValue()).intValue(); int newDim= ((Integer) event.getNewValue()).intValue(); if (oldDim != newDim) { TextEditGroup editGroup= getEditGroup(event); rewriteExtraDimensions(oldDim, newDim, pos, editGroup); } return oldDim; }
protected int getStartOfNextNode(int nextIndex, int defaultPos) { for (int i= nextIndex; i < this.list.length; i++) { RewriteEvent elem= this.list[i]; if (elem.getChangeKind() != RewriteEvent.INSERTED) { ASTNode node= (ASTNode) elem.getOriginalValue(); return getExtendedOffset(node); } } return defaultPos; }
private int rewriteParagraphList(ASTNode parent, StructuralPropertyDescriptor property, int insertPos, int insertIndent, int separator, int lead) { RewriteEvent event= getEvent(parent, property); if (event == null || event.getChangeKind() == RewriteEvent.UNCHANGED) { return doVisit(parent, property, insertPos); } RewriteEvent[] events= event.getChildren(); ParagraphListRewriter listRewriter= new ParagraphListRewriter(insertIndent, separator); StringBuffer leadString= new StringBuffer(); if (isAllOfKind(events, RewriteEvent.INSERTED)) { for (int i= 0; i < lead; i++) { leadString.append(getLineDelimiter()); } leadString.append(createIndentString(insertIndent)); } return listRewriter.rewriteList(parent, property, insertPos, leadString.toString()); }
private void rewriteOperation(ASTNode parent, StructuralPropertyDescriptor property, int posBeforeOperation) { RewriteEvent event= getEvent(parent, property); if (event != null && event.getChangeKind() != RewriteEvent.UNCHANGED) { try { String newOperation= event.getNewValue().toString(); TextEditGroup editGroup= getEditGroup(event); getScanner().readNext(posBeforeOperation, true); doTextReplace(getScanner().getCurrentStartOffset(), getScanner().getCurrentLength(), newOperation, editGroup); } catch (CoreException e) { handleException(e); } } }
public Object getNewValue() { List entries= getEntries(); ArrayList res= new ArrayList(entries.size()); for (int i= 0; i < entries.size(); i++) { RewriteEvent curr= (RewriteEvent) entries.get(i); Object newVal= curr.getNewValue(); if (newVal != null) { res.add(newVal); } } return res; }
public Object getOriginalValue(ASTNode parent, StructuralPropertyDescriptor property) { RewriteEvent event= getEvent(parent, property); if (event != null) { return event.getOriginalValue(); } return accessOriginalValue(parent, property); }