KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > debug > core > refactoring > MethodBreakpointTypeChange


1 /*******************************************************************************
2  * Copyright (c) 2005, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.jdt.internal.debug.core.refactoring;
12
13 import java.util.HashMap JavaDoc;
14 import java.util.Map JavaDoc;
15
16 import org.eclipse.core.resources.IResource;
17 import org.eclipse.core.runtime.CoreException;
18 import org.eclipse.core.runtime.IProgressMonitor;
19 import org.eclipse.jdt.core.IMethod;
20 import org.eclipse.jdt.core.IType;
21 import org.eclipse.jdt.core.Signature;
22 import org.eclipse.jdt.debug.core.IJavaMethodBreakpoint;
23 import org.eclipse.jdt.debug.core.JDIDebugModel;
24 import org.eclipse.jdt.internal.debug.ui.BreakpointUtils;
25 import org.eclipse.ltk.core.refactoring.Change;
26
27 import com.ibm.icu.text.MessageFormat;
28
29 /**
30  * @since 3.2
31  *
32  */

33 public class MethodBreakpointTypeChange extends MethodBreakpointChange {
34
35     private IType fDestType;
36     
37     public MethodBreakpointTypeChange(IJavaMethodBreakpoint breakpoint, IType destType) throws CoreException {
38         super(breakpoint);
39         fDestType = destType;
40     }
41     /* (non-Javadoc)
42      * @see org.eclipse.ltk.core.refactoring.Change#getName()
43      */

44     public String JavaDoc getName() {
45         String JavaDoc msg = MessageFormat.format(RefactoringMessages.MethodBreakpointTypeChange_1, new String JavaDoc[] {getBreakpointLabel(getOriginalBreakpoint())});
46         if(!"".equals(fDestType.getElementName())) { //$NON-NLS-1$
47
msg = MessageFormat.format(RefactoringMessages.MethodBreakpointTypeChange_0,
48                 new String JavaDoc[] {getBreakpointLabel(getOriginalBreakpoint()), fDestType.getElementName()});
49         }
50         return msg;
51     }
52
53     /* (non-Javadoc)
54      * @see org.eclipse.ltk.core.refactoring.Change#perform(org.eclipse.core.runtime.IProgressMonitor)
55      */

56     public Change perform(IProgressMonitor pm) throws CoreException {
57         String JavaDoc[] parameterTypes = Signature.getParameterTypes(getSignature());
58         for (int i = 0; i < parameterTypes.length; i++) {
59             parameterTypes[i] = parameterTypes[i].replace('/', '.');
60             
61         }
62         IMethod destMethod = fDestType.getMethod(getMethodName(), parameterTypes);
63         if (!destMethod.exists()) {
64             // find the similar method, as source methods have unqualified signatures
65
IMethod[] methods = fDestType.getMethods();
66             for (int i = 0; i < methods.length; i++) {
67                 if (methods[i].isSimilar(destMethod)) {
68                     destMethod = methods[i];
69                     break;
70                 }
71             }
72         }
73         Map JavaDoc map = new HashMap JavaDoc();
74         BreakpointUtils.addJavaBreakpointAttributes(map, destMethod);
75         IResource resource = BreakpointUtils.getBreakpointResource(destMethod);
76         int[] range = getNewLineNumberAndRange(destMethod);
77         IJavaMethodBreakpoint breakpoint = JDIDebugModel.createMethodBreakpoint(
78                 resource,
79                 fDestType.getFullyQualifiedName(),
80                 getMethodName(),
81                 getSignature(),
82                 isEntry(),
83                 isExit(),
84                 isNativeOnly(),
85                 range[0],
86                 range[1],
87                 range[2],
88                 getHitCount(),
89                 true,
90                 map);
91         apply(breakpoint);
92         getOriginalBreakpoint().delete();
93         return new DeleteBreakpointChange(breakpoint);
94     }
95
96 }
97
Popular Tags