r1044 - in trunk/eugene/src: main/java/org/nuiton/eugene main/java/org/nuiton/eugene/java/extension test/java/org/nuiton/eugene/java/extension
Author: tchemit Date: 2011-01-31 19:08:12 +0100 (Mon, 31 Jan 2011) New Revision: 1044 Url: http://nuiton.org/repositories/revision/eugene/1044 Log: Improve importerManager Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2011-01-31 13:32:42 UTC (rev 1043) +++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2011-01-31 18:08:12 UTC (rev 1044) @@ -165,6 +165,21 @@ return false; } String type = attribute.getType(); + return isPrimitiveType(type); +// return "byte".equals(type) || "short".equals(type) +// || "int".equals(type) || "long".equals(type) +// || "float".equals(type) || "double".equals(type) +// || "char".equals(type) || "boolean".equals(type); + } + + /** + * Tests if the given type is a primitive type. + * + * @param type the type to test + * @return {@code true} if given type is primitive. + * @since 2.3.2 + */ + public static boolean isPrimitiveType(String type) { return "byte".equals(type) || "short".equals(type) || "int".equals(type) || "long".equals(type) || "float".equals(type) || "double".equals(type) Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java 2011-01-31 13:32:42 UTC (rev 1043) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java 2011-01-31 18:08:12 UTC (rev 1044) @@ -120,22 +120,29 @@ if (fqn.trim().isEmpty() || fqn.startsWith("java.lang.") && lastDotIndex == 9) { + + // reacts as if it was imported return true; } // Exclude primitive types if (primitiveTypes.contains(fqn)) { - return true; + + // was not imported + return false; } if (JavaGeneratorUtil.containsGenerics(fqn)) { // Generics case : String[] parts = JavaGeneratorUtil.splitGeneric(fqn); - for (String part : parts) { - if (addImport(part)) { - return true; - } + boolean doImport = false; + if (addImport(parts[0])) { + doImport = true; } - return false; + for (int i = 1, partsLength = parts.length; i < partsLength; i++) { + String part = parts[i]; + addImport(part); + } + return doImport; } // // Reject generics // if (fqn.contains("<") || fqn.contains(">")) { @@ -166,11 +173,6 @@ */ public String getType(String fqn) { boolean importResult = addImport(fqn); - if (!importResult) { - - // There is a conflict, do not use simple name - return fqn; - } if (JavaGeneratorUtil.containsGenerics(fqn)) { String[] parts = JavaGeneratorUtil.splitGeneric(fqn); @@ -180,6 +182,12 @@ } return JavaGeneratorUtil.joinGeneric(parts); } + + if (!importResult) { + + // There is a conflict, do not use simple name + return fqn; + } // No conflict, use simple name int packageEndIndex = getLastDotIndex(fqn); if (packageEndIndex == -1) { Modified: trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java 2011-01-31 13:32:42 UTC (rev 1043) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java 2011-01-31 18:08:12 UTC (rev 1044) @@ -125,6 +125,32 @@ } @Test + public void testGetImportsWithWildcard() throws Exception { + Assert.assertTrue(mgr.addImport("org.nuiton.eugene.*")); + Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); + Assert.assertTrue(mgr.addImport("org.nuiton.eugene.subpackage.Tata")); + List<String> imports = mgr.getImports("org.nuiton.eugene"); + Assert.assertEquals(1, imports.size()); + Assert.assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(0)); + + imports = mgr.getImports("org.nuiton"); + Assert.assertEquals(3, imports.size()); + // Check using alphabetic sort + Assert.assertEquals("org.nuiton.eugene.*", imports.get(0)); + Assert.assertEquals("org.nuiton.eugene.Toto", imports.get(1)); + Assert.assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(2)); + } + +@Test + public void testGetImportsWithGeneric() throws Exception { + Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto<String, java.util.File>")); + List<String> imports = mgr.getImports("org.nuiton.eugene"); + Assert.assertEquals(1, imports.size()); + Assert.assertEquals("java.util.File", imports.get(0)); + } + + + @Test public void testGetImports() throws Exception { Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
participants (1)
-
tchemit@users.nuiton.org