Repository: incubator-netbeans-tools Updated Branches: refs/heads/master 0ff2a41d4 -> 4ca5ac77e
Allowing the license header to be in the second comment in the file, increasing the limit where it must start to 300. Project: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/commit/4ca5ac77 Tree: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/tree/4ca5ac77 Diff: http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/diff/4ca5ac77 Branch: refs/heads/master Commit: 4ca5ac77ecdf96297f91c8394409d825b5b98c13 Parents: 0ff2a41 Author: Jan Lahoda <jlah...@netbeans.org> Authored: Wed Oct 4 23:12:37 2017 +0200 Committer: Jan Lahoda <jlah...@netbeans.org> Committed: Wed Oct 4 23:12:37 2017 +0200 ---------------------------------------------------------------------- convert/src/convert/CategorizeLicenses.java | 23 ++++++++++++++++---- .../test/convert/CategorizeLicensesTest.java | 14 ++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/blob/4ca5ac77/convert/src/convert/CategorizeLicenses.java ---------------------------------------------------------------------- diff --git a/convert/src/convert/CategorizeLicenses.java b/convert/src/convert/CategorizeLicenses.java index 7f303a8..98bfd35 100644 --- a/convert/src/convert/CategorizeLicenses.java +++ b/convert/src/convert/CategorizeLicenses.java @@ -158,14 +158,23 @@ public class CategorizeLicenses { .orElse(null); } - private static Description snipLicense(String code, String commentStart, String commentEnd, String normalizeLines, CommentType commentType) { + public static Description snipLicense(String code, String commentStart, String commentEnd, String normalizeLines, CommentType commentType) { Matcher startM = Pattern.compile(commentStart).matcher(code); - if (!startM.find() || startM.start() > 100) //only first 100 characters + if (!startM.find() || startM.start() > LIMIT) //only first 150 characters return null; Matcher endM = Pattern.compile(commentEnd).matcher(code); if (!endM.find(startM.end())) return null; String lic = code.substring(startM.end(), endM.start()); + if (!isLicenseText(lic)) { + startM = Pattern.compile(commentStart).matcher(code); + if (!startM.find(endM.end()) || startM.start() > LIMIT) //only first 150 characters + return null; + endM = Pattern.compile(commentEnd).matcher(code); + if (!endM.find(startM.end())) + return null; + lic = code.substring(startM.end(), endM.start()); + } if (normalizeLines != null) { lic = Arrays.stream(lic.split("\n")) .map(l -> l.replaceAll(normalizeLines, "")) @@ -173,7 +182,9 @@ public class CategorizeLicenses { } return createUnifiedDescriptionOrNull(startM.start(), endM.end(), lic, commentType); } - + + private static final int LIMIT = 300; + public static Description snipLicenseBundle(String code, String firstLinePattern, String commentMarker, CommentType commentType) { StringBuilder res = new StringBuilder(); boolean firstLine = true; @@ -212,7 +223,7 @@ public class CategorizeLicenses { } private static Description createUnifiedDescriptionOrNull(int start, int end, String lic, CommentType commentType) { - if (lic != null && (lic.contains("CDDL") || lic.contains("Redistribution") || lic.contains("Apache License"))) { + if (lic != null && isLicenseText(lic)) { if (start == (-1)) { throw new IllegalStateException(); } @@ -229,6 +240,10 @@ public class CategorizeLicenses { return null; } + private static boolean isLicenseText(String text) { + return text.contains("CDDL") || text.contains("Redistribution") || text.contains("Apache License"); + } + public static class Description { public final int start; public final int end; http://git-wip-us.apache.org/repos/asf/incubator-netbeans-tools/blob/4ca5ac77/convert/test/convert/CategorizeLicensesTest.java ---------------------------------------------------------------------- diff --git a/convert/test/convert/CategorizeLicensesTest.java b/convert/test/convert/CategorizeLicensesTest.java index 960b2a3..cc6c74a 100644 --- a/convert/test/convert/CategorizeLicensesTest.java +++ b/convert/test/convert/CategorizeLicensesTest.java @@ -48,4 +48,18 @@ public class CategorizeLicensesTest { assertEquals("#CDDL\n#\n#lic\n", code.substring(desc.start, desc.end)); } + @Test + public void testSecondComment() { + final String code = "<!--first-->\n" + + "<!--CDDL-->\n" + + "\n"; + CategorizeLicenses.Description desc = + CategorizeLicenses.snipLicense(code, + "<!--", + "-->", + null, + CategorizeLicenses.CommentType.XML); + assertEquals("CDDL", desc.header); + } + }