Author: echatellier Date: 2010-01-07 16:48:04 +0100 (Thu, 07 Jan 2010) New Revision: 785 Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java Log: Add a quick hack for test to pass Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-01-07 14:40:34 UTC (rev 784) +++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-01-07 15:48:04 UTC (rev 785) @@ -602,10 +602,16 @@ return result; } + /** + * Parse a fully qualified generic java type, and extract each + * imbricated types. + * + * @param str string to parse + * @return set of found types + */ public static Set<String> getTypesList(String str) { - String regex = "^(([\\w\\s\\?]*\\s))?([\\w\\.]+)((<)(.*)(>))?(\\(\\))?$"; - Pattern p = Pattern.compile(regex); + Pattern p = Pattern.compile("^(([\\w\\s\\?]*\\s))?([\\w\\.]+)((<)(.*)(>))?(\\(\\))?$"); Matcher m = p.matcher(str); Set<String> results = new HashSet<String>(); @@ -613,26 +619,14 @@ if (m.find()) { results.add(m.group(3)); if (m.group(6) != null) { // cas du type generic - for (String onepart : m.group(6).split("(\\s*,\\s*)")) { + // FIXME can not work in some case + if (m.group(6).matches("[^,]+<.*>")) { + results.addAll(getTypesList(m.group(6))); + } + else for (String onepart : m.group(6).split("(\\s*,\\s*)")) { results.addAll(getTypesList(onepart)); } } - /*if (m.group(2) != null) { // cas du extend ou du new - result += m.group(2); - } - result += m.group(4); - if (m.group(7) != null) { // cas du type generic - result += m.group(6); // < - String sep = ""; - for (String onepart : m.group(7).split("(\\s*,\\s*)")) { - result += sep + getSimpleName(onepart); - sep = ", "; - } - result += m.group(8); // > - } - if (m.group(9) != null) { // cas des () pour un new - result += m.group(9); - }*/ } return results; Modified: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-01-07 14:40:34 UTC (rev 784) +++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-01-07 15:48:04 UTC (rev 785) @@ -195,10 +195,20 @@ log.info(str + " -> " + results); assertEquals(4, results.size()); -// str = "java.util.List<java.util.Map<java.util.Date, java.lang.Integer>>"; -// results = GeneratorUtil.getTypesList(str); -// log.info(str + " -> " + results); -// assertEquals(4, results.size()); + str = "java.util.List<java.util.Map<java.util.Date, java.lang.Integer>>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(4, results.size()); + + str = "java.util.List<java.util.Map<java.util.Date, java.lang.Integer>>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(4, results.size()); + + //str = "java.util.TreeMap<java.util.ArrayList<java.util.Date>, java.util.SortedSet<java.lang.Number, java.lang.Double>>"; + //results = GeneratorUtil.getTypesList(str); + //log.info(str + " -> " + results); + //assertEquals(4, results.size()); // str = "<T extends org.nuiton.topia.TopiaEntity> T"; // results = GeneratorUtil.getTypesList(str);