Changeset 680
- Timestamp:
- 11/22/06 21:42:23 (4 years ago)
- Location:
- Jupe
- Files:
-
- 1 added
- 5 modified
-
src/org/jupe/plugin/JupePlugin.java (modified) (2 diffs)
-
src/org/jupe/source/java/AbstractJavaElement.java (added)
-
src/org/jupe/source/java/JavaPackage.java (modified) (8 diffs)
-
src/org/jupe/source/java/JavaSource.java (modified) (4 diffs)
-
unittests/org/jupe/source/java/JavaPackageTest.java (modified) (3 diffs)
-
unittests/org/jupe/unittest/AbstractProjectTestCase.java (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Jupe/src/org/jupe/plugin/JupePlugin.java
r673 r680 28 28 import org.eclipse.jface.resource.ImageDescriptor; 29 29 import org.eclipse.jface.resource.ImageRegistry; 30 import org.eclipse.swt.widgets.Shell; 30 31 import org.eclipse.ui.plugin.AbstractUIPlugin; 31 32 import org.eclipse.uml2.uml.Model; … … 427 428 return null; 428 429 } 429 430 430 431 } -
Jupe/src/org/jupe/source/java/JavaPackage.java
r679 r680 4 4 package org.jupe.source.java; 5 5 6 import org.eclipse.jdt.core.IJavaElement; 7 import org.eclipse.jdt.core.IPackageFragment; 8 import org.eclipse.jdt.core.JavaModelException; 9 import org.eclipse.jdt.ui.refactoring.RenameSupport; 10 import org.eclipse.ui.IWorkbenchWindow; 11 import org.jupe.plugin.JupePlugin; 12 import org.jupe.plugin.exceptions.JupeExceptionLogOnly; 6 13 import org.jupe.source.ISourceClass; 7 14 import org.jupe.source.ISourcePackage; … … 10 17 /** 11 18 * @author Michael Pradel 12 * 19 * 13 20 */ 14 public class JavaPackage implements ISourcePackage {21 public class JavaPackage extends AbstractJavaElement implements ISourcePackage { 15 22 16 /* (non-Javadoc) 23 private String absoluteName; 24 25 protected JavaPackage(JavaSource javaSource, String absoluteName) { 26 super(javaSource); 27 this.absoluteName = absoluteName; 28 } 29 30 /* 31 * (non-Javadoc) 32 * 17 33 * @see org.jupe.source.ISourcePackage#createClass(java.lang.String) 18 34 */ … … 22 38 } 23 39 24 /* (non-Javadoc) 40 /* 41 * (non-Javadoc) 42 * 25 43 * @see org.jupe.source.ISourcePackage#createInterface(java.lang.String) 26 44 */ … … 30 48 } 31 49 32 /* (non-Javadoc) 50 /* 51 * (non-Javadoc) 52 * 33 53 * @see org.jupe.source.ISourcePackage#createPackage(java.lang.String) 34 54 */ 35 55 public ISourcePackage createPackage(String name) { 36 // TODO Auto-generated method stub 37 return null; 56 if (name == null || name.equals("")) { 57 throw new IllegalArgumentException("name cannot be " + name); 58 } 59 60 StringBuffer newName = new StringBuffer(getPackageFragment() 61 .getElementName()); 62 newName.append("."); 63 newName.append(name); 64 try { 65 getSourceFolder().createPackageFragment(newName.toString(), true, 66 null); 67 } catch (JavaModelException e) { 68 throw new JupeExceptionLogOnly("problem while creating package " 69 + newName.toString() + " in " + " : " + e.toString()); 70 } 71 return new JavaPackage(javaSource, newName.toString()); 38 72 } 39 73 40 /* (non-Javadoc) 74 /* 75 * (non-Javadoc) 76 * 41 77 * @see org.jupe.source.ISourcePackage#deletePackage(java.lang.String) 42 78 */ … … 46 82 } 47 83 48 /* (non-Javadoc) 84 /* 85 * (non-Javadoc) 86 * 49 87 * @see org.jupe.source.ISourcePackage#deleteType(java.lang.String) 50 88 */ … … 54 92 } 55 93 56 /* (non-Javadoc) 94 /* 95 * (non-Javadoc) 96 * 57 97 * @see org.jupe.source.ISourcePackage#getName() 58 98 */ 59 99 public String getName() { 60 // TODO Auto-generated method stub61 return null;100 String[] splitted = absoluteName.split("\\."); 101 return splitted[splitted.length - 1]; 62 102 } 63 103 64 /* (non-Javadoc) 104 /* 105 * (non-Javadoc) 106 * 65 107 * @see org.jupe.source.ISourcePackage#getPackage(java.lang.String) 66 108 */ … … 70 112 } 71 113 72 /* (non-Javadoc) 114 /* 115 * (non-Javadoc) 116 * 73 117 * @see org.jupe.source.ISourcePackage#getType(java.lang.String) 74 118 */ … … 78 122 } 79 123 80 /* (non-Javadoc) 124 /* 125 * (non-Javadoc) 126 * 81 127 * @see org.jupe.source.ISourcePackage#setName(java.lang.String) 82 128 */ 83 129 public void setName(String newName) { 84 // TODO Auto-generated method stub 130 if (newName == null || newName.equals("")) { 131 throw new IllegalArgumentException("name cannot be " + newName); 132 } 85 133 134 // construct new absolute name 135 String[] splitted = absoluteName.split("\\."); 136 StringBuffer newAbsoluteName = new StringBuffer(); 137 for (int i = 0; i < splitted.length - 1; i++) { 138 String n = splitted[i]; 139 newAbsoluteName.append(n); 140 newAbsoluteName.append("."); 141 } 142 newAbsoluteName.append(newName); 143 144 // refactor: rename 145 renamePackage(getPackageFragment(), newAbsoluteName.toString()); 146 absoluteName = newAbsoluteName.toString(); 147 } 148 149 protected IPackageFragment getPackageFragment() { 150 return getSourceFolder().getPackageFragment(absoluteName); 151 } 152 153 // FIXME (Michi) continue here: should not rename package inside this class, 154 // but use instances of JavaPackage 155 156 private void renamePackage(IPackageFragment packageFragment, 157 String newAbsoluteName) { 158 String oldAbsoluteName = packageFragment.getElementName(); 159 // rename package itself 160 try { 161 RenameSupport renameSupport = RenameSupport.create( 162 getPackageFragment(), newAbsoluteName.toString(), 163 RenameSupport.UPDATE_GETTER_METHOD 164 & RenameSupport.UPDATE_REFERENCES 165 & RenameSupport.UPDATE_SETTER_METHOD); 166 IWorkbenchWindow window = JupePlugin.getDefault().getWorkbench() 167 .getActiveWorkbenchWindow(); 168 renameSupport.perform(window.getShell(), window); 169 } catch (Exception e) { 170 throw new JupeExceptionLogOnly("problem while renaming " 171 + absoluteName + " to " + newAbsoluteName + ": " 172 + e.toString()); 173 } 174 175 // recursively rename subpackages 176 try { 177 IJavaElement[] children = getPackageFragment().getChildren(); 178 for (int i = 0; i < children.length; i++) { 179 IJavaElement javaElement = children[i]; 180 if (javaElement instanceof IPackageFragment) { 181 String oldSubPkgName = javaElement.getElementName(); 182 String[] splitted = oldSubPkgName.split("\\."); 183 StringBuffer newSubPkgName = new StringBuffer(10); 184 newSubPkgName.append(newAbsoluteName); 185 newSubPkgName.append(splitted[splitted.length - 1]); 186 renamePackage((IPackageFragment) javaElement, newSubPkgName 187 .toString()); 188 } 189 } 190 } catch (JavaModelException e) { 191 throw new JupeExceptionLogOnly( 192 "problem while renaming subpackages of " + oldAbsoluteName 193 + ": " + e.toString()); 194 } 86 195 } 87 196 -
Jupe/src/org/jupe/source/java/JavaSource.java
r679 r680 47 47 import org.jupe.plugin.exceptions.JupeExceptionLogOnly; 48 48 import org.jupe.source.ISource; 49 import org.jupe.source.ISourceClass; 50 import org.jupe.source.ISourcePackage; 51 import org.jupe.source.ISourceType; 49 52 import org.jupe.synchronisation.SyncBlock; 50 53 … … 53 56 * 54 57 */ 55 public class JavaSource extends JavaPackageimplements ISource {58 public class JavaSource extends AbstractJavaElement implements ISource { 56 59 57 60 public static String javaSourceID = "JavaSource"; … … 61 64 public JavaSource(final IProject project) { 62 65 this.workspaceProject = project; 66 javaSource = this; 63 67 } 64 68 … … 304 308 } 305 309 310 public ISourceClass createClass(String name) { 311 // TODO Auto-generated method stub 312 return null; 313 } 314 315 public ISourceType createInterface(String name) { 316 // TODO Auto-generated method stub 317 return null; 318 } 319 320 public ISourcePackage createPackage(String name) { 321 try { 322 getSourceFolder().createPackageFragment( 323 name.toString(), true, null); 324 } catch (JavaModelException e) { 325 throw new JupeExceptionLogOnly(e, "problem while creating package in default package " 326 + name.toString()); 327 } 328 return new JavaPackage(javaSource, name); 329 } 330 331 public void deletePackage(String name) { 332 // TODO Auto-generated method stub 333 334 } 335 336 public void deleteType(String name) { 337 // TODO Auto-generated method stub 338 339 } 340 341 public ISourcePackage getPackage(String name) { 342 // TODO Auto-generated method stub 343 return null; 344 } 345 346 public ISourceType getType(String name) { 347 // TODO Auto-generated method stub 348 return null; 349 } 350 306 351 } -
Jupe/unittests/org/jupe/source/java/JavaPackageTest.java
r679 r680 3 3 */ 4 4 package org.jupe.source.java; 5 6 import java.lang.reflect.Method; 5 7 6 8 import org.eclipse.jdt.core.IPackageFragment; … … 26 28 27 29 @Test 28 public void test GetName(){30 public void testSetName() throws Exception { 29 31 assertEquals(initialName, sourcePackage.getName()); 30 32 … … 33 35 34 36 assertEquals(newName, sourcePackage.getName()); 37 38 // test unexpected arguments 39 Method method = JavaPackage.class.getMethod("setName", new Class[] {String.class}); 40 testNullArgument(sourcePackage, method); 41 testWrongArgument(sourcePackage, method, new Object[] {null}); 35 42 } 36 43 37 44 @Test 38 public void testCreatePackage() {45 public void testCreatePackage() throws Exception { 39 46 assertNotNull(sourcePackage); 40 IPackageFragment realPkg = getSourceFolder().getPackageFragment(initialName); 47 IPackageFragment realPkg = getSourceFolder().getPackageFragment( 48 initialName); 41 49 assertNotNull(realPkg); 42 50 assertTrue(realPkg.exists()); 43 51 44 52 // create package in package 45 53 String innerPkgName = "inner"; 46 54 ISourcePackage innerPkg = sourcePackage.createPackage(innerPkgName); 47 55 assertNotNull(innerPkg); 48 realPkg = getSourceFolder().getPackageFragment(initialName + "." + innerPkgName); 56 realPkg = getSourceFolder().getPackageFragment( 57 initialName + "." + innerPkgName); 49 58 assertNotNull(realPkg); 50 assertTrue(realPkg.exists()); 59 assertTrue(realPkg.exists()); 60 61 // test unusual arguments 62 Method method = JavaPackage.class.getMethod("createPackage", 63 new Class[] { String.class }); 64 testNullArgument(sourcePackage, method); 65 testWrongArgument(sourcePackage, method, new Object[] { "" }); 66 67 // try to create package a second time -> should have the same name as 68 // before 69 assertEquals(innerPkg.getName(), sourcePackage.createPackage( 70 innerPkgName).getName()); 51 71 52 // FIXME (Michi) continue here... 72 // change name of outer package 73 String newOuterName = "newOuter"; 74 sourcePackage.setName(newOuterName); 75 assertEquals(newOuterName, sourcePackage.getName()); 76 assertEquals(innerPkgName, innerPkg.getName()); 77 realPkg = getSourceFolder().getPackageFragment(newOuterName + "." + innerPkgName); 78 assertNotNull(realPkg); 79 assertTrue(realPkg.exists()); 53 80 54 // test unusual arguments 55 56 // create package a second time 57 81 // change name of inner package 82 innerPkgName = "newInner"; 83 innerPkg.setName(innerPkgName); 84 assertEquals(newOuterName, sourcePackage.getName()); 85 assertEquals(innerPkgName, innerPkg.getName()); 86 realPkg = getSourceFolder().getPackageFragment(newOuterName + "." + innerPkgName); 87 assertNotNull(realPkg); 88 assertTrue(realPkg.exists()); 58 89 } 59 90 -
Jupe/unittests/org/jupe/unittest/AbstractProjectTestCase.java
r614 r680 24 24 import java.io.File; 25 25 import java.io.FileInputStream; 26 import java.lang.reflect.InvocationTargetException; 27 import java.lang.reflect.Method; 26 28 27 29 import junit.framework.TestCase; … … 61 63 62 64 protected UML2ModelFinder modelFinder; 63 64 private IEditorPart diagramEditor; 65 65 66 private IEditorPart diagramEditor; 67 66 68 @Override 67 69 public void setUp() throws Exception { … … 77 79 78 80 IEditorInput editorInput = new FileEditorInput(file); 79 diagramEditor = plugin.getWorkbench() 80 .getActiveWorkbenchWindow().getActivePage().openEditor( 81 editorInput, ClassDiagramEditor.ID); 81 diagramEditor = plugin.getWorkbench().getActiveWorkbenchWindow() 82 .getActivePage().openEditor(editorInput, ClassDiagramEditor.ID); 82 83 83 84 // Is there a more elegant solution? … … 101 102 public void tearDown() throws Exception { 102 103 super.tearDown(); 103 plugin.getWorkbench() 104 .getActiveWorkbenchWindow().getActivePage().closeEditor(diagramEditor, false);104 plugin.getWorkbench().getActiveWorkbenchWindow().getActivePage() 105 .closeEditor(diagramEditor, false); 105 106 plugin.removeJupeProject(jupeProject); 106 107 testProject.dispose(); … … 123 124 } 124 125 126 // FIXME comment 127 protected void testNullArgument(Object object, Method method) 128 throws Exception { 129 Object[] arguments = new Object[method.getParameterTypes().length]; 130 for (int i = 0; i < method.getParameterTypes().length; i++) { 131 arguments[i] = null; 132 } 133 boolean thrown = false; 134 try { 135 method.invoke(object, arguments); 136 } catch (InvocationTargetException e) { 137 if (e.getTargetException() instanceof IllegalArgumentException) { 138 thrown = true; 139 } 140 } 141 assertTrue(thrown); 142 } 143 144 // FIXME comment 145 protected void testWrongArgument(Object object, Method method, 146 Object[] arguments) throws Exception { 147 boolean thrown = false; 148 try { 149 method.invoke(object, arguments); 150 } catch (InvocationTargetException e) { 151 if (e.getTargetException() instanceof IllegalArgumentException) { 152 thrown = true; 153 } 154 } 155 assertTrue(thrown); 156 } 157 125 158 }
