r1720 - in trunk/src: it/update-header-file it/update-header-file/src/main/java/org/nuiton/license/plugin/test main/java/org/nuiton/license/plugin main/java/org/nuiton/license/plugin/header/transformer test/java/org/nuiton/license/plugin/header/transformer
Author: tchemit Date: 2010-04-08 22:00:56 +0200 (Thu, 08 Apr 2010) New Revision: 1720 Log: fix license header content formating + implements update only license Modified: trunk/src/it/update-header-file/pom.xml trunk/src/it/update-header-file/src/main/java/org/nuiton/license/plugin/test/MyBean.java trunk/src/it/update-header-file/verify.groovy trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java trunk/src/main/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformer.java trunk/src/main/java/org/nuiton/license/plugin/header/transformer/FileHeaderTransformer.java trunk/src/test/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformerTest.java Modified: trunk/src/it/update-header-file/pom.xml =================================================================== --- trunk/src/it/update-header-file/pom.xml 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/it/update-header-file/pom.xml 2010-04-08 20:00:56 UTC (rev 1720) @@ -25,8 +25,11 @@ <packaging>jar</packaging> - <inceptionYear>2010</inceptionYear> - + <inceptionYear>2012</inceptionYear> + + <organization> + <name>License Test</name> + </organization> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> Modified: trunk/src/it/update-header-file/src/main/java/org/nuiton/license/plugin/test/MyBean.java =================================================================== --- trunk/src/it/update-header-file/src/main/java/org/nuiton/license/plugin/test/MyBean.java 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/it/update-header-file/src/main/java/org/nuiton/license/plugin/test/MyBean.java 2010-04-08 20:00:56 UTC (rev 1720) @@ -1,4 +1,10 @@ package org.nuiton.license.plugin.test; +/** + * this class has no license, a new default one will be added. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.1 + */ public class MyBean { } Modified: trunk/src/it/update-header-file/verify.groovy =================================================================== --- trunk/src/it/update-header-file/verify.groovy 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/it/update-header-file/verify.groovy 2010-04-08 20:00:56 UTC (rev 1720) @@ -3,6 +3,14 @@ assert file.exists(); content = file.text; -//assert content.contains( 'Copyright' ); +assert content.contains( 'Copyright (C) 2012 License Test' ); +file = new File(basedir, 'src/main/java/org/nuiton/license/plugin/test/MyBean2.java'); +assert file.exists(); + +content = file.text; +assert content.contains( 'Copyright (C) 2010 Tony' ); +assert content.contains( 'do NOT update!' ); +assert !content.contains( 'Fake to be removed!' ); + return true; Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java 2010-04-08 20:00:56 UTC (rev 1720) @@ -5,6 +5,7 @@ import org.nuiton.license.plugin.header.FileHeader; import org.nuiton.license.plugin.header.FileHeaderFilter; import org.nuiton.license.plugin.header.FileHeaderProcessor; +import org.nuiton.license.plugin.header.transformer.AbstractFileHeaderTransformer; import org.nuiton.license.plugin.header.transformer.FileHeaderTransformer; import org.nuiton.license.plugin.model.License; import org.nuiton.license.plugin.model.LicenseStore; @@ -133,7 +134,12 @@ @Override protected void init() throws Exception { + if (getLog().isDebugEnabled()) { + // always be verbose in debug mode + setVerbose(true); + } + if (skipUpdateHeader) { return; } @@ -153,54 +159,20 @@ // check that license project is sane (known licenses + header types) // + populate default license name in LicenseSet (with main License) validateProjectfile(licenseProject, licenseStore, transformers); - - } @Override protected void doAction() throws Exception { // create a file header processor which updates license content only - FileHeaderProcessor processor = new FileHeaderProcessor() { + FileHeaderProcessor processor = new UpdateHeaderLicenseProcessor(); - @Override - public FileHeaderFilter newFilter(FileHeader header, FileHeaderTransformer transformer) { - return new FileHeaderFilter(header, transformer) { - @Override - protected String treateHeader(String ch) { - - // unbox comment - String unbox = transformer.unboxComent(ch); - - // obtain current license of file - - FileHeader fileHeader = transformer.toFileHeader(unbox); - - // updates license - fileHeader.setLicense(header.getLicense()); - - // build new brut header (with no boxing) - - String newHeader = transformer.toString(fileHeader); - - //TODO-TC-20100408 must box header with comment prefix - - // box with process tag - newHeader = transformer.boxProcessTag(newHeader); - - if (getLog().isDebugEnabled()) { - getLog().debug("new Header =\n" + newHeader); - } - return newHeader; - } - }; - } - }; - for (LicenseSet licenseSet : licenseProject.getLicenseSets()) { String licenseName = licenseSet.getLicenseName(); License license = licenseStore.getLicense(licenseName); + getLog().info("process license \n" + license.getDescription()); + // file header to use if no header is found on a file FileHeader defaultFileHeader = buildDefaultFileHeader( license, @@ -235,13 +207,13 @@ transformers.get(fileSet.getHeaderType()); processor.setTransformer(transformer); - updateHeader(processor, filestoTreate); + updateFiles(processor, filestoTreate); } } } - public void updateHeader(FileHeaderProcessor processor, - Map<File, String[]> filestoTreate) throws IOException { + public void updateFiles(FileHeaderProcessor processor, + Map<File, String[]> filestoTreate) throws IOException { FileHeaderTransformer transformer = processor.getTransformer(); FileHeader header = processor.getHeader(); @@ -252,7 +224,7 @@ String defaultFullHeaderContent = transformer.boxProcessTag(defaultHeaderContent); getLog().info("default header (process tag boxed) :\n" + defaultFullHeaderContent); - defaultFullHeaderContent = transformer.boxComment(defaultFullHeaderContent); + defaultFullHeaderContent = transformer.boxComment(defaultFullHeaderContent, true); getLog().info("default header to use :\n" + defaultFullHeaderContent); for (Map.Entry<File, String[]> entry : filestoTreate.entrySet()) { @@ -270,21 +242,25 @@ public void updateFile(FileHeaderProcessor processor, File file, String defaultFullHeaderContent) throws IOException { - getLog().info("scan file " + file); + getLog().debug("scan file " + file); - if (isVerbose()) { - getLog().info("process file " + file); - } // file where to writeFile result File processFile = new File(file.getAbsolutePath() + "_" + timestamp); + if (isVerbose()) { + getLog().info("process file " + file); + } + try { processor.process(file, processFile); - boolean foundLicenseHeader = processor.isTouched(); + boolean touched = processor.isTouched(); - if (!foundLicenseHeader) { + if (touched) { + + getLog().info("header was updated for " + file); + } else { if (processor.isDetectHeader()) { getLog().warn( "skip file " + file + @@ -442,11 +418,54 @@ Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); Integer lastYear = cal.get(Calendar.YEAR); - if (firstYear.equals(lastYear)) { + if (firstYear < lastYear) { result.setCopyrightLastYear(lastYear); } result.setCopyrightHolder(copyrightHolder); return result; } + public class UpdateHeaderLicenseProcessor extends FileHeaderProcessor { + + @Override + public FileHeaderFilter newFilter(FileHeader header, FileHeaderTransformer transformer) { + return new FileHeaderFilter(header, transformer) { + @Override + protected String treateHeader(String ch) { + + // unbox comment + String unbox = transformer.unboxComent(ch); + + // obtain current license of file + + FileHeader fileHeader = transformer.toFileHeader(unbox); + + // updates license + fileHeader.setLicense(header.getLicense()); + + // build new brut header (with no boxing) + + String newHeader = transformer.toString(fileHeader); + + // box with process tag + newHeader = transformer.boxProcessTag(newHeader); + + // box header with comment prefix + newHeader = transformer.boxComment(newHeader, false); + + int index = newHeader.indexOf(transformer.getProcessStartTag()); + + String result = newHeader.substring(index); + while (result.charAt(result.length() - 1) == AbstractFileHeaderTransformer.LINE_SEPARATOR) { + result = result.substring(0, result.length() - 1); + } + if (isVerbose()) { + getLog().debug("new Header =\n" + result); + } + + return result; + } + }; + } + } } Modified: trunk/src/main/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformer.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformer.java 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/main/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformer.java 2010-04-08 20:00:56 UTC (rev 1720) @@ -6,11 +6,9 @@ import java.util.regex.Pattern; /** - * Abstract implementation of {@link FileHeaderTransformer} which does NOT deal - * with the boxing-unboxing part, but just with transformation methods, since - * they are common to any transformer. + * Abstract implementation of {@link FileHeaderTransformer}. * <p/> - * Concrete implementation should just has to deal with to boxing stuff. + * Concrete implementation should only have to give comment configuration. * * @author tchemit <chemit@codelutin.com> * @since 2.1 @@ -219,15 +217,19 @@ } @Override - public String boxComment(String header) { + public String boxComment(String header, boolean withTags) { StringBuilder buffer = new StringBuilder(); - buffer.append(getCommentStartTag()).append(LINE_SEPARATOR); + if (withTags) { + buffer.append(getCommentStartTag()).append(LINE_SEPARATOR); + } for (String line : header.split(LINE_SEPARATOR + "")) { buffer.append(getCommentLinePrefix()); buffer.append(line); buffer.append(LINE_SEPARATOR); } - buffer.append(getCommentEndTag()).append(LINE_SEPARATOR); + if (withTags) { + buffer.append(getCommentEndTag()).append(LINE_SEPARATOR); + } return buffer.toString(); } @@ -254,7 +256,6 @@ return buffer.toString(); } - @Override public String boxProcessTag(String header) { StringBuilder buffer = new StringBuilder(); Modified: trunk/src/main/java/org/nuiton/license/plugin/header/transformer/FileHeaderTransformer.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/header/transformer/FileHeaderTransformer.java 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/main/java/org/nuiton/license/plugin/header/transformer/FileHeaderTransformer.java 2010-04-08 20:00:56 UTC (rev 1720) @@ -3,7 +3,7 @@ import org.nuiton.license.plugin.header.FileHeader; /** - * Contract to transform a file header to {@link org.nuiton.license.plugin.header.FileHeader} in both way : + * Contract to transform a file header to {@link FileHeader} in both way : * <p/> * <ul> * <li>Obtain a object representation of a file header from a existing file @@ -15,7 +15,7 @@ * Moreover the contract offers tow method to box and unbox a String * representation of a header content : * <ul> - * <li>{@link #boxComment(String)}</li> + * <li>{@link #boxComment(String, boolean)}</li> * <li>{@link #unboxComent(String)}</li> * </ul> * @@ -28,7 +28,7 @@ String ROLE_NAME = FileHeaderTransformer.class.getName(); /** default section delimiter */ - String DEFAULT_SECTION_DELIMITER = "%--"; + String DEFAULT_SECTION_DELIMITER = "--"; /** default process start tag */ String DEFAULT_PROCESS_START_TAG = "#%L"; @@ -118,9 +118,10 @@ * Box the given {@code header} in a comment. * * @param header the header content WITHOUT any comment boxing + * @param withTags flag to add start and end comment tags. * @return the header content WITH comment boxing */ - String boxComment(String header); + String boxComment(String header, boolean withTags); /** * Unbox the given boxed {@code boxedHeader} to obtain the header content. @@ -152,7 +153,7 @@ String unboxProcessTag(String boxedHeader); /** - * Build a {@link org.nuiton.license.plugin.header.FileHeader} from an UNBOXED header content. + * Build a {@link FileHeader} from an UNBOXED header content. * * @param header unboxed header content * @return The model of the header content Modified: trunk/src/test/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformerTest.java =================================================================== --- trunk/src/test/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformerTest.java 2010-04-08 17:55:28 UTC (rev 1719) +++ trunk/src/test/java/org/nuiton/license/plugin/header/transformer/AbstractFileHeaderTransformerTest.java 2010-04-08 20:00:56 UTC (rev 1720) @@ -192,7 +192,7 @@ String boxedHeader; header = transformer.toString(model1); - boxedHeader = transformer.boxComment(header); + boxedHeader = transformer.boxComment(header, true); Assert.assertEquals( COMMENT_START_TAG + LINE_SEPARATOR + @@ -205,8 +205,20 @@ boxedHeader ); + boxedHeader = transformer.boxComment(header, false); + + Assert.assertEquals( + COMMENT_LINE_PREFIX + "Description" + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + "Copyright (C) 2010 Tony" + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + "License" + LINE_SEPARATOR, + boxedHeader + ); + header = transformer.toString(model2); - boxedHeader = transformer.boxComment(header); + + boxedHeader = transformer.boxComment(header, true); Assert.assertEquals( COMMENT_START_TAG + LINE_SEPARATOR + COMMENT_LINE_PREFIX + "Description2" + LINE_SEPARATOR + @@ -217,6 +229,16 @@ COMMENT_END_TAG + LINE_SEPARATOR, boxedHeader ); + + boxedHeader = transformer.boxComment(header, false); + Assert.assertEquals( + COMMENT_LINE_PREFIX + "Description2" + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + "Copyright (C) 2010 - 2012 Tony2" + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + DEFAULT_SECTION_DELIMITER + LINE_SEPARATOR + + COMMENT_LINE_PREFIX + "License2" + LINE_SEPARATOR, + boxedHeader + ); } @Test @@ -226,13 +248,13 @@ String unboxedHeader; header = transformer.toString(model1); - boxedHeader = transformer.boxComment(header); + boxedHeader = transformer.boxComment(header, true); unboxedHeader = transformer.unboxComent(boxedHeader); Assert.assertEquals(header, unboxedHeader); header = transformer.toString(model2); - boxedHeader = transformer.boxComment(header); + boxedHeader = transformer.boxComment(header, true); unboxedHeader = transformer.unboxComent(boxedHeader); Assert.assertEquals(header, unboxedHeader);
participants (1)
-
tchemit@users.nuiton.org