Maven-license-plugin-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- 268 discussions
06 Apr '10
Author: tchemit
Date: 2010-04-06 18:44:13 +0200 (Tue, 06 Apr 2010)
New Revision: 1711
Log:
delete repository package + introduce model package + move new licenses (was in wrong package)
Removed:
trunk/src/main/java/org/nuiton/license/plugin/repository/
1
0
06 Apr '10
Author: tchemit
Date: 2010-04-06 18:43:34 +0200 (Tue, 06 Apr 2010)
New Revision: 1710
Log:
delete repository package + introduce model package + move new licenses (was in wrong package)
Added:
trunk/src/main/java/org/nuiton/license/plugin/model/
trunk/src/main/java/org/nuiton/license/plugin/model/License.java
trunk/src/main/java/org/nuiton/license/plugin/model/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/model/LicenseStore.java
trunk/src/main/resources/META-INF/licenses/agpl_v3/
trunk/src/main/resources/META-INF/licenses/agpl_v3/header.txt
trunk/src/main/resources/META-INF/licenses/agpl_v3/license.txt
trunk/src/main/resources/META-INF/licenses/fdl_v1_3/
trunk/src/main/resources/META-INF/licenses/fdl_v1_3/header.txt
trunk/src/main/resources/META-INF/licenses/fdl_v1_3/license.txt
trunk/src/test/java/org/nuiton/license/plugin/model/
trunk/src/test/java/org/nuiton/license/plugin/model/LicenseRepositoryTest.java
trunk/src/test/java/org/nuiton/license/plugin/model/LicenseStoreTest.java
Removed:
trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
trunk/src/main/resources/license/agpl_v3/
trunk/src/main/resources/license/fdl_v1_3/
Modified:
trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java
trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
trunk/src/main/resources/META-INF/licenses/licenses.properties
Modified: trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -2,7 +2,7 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
-import org.nuiton.license.plugin.repository.LicenseStore;
+import org.nuiton.license.plugin.model.LicenseStore;
import org.nuiton.plugin.AbstractPlugin;
import java.io.IOException;
Modified: trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -20,8 +20,8 @@
*/
package org.nuiton.license.plugin;
-import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseStore;
+import org.nuiton.license.plugin.model.License;
+import org.nuiton.license.plugin.model.LicenseStore;
import org.nuiton.plugin.PluginHelper;
import java.io.File;
@@ -140,15 +140,6 @@
LicenseStore licenseStore = createLicenseStore(extraResolver);
license = licenseStore.getLicense(licenseName);
-// LicenseRepository factory =
-// LicenseRepositoryFactory.newLicenseRepository(
-// true,
-// true,
-// extraResolver
-// );
-//
-// license = factory.getLicense(licenseName);
-
if (licenseFilename == null || licenseFilename.isEmpty()) {
licenseFilename = licenseName;
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -22,8 +22,8 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseStore;
+import org.nuiton.license.plugin.model.License;
+import org.nuiton.license.plugin.model.LicenseStore;
import java.io.IOException;
@@ -86,48 +86,11 @@
} catch (IOException ex) {
throw new MojoExecutionException(
"could not instanciate license with name " +
- licenseName + " for reason " + ex.getMessage(), ex);
+ licenseName + " for reason " + ex.getMessage(), ex);
}
}
}
getLog().info(buffer.toString());
-// LicenseRepository factory;
-// try {
-// factory = LicenseRepositoryFactory.newLicenseRepository(
-// true,
-// true,
-// extraResolver
-// );
-// } catch (IllegalArgumentException ex) {
-// throw new MojoExecutionException(
-// "could not obtain the license repository", ex);
-// } catch (IOException ex) {
-// throw new MojoExecutionException(
-// "could not obtain the license repository", ex);
-// }
-//
-// for (LicenseDefinition entry : factory.getDefinitions()) {
-// String licenseName = entry.getName();
-// buffer.append(" * ");
-// buffer.append(licenseName);
-// buffer.append(" : ");
-// buffer.append(entry.getDescription());
-// buffer.append('\n');
-// if (detail) {
-// try {
-//
-// License license = factory.getLicense(licenseName);
-// buffer.append("\n");
-// buffer.append(license.getHeaderContent(encoding));
-// buffer.append("\n\n");
-// } catch (IOException ex) {
-// throw new MojoExecutionException(
-// "could not instanciate license with name " +
-// licenseName + " for reason " + ex.getMessage(), ex);
-// }
-// }
-// }
-// getLog().info(buffer.toString());
}
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,13 +1,9 @@
package org.nuiton.license.plugin;
-import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.velocity.VelocityComponent;
import org.nuiton.license.plugin.header.generator.HeaderGenerator;
-import org.nuiton.plugin.AbstractPlugin;
-import org.nuiton.plugin.PluginHelper;
+import org.nuiton.license.plugin.model.LicenseStore;
-import java.util.Arrays;
-import java.util.List;
import java.util.Map;
@@ -65,8 +61,17 @@
protected String licenseName;
/**
- * Un flag pour conserver un backup des fichiers modifies.
+ * To specify an external licenses repository resolver (says the base url
+ * of the repository).
*
+ * @parameter expression="${license.licenseResolver}"
+ * @since 2.1
+ */
+ protected String licenseResolver;
+
+ /**
+ * A flag to keep a backup of every modified file.
+ *
* @parameter expression="${license.keepBackup}" default-value="false"
* @since 1.0.0
*/
@@ -106,74 +111,79 @@
/** le timestamp utilise pour la generation */
protected long timestamp;
+ /** store of licenses */
+ protected LicenseStore licenseStore;
+
@Override
protected void init() throws Exception {
+ // init licenses store
+ licenseStore = createLicenseStore(licenseResolver);
}
@Override
protected void doAction() throws Exception {
}
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public String getLicenseName() {
+ return licenseName;
+ }
+
+ public String getInceptionYear() {
+ return inceptionYear;
+ }
+
+ public String getOrganizationName() {
+ return organizationName;
+ }
+
+ public boolean isKeepBackup() {
+ return keepBackup;
+ }
+
public boolean isDryRun() {
return dryRun;
}
+ public boolean isSkipUpdateHeader() {
+ return skipUpdateHeader;
+ }
+
public void setDryRun(boolean dryRun) {
this.dryRun = dryRun;
}
- public boolean isKeepBackup() {
- return keepBackup;
- }
-
public void setKeepBackup(boolean keepBackup) {
this.keepBackup = keepBackup;
}
- public long getTimestamp() {
- return timestamp;
- }
-
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
- public String getProjectName() {
- return projectName;
- }
-
public void setProjectName(String projectName) {
this.projectName = projectName;
}
- public boolean isSkipUpdateHeader() {
- return skipUpdateHeader;
- }
-
public void setSkipUpdateHeader(boolean skipUpdateHeader) {
this.skipUpdateHeader = skipUpdateHeader;
}
- public String getInceptionYear() {
- return inceptionYear;
- }
-
public void setInceptionYear(String inceptionYear) {
this.inceptionYear = inceptionYear;
}
- public String getLicenseName() {
- return licenseName;
- }
-
public void setLicenseName(String licenseName) {
this.licenseName = licenseName;
}
- public String getOrganizationName() {
- return organizationName;
- }
-
public void setOrganizationName(String organizationName) {
this.organizationName = organizationName;
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -27,8 +27,8 @@
import org.apache.velocity.context.Context;
import org.codehaus.plexus.velocity.VelocityComponent;
import org.nuiton.license.plugin.header.generator.HeaderGenerator;
-import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseStore;
+import org.nuiton.license.plugin.model.License;
+import org.nuiton.license.plugin.model.LicenseStore;
import org.nuiton.plugin.PluginHelper;
import org.nuiton.processor.LicenseProcessor;
Copied: trunk/src/main/java/org/nuiton/license/plugin/model/License.java (from rev 1709, trunk/src/main/java/org/nuiton/license/plugin/repository/License.java)
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/model/License.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/model/License.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,150 @@
+/*
+ * *##%
+ * Maven License Plugin
+ * Copyright (C) 2008 - 2010 CodeLutin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * ##%*
+ */
+package org.nuiton.license.plugin.model;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+import org.codehaus.plexus.util.IOUtil;
+import org.nuiton.plugin.PluginHelper;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+/**
+ * The model of a license.
+ *
+ * @author chemit
+ */
+public class License {
+
+ public static final String LICENSE_HEADER_FILE = "header.txt";
+
+ public static final String LICENSE_CONTENT_FILE = "license.txt";
+
+ /** base url of license (directory where to find license files) */
+ protected URL baseURL;
+
+ /** the name of the licenses (ex lgpl-3.0) */
+ protected String name;
+
+ /** the description of the license */
+ protected String description;
+
+ /** url of the license's content */
+ protected URL licenseURL;
+
+ /** url of the license header's content */
+ protected URL headerURL;
+
+ public License() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public URL getLicenseURL() {
+ if (licenseURL == null) {
+ licenseURL = PluginHelper.getUrl(getBaseURL(), LICENSE_CONTENT_FILE);
+ }
+ return licenseURL;
+ }
+
+ public URL getHeaderURL() {
+ if (headerURL == null) {
+ headerURL = PluginHelper.getUrl(getBaseURL(), LICENSE_HEADER_FILE);
+ }
+ return headerURL;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public URL getBaseURL() {
+ return baseURL;
+ }
+
+ public String getLicenseContent(String encoding) throws IOException {
+ if (licenseURL == null) {
+ throw new IllegalStateException("no licenseURL defined, can not obtain license content in " + this);
+ }
+
+ Reader r = new BufferedReader(
+ new InputStreamReader(getLicenseURL().openStream(), encoding));
+ try {
+ return IOUtil.toString(r);
+ } finally {
+ r.close();
+ }
+ }
+
+ public String getHeaderContent(String encoding) throws IOException {
+ if (baseURL == null) {
+ throw new IllegalStateException("no baseURL defined, can not obtain header content in " + this);
+ }
+ Reader r = new BufferedReader(
+ new InputStreamReader(getHeaderURL().openStream(), encoding));
+ try {
+ return IOUtil.toString(r);
+ } finally {
+ r.close();
+ }
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+// @Deprecated
+// public void setLicenseURL(URL licenseURL) {
+// this.licenseURL = licenseURL;
+// }
+//
+// @Deprecated
+// public void setHeaderURL(URL headerURL) {
+// this.headerURL = headerURL;
+// }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void setBaseURL(URL baseURL) {
+ this.baseURL = baseURL;
+ }
+
+ @Override
+ public String toString() {
+ ToStringBuilder builder = new ToStringBuilder(
+ this,
+ ToStringStyle.MULTI_LINE_STYLE
+ );
+ builder.append("name", name);
+ builder.append("description", description);
+ builder.append("licenseURL", getLicenseURL());
+ builder.append("headerURL", getHeaderURL());
+ return builder.toString();
+ }
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/model/License.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Copied: trunk/src/main/java/org/nuiton/license/plugin/model/LicenseRepository.java (from rev 1709, trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java)
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/model/LicenseRepository.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/model/LicenseRepository.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,264 @@
+/*
+ * *##%
+ * Maven License Plugin
+ * Copyright (C) 2008 - 2010 CodeLutin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * ##%*
+ */
+package org.nuiton.license.plugin.model;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.plugin.PluginHelper;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.*;
+import java.util.Map.Entry;
+
+/**
+ * @author chemit
+ * @since 1.0.3
+ */
+public class LicenseRepository implements Iterable<License> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(LicenseRepository.class);
+
+ public static final String REPOSITORY_DEFINITION_FILE = "licenses.properties";
+
+ /** the base url of the licenses repository */
+ protected URL baseURL;
+
+ /** licenses of this repository */
+ protected List<License> licenses;
+
+ /**
+ * flag to known if repository was init (pass to {@code true} when invoking
+ * the method {@link #load()}).
+ */
+ protected boolean init;
+
+ public LicenseRepository() {
+ }
+
+ public URL getBaseURL() {
+ return baseURL;
+ }
+
+ public void setBaseURL(URL baseURL) {
+ checkNotInit("setBaseURL");
+ this.baseURL = baseURL;
+ }
+
+ public void load() throws IOException {
+ checkNotInit("load");
+ try {
+ if (baseURL == null || baseURL.toString().trim().isEmpty()) {
+ throw new IllegalStateException(
+ "no baseURL defined in " + this);
+ }
+
+ URL definitionURL = PluginHelper.getUrl(
+ getBaseURL(),
+ REPOSITORY_DEFINITION_FILE
+ );
+ if (licenses != null) {
+ licenses.clear();
+ } else {
+ licenses = new ArrayList<License>();
+ }
+
+ if (!checkExists(definitionURL)) {
+ throw new IllegalArgumentException(
+ "no licenses.properties found withurl [" +
+ definitionURL + "] for resolver " + this);
+ }
+ Properties p = new Properties();
+ p.load(definitionURL.openStream());
+
+ for (Entry<Object, Object> entry : p.entrySet()) {
+ String licenseName = (String) entry.getKey();
+ licenseName = licenseName.trim().toLowerCase();
+ String licenseDescription = (String) entry.getValue();
+ URL licenseURL = PluginHelper.getUrl(baseURL, licenseName);
+
+ License license = new License();
+ license.setName(licenseName);
+ license.setDescription(licenseDescription);
+ license.setBaseURL(licenseURL);
+ if (log.isInfoEnabled()) {
+ log.info("Adding license " + license);
+ }
+ licenses.add(license);
+ }
+ licenses = Collections.unmodifiableList(licenses);
+ } finally {
+ // mark repository as available
+ init = true;
+ }
+ }
+
+ public License[] getLicenses() {
+ checkInit("getLicenses");
+ return licenses.toArray(new License[licenses.size()]);
+ }
+
+ public License getLicense(String licenseName) {
+ checkInit("getLicense");
+ if (licenseName == null || licenseName.trim().isEmpty()) {
+ throw new IllegalArgumentException(
+ "licenceName can not be null, nor empty");
+ }
+
+ License license = null;
+ for (License l : this) {
+ if (licenseName.equals(l.getName())) {
+ // got it
+ license = l;
+ break;
+ }
+ }
+ return license;
+ }
+
+ @Override
+ public Iterator<License> iterator() {
+ checkInit("iterator");
+ return licenses.iterator();
+ }
+
+ protected boolean checkExists(URL url) throws IOException {
+ URLConnection openConnection = url.openConnection();
+ return openConnection.getContentLength() > 0;
+ }
+
+ protected void checkInit(String operation) throws IllegalStateException {
+ if (!init) {
+ throw new IllegalStateException(
+ "repository " + this + " was not init, operation [" +
+ operation + "] not possible.");
+ }
+ }
+
+ protected void checkNotInit(String operation) throws IllegalStateException {
+ if (init) {
+ throw new IllegalStateException(
+ "repository " + this + "was init, operation [" +
+ operation + "+] not possible.");
+ }
+ }
+
+// /** next repository (can be {@code null}). */
+// @Deprecated
+// protected LicenseRepository next;
+//
+// @Deprecated
+// protected List<LicenseDefinition> definitions;
+//
+// @Deprecated
+// protected final Map<LicenseDefinition, License> cache;
+//
+// @Deprecated
+// public void reload() throws IOException {
+// init = false;
+// load();
+// }
+
+// @Deprecated
+// public static URL getUrl(URL baseUrl,
+// String suffix) throws IllegalArgumentException {
+// return PluginHelper.getUrl(baseUrl, suffix);
+// }
+//
+// @Deprecated
+// public LicenseRepository appendRepository(LicenseRepository next) {
+// LicenseRepository lastRepository = getLastRepository();
+// lastRepository.next = next;
+// return next;
+// }
+//
+// @Deprecated
+// public List<LicenseDefinition> getAllDefinitions() {
+// LicenseRepository[] repos = getAllRepositories();
+// List<LicenseDefinition> result =
+// new ArrayList<LicenseDefinition>(repos.length);
+// for (LicenseRepository repo : repos) {
+// result.addAll(repo.definitions);
+// }
+// return result;
+// }
+//
+// public List<LicenseDefinition> getDefinitions() {
+// return definitions;
+// }
+//
+// public LicenseDefinition getDefinition(String licenseName) {
+// checkInit("getDefinition");
+// if (licenseName == null || licenseName.trim().isEmpty()) {
+// throw new IllegalArgumentException(
+// "licenceName can not be null, nor empty");
+// }
+// licenseName = licenseName.trim().toLowerCase();
+// LicenseDefinition definition = null;
+// for (LicenseDefinition d : definitions) {
+// if (licenseName.equals(d.getName())) {
+// definition = d;
+// break;
+// }
+// }
+// if (definition == null && next != null) {
+// definition = next.getDefinition(licenseName);
+// }
+// return definition;
+// }
+//
+// @Deprecated
+// protected LicenseRepository getLastRepository() {
+// LicenseRepository last = next == null ? this : next.getLastRepository();
+// return last;
+// }
+//
+// @Deprecated
+// protected LicenseRepository[] getAllRepositories() {
+// List<LicenseRepository> list = new ArrayList<LicenseRepository>();
+// LicenseRepository repo = this;
+// while (repo != null) {
+// list.add(repo);
+// repo = repo.next;
+// }
+// return list.toArray(new LicenseRepository[list.size()]);
+// }
+//
+// @Deprecated
+// protected void checkNotInit() throws IllegalStateException {
+// if (init) {
+// throw new IllegalStateException(
+// "license repository " + this +
+// " was already initialize...");
+// }
+// }
+//
+// @Deprecated
+// protected void checkInit() throws IllegalStateException {
+// if (!init) {
+// throw new IllegalStateException(
+// "repository " + this + " is not init, use the load " +
+// "method before any license request");
+// }
+// }
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/model/LicenseRepository.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Copied: trunk/src/main/java/org/nuiton/license/plugin/model/LicenseStore.java (from rev 1709, trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java)
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/model/LicenseStore.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/model/LicenseStore.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,136 @@
+package org.nuiton.license.plugin.model;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * The {@code LicenseStore} offers {@link License} coming from different {@link
+ * LicenseRepository}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseStore implements Iterable<LicenseRepository> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(LicenseStore.class);
+
+ /** class-path directory where is the licenses repository */
+ public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
+
+ /** list of available license repositories */
+ protected List<LicenseRepository> repositories;
+
+ /** flag to know if store was init */
+ protected boolean init;
+
+ public void init() throws IOException {
+ checkNotInit("init");
+ try {
+ if (repositories == null) {
+ // adding the default class-path repository
+ addJarRepository();
+ }
+ for (LicenseRepository r : this) {
+ r.load();
+ }
+ } finally {
+ init = true;
+ }
+ }
+
+ public List<LicenseRepository> getRepositories() {
+ return repositories;
+ }
+
+ public License[] getLicenses() {
+ checkInit("getLicenses");
+ List<License> result = new ArrayList<License>();
+ if (repositories != null) {
+ for (LicenseRepository repository : this) {
+ for (License license : repository) {
+ result.add(license);
+ }
+ }
+ }
+ return result.toArray(new License[result.size()]);
+ }
+
+ public License getLicense(String licenseName) {
+ checkInit("getLicense");
+ Iterator<LicenseRepository> itr = iterator();
+ License result = null;
+ while (itr.hasNext()) {
+ LicenseRepository licenseRepository = itr.next();
+ License license = licenseRepository.getLicense(licenseName);
+ if (license != null) {
+ result = license;
+ break;
+ }
+ }
+ if (result == null && log.isDebugEnabled()) {
+ log.debug("could not find license named '" + licenseName + "'");
+ }
+ return result;
+ }
+
+ public void addRepository(String extraResolver) throws IOException {
+ addRepository(new URL(extraResolver));
+ }
+
+ public void addRepository(URL baseURL) throws IOException {
+ checkNotInit("addRepository");
+ LicenseRepository repository = new LicenseRepository();
+ repository.setBaseURL(baseURL);
+ if (log.isDebugEnabled()) {
+ log.debug("Adding a license repository " + repository);
+ }
+ addRepository(repository);
+ }
+
+ public void addJarRepository() throws IOException {
+ checkNotInit("addJarRepository");
+ URL baseURL = getClass().getResource(JAR_LICENSE_REPOSITORY);
+ LicenseRepository repository = new LicenseRepository();
+ repository.setBaseURL(baseURL);
+ if (log.isDebugEnabled()) {
+ log.debug("Adding a jar license repository " + repository);
+ }
+ addRepository(repository);
+ }
+
+ @Override
+ public Iterator<LicenseRepository> iterator() {
+ return getRepositories().iterator();
+ }
+
+ protected void addRepository(LicenseRepository repository) {
+ checkNotInit("addRepository");
+ if (repositories == null) {
+ repositories = new ArrayList<LicenseRepository>();
+
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Adding a license repository " + repository);
+ }
+ repositories.add(repository);
+ }
+
+ protected void checkInit(String operation) throws IllegalStateException {
+ if (!init) {
+ throw new IllegalStateException("store was not init, operation [" + operation + "] not possible.");
+ }
+ }
+
+ protected void checkNotInit(String operation) throws IllegalStateException {
+ if (init) {
+ throw new IllegalStateException("store was init, operation [" + operation + "+] not possible.");
+ }
+ }
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/model/LicenseStore.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Deleted: trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,150 +0,0 @@
-/*
- * *##%
- * Maven License Plugin
- * Copyright (C) 2008 - 2010 CodeLutin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
- */
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-import org.codehaus.plexus.util.IOUtil;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
-
-/**
- * The model of a license.
- *
- * @author chemit
- */
-public class License {
-
- public static final String LICENSE_HEADER_FILE = "header.txt";
-
- public static final String LICENSE_CONTENT_FILE = "license.txt";
-
- /** base url of license (directory where to find license files) */
- protected URL baseURL;
-
- /** the name of the licenses (ex lgpl-3.0) */
- protected String name;
-
- /** the description of the license */
- protected String description;
-
- /** url of the license's content */
- protected URL licenseURL;
-
- /** url of the license header's content */
- protected URL headerURL;
-
- public License() {
- }
-
- public String getName() {
- return name;
- }
-
- public URL getLicenseURL() {
- if (licenseURL == null) {
- licenseURL = PluginHelper.getUrl(getBaseURL(), LICENSE_CONTENT_FILE);
- }
- return licenseURL;
- }
-
- public URL getHeaderURL() {
- if (headerURL == null) {
- headerURL = PluginHelper.getUrl(getBaseURL(), LICENSE_HEADER_FILE);
- }
- return headerURL;
- }
-
- public String getDescription() {
- return description;
- }
-
- public URL getBaseURL() {
- return baseURL;
- }
-
- public String getLicenseContent(String encoding) throws IOException {
- if (licenseURL == null) {
- throw new IllegalStateException("no licenseURL defined, can not obtain license content in " + this);
- }
-
- Reader r = new BufferedReader(
- new InputStreamReader(getLicenseURL().openStream(), encoding));
- try {
- return IOUtil.toString(r);
- } finally {
- r.close();
- }
- }
-
- public String getHeaderContent(String encoding) throws IOException {
- if (baseURL == null) {
- throw new IllegalStateException("no baseURL defined, can not obtain header content in " + this);
- }
- Reader r = new BufferedReader(
- new InputStreamReader(getHeaderURL().openStream(), encoding));
- try {
- return IOUtil.toString(r);
- } finally {
- r.close();
- }
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
-// @Deprecated
-// public void setLicenseURL(URL licenseURL) {
-// this.licenseURL = licenseURL;
-// }
-//
-// @Deprecated
-// public void setHeaderURL(URL headerURL) {
-// this.headerURL = headerURL;
-// }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setBaseURL(URL baseURL) {
- this.baseURL = baseURL;
- }
-
- @Override
- public String toString() {
- ToStringBuilder builder = new ToStringBuilder(
- this,
- ToStringStyle.MULTI_LINE_STYLE
- );
- builder.append("name", name);
- builder.append("description", description);
- builder.append("licenseURL", getLicenseURL());
- builder.append("headerURL", getHeaderURL());
- return builder.toString();
- }
-}
Deleted: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,86 +0,0 @@
-/*
- * *##%
- * Maven License Plugin
- * Copyright (C) 2008 - 2010 CodeLutin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
- */
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * Model of a license definition in a license repository.
- *
- * @since 1.0.3
- * @deprecated since 2.1, prefer use directly the {@link License} class instead.
- */
-@Deprecated
-public class LicenseDefinition {
-
- public static final String LICENSE_HEADER_FILE = "header.txt";
-
- public static final String LICENSE_CONTENT_FILE = "license.txt";
-
- protected URL baseURL;
-
- protected String name;
-
- protected String description;
-
- public LicenseDefinition(URL baseURL, String name, String description) {
- this.baseURL = baseURL;
- this.name = name;
- this.description = description;
- }
-
- public URL getBaseURL() {
- return baseURL;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getName() {
- return name;
- }
-
- public URL getLicenseURL() throws IOException {
- return PluginHelper.getUrl(baseURL, LICENSE_CONTENT_FILE);
- }
-
- public URL getHeaderURL() throws IOException {
- return PluginHelper.getUrl(baseURL, LICENSE_HEADER_FILE);
- }
-
- @Override
- public String toString() {
- ToStringBuilder builder = new ToStringBuilder(
- this,
- ToStringStyle.MULTI_LINE_STYLE
- );
- builder.append("name", name);
- builder.append("description", description);
- builder.append("baseURL", baseURL);
- return builder.toString();
- }
-}
Deleted: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,264 +0,0 @@
-/*
- * *##%
- * Maven License Plugin
- * Copyright (C) 2008 - 2010 CodeLutin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
- */
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.*;
-import java.util.Map.Entry;
-
-/**
- * @author chemit
- * @since 1.0.3
- */
-public class LicenseRepository implements Iterable<License> {
-
- /** Logger */
- private static final Log log = LogFactory.getLog(LicenseRepository.class);
-
- public static final String REPOSITORY_DEFINITION_FILE = "licenses.properties";
-
- /** the base url of the licenses repository */
- protected URL baseURL;
-
- /** licenses of this repository */
- protected List<License> licenses;
-
- /**
- * flag to known if repository was init (pass to {@code true} when invoking
- * the method {@link #load()}).
- */
- protected boolean init;
-
- public LicenseRepository() {
- }
-
- public URL getBaseURL() {
- return baseURL;
- }
-
- public void setBaseURL(URL baseURL) {
- checkNotInit("setBaseURL");
- this.baseURL = baseURL;
- }
-
- public void load() throws IOException {
- checkNotInit("load");
- try {
- if (baseURL == null || baseURL.toString().trim().isEmpty()) {
- throw new IllegalStateException(
- "no baseURL defined in " + this);
- }
-
- URL definitionURL = PluginHelper.getUrl(
- getBaseURL(),
- REPOSITORY_DEFINITION_FILE
- );
- if (licenses != null) {
- licenses.clear();
- } else {
- licenses = new ArrayList<License>();
- }
-
- if (!checkExists(definitionURL)) {
- throw new IllegalArgumentException(
- "no licenses.properties found withurl [" +
- definitionURL + "] for resolver " + this);
- }
- Properties p = new Properties();
- p.load(definitionURL.openStream());
-
- for (Entry<Object, Object> entry : p.entrySet()) {
- String licenseName = (String) entry.getKey();
- licenseName = licenseName.trim().toLowerCase();
- String licenseDescription = (String) entry.getValue();
- URL licenseURL = PluginHelper.getUrl(baseURL, licenseName);
-
- License license = new License();
- license.setName(licenseName);
- license.setDescription(licenseDescription);
- license.setBaseURL(licenseURL);
- if (log.isInfoEnabled()) {
- log.info("Adding license " + license);
- }
- licenses.add(license);
- }
- licenses = Collections.unmodifiableList(licenses);
- } finally {
- // mark repository as available
- init = true;
- }
- }
-
- public License[] getLicenses() {
- checkInit("getLicenses");
- return licenses.toArray(new License[licenses.size()]);
- }
-
- public License getLicense(String licenseName) {
- checkInit("getLicense");
- if (licenseName == null || licenseName.trim().isEmpty()) {
- throw new IllegalArgumentException(
- "licenceName can not be null, nor empty");
- }
-
- License license = null;
- for (License l : this) {
- if (licenseName.equals(l.getName())) {
- // got it
- license = l;
- break;
- }
- }
- return license;
- }
-
- @Override
- public Iterator<License> iterator() {
- checkInit("iterator");
- return licenses.iterator();
- }
-
- protected boolean checkExists(URL url) throws IOException {
- URLConnection openConnection = url.openConnection();
- return openConnection.getContentLength() > 0;
- }
-
- protected void checkInit(String operation) throws IllegalStateException {
- if (!init) {
- throw new IllegalStateException(
- "repository " + this + " was not init, operation [" +
- operation + "] not possible.");
- }
- }
-
- protected void checkNotInit(String operation) throws IllegalStateException {
- if (init) {
- throw new IllegalStateException(
- "repository " + this + "was init, operation [" +
- operation + "+] not possible.");
- }
- }
-
-// /** next repository (can be {@code null}). */
-// @Deprecated
-// protected LicenseRepository next;
-//
-// @Deprecated
-// protected List<LicenseDefinition> definitions;
-//
-// @Deprecated
-// protected final Map<LicenseDefinition, License> cache;
-//
-// @Deprecated
-// public void reload() throws IOException {
-// init = false;
-// load();
-// }
-
-// @Deprecated
-// public static URL getUrl(URL baseUrl,
-// String suffix) throws IllegalArgumentException {
-// return PluginHelper.getUrl(baseUrl, suffix);
-// }
-//
-// @Deprecated
-// public LicenseRepository appendRepository(LicenseRepository next) {
-// LicenseRepository lastRepository = getLastRepository();
-// lastRepository.next = next;
-// return next;
-// }
-//
-// @Deprecated
-// public List<LicenseDefinition> getAllDefinitions() {
-// LicenseRepository[] repos = getAllRepositories();
-// List<LicenseDefinition> result =
-// new ArrayList<LicenseDefinition>(repos.length);
-// for (LicenseRepository repo : repos) {
-// result.addAll(repo.definitions);
-// }
-// return result;
-// }
-//
-// public List<LicenseDefinition> getDefinitions() {
-// return definitions;
-// }
-//
-// public LicenseDefinition getDefinition(String licenseName) {
-// checkInit("getDefinition");
-// if (licenseName == null || licenseName.trim().isEmpty()) {
-// throw new IllegalArgumentException(
-// "licenceName can not be null, nor empty");
-// }
-// licenseName = licenseName.trim().toLowerCase();
-// LicenseDefinition definition = null;
-// for (LicenseDefinition d : definitions) {
-// if (licenseName.equals(d.getName())) {
-// definition = d;
-// break;
-// }
-// }
-// if (definition == null && next != null) {
-// definition = next.getDefinition(licenseName);
-// }
-// return definition;
-// }
-//
-// @Deprecated
-// protected LicenseRepository getLastRepository() {
-// LicenseRepository last = next == null ? this : next.getLastRepository();
-// return last;
-// }
-//
-// @Deprecated
-// protected LicenseRepository[] getAllRepositories() {
-// List<LicenseRepository> list = new ArrayList<LicenseRepository>();
-// LicenseRepository repo = this;
-// while (repo != null) {
-// list.add(repo);
-// repo = repo.next;
-// }
-// return list.toArray(new LicenseRepository[list.size()]);
-// }
-//
-// @Deprecated
-// protected void checkNotInit() throws IllegalStateException {
-// if (init) {
-// throw new IllegalStateException(
-// "license repository " + this +
-// " was already initialize...");
-// }
-// }
-//
-// @Deprecated
-// protected void checkInit() throws IllegalStateException {
-// if (!init) {
-// throw new IllegalStateException(
-// "repository " + this + " is not init, use the load " +
-// "method before any license request");
-// }
-// }
-}
Deleted: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,137 +0,0 @@
-/*
- * *##%
- * Maven License Plugin
- * Copyright (C) 2008 - 2010 CodeLutin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
- */
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author chemit
- * @since 1.0.3
- * @deprecated since 2.1, prefer use now a {@link LicenseStore}.
- */
-@Deprecated
-public class LicenseRepositoryFactory {
-
-// /** class-path directory where is the licenses repository */
-// public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
-//
-// /** to use log facility, just put in your code: log.info(\"...\"); */
-// static private final Log log = LogFactory.getLog(LicenseRepositoryFactory.class);
-
-// /**
-// * Obtain a new repository.
-// *
-// * @param useJarRepository flag to use at first a jar repository
-// * @param load flag to load the repository
-// * @param extraResolvers extra baseURLs to defined extra license resolver
-// * @return the instanciate and ready to use license repository
-// * @throws IOException if any problem while acquiring license repository
-// * @deprecated since 2.1, prefer use the {@link LicenseStore} api.
-// */
-// @Deprecated
-// public static LicenseRepository newLicenseRepository(
-// boolean useJarRepository,
-// boolean load,
-// String... extraResolvers) throws IOException {
-//
-// List<URL> baseURLs = new ArrayList<URL>();
-// if (extraResolvers != null) {
-// for (String exUrl : extraResolvers) {
-// if (exUrl == null) {
-// // skpi null url
-// continue;
-// }
-// URL url;
-// try {
-// url = new URL(exUrl);
-// } catch (Exception e) {
-// if (log.isDebugEnabled()) {
-// log.warn("could not convert url [" + exUrl +
-// "], for reason " + e.getMessage());
-// } else {
-// log.warn("could not convert url [" + exUrl +
-// "], for reason " + e.getMessage());
-// }
-// log.warn("will skip the url [" + exUrl + "]");
-// continue;
-// }
-// baseURLs.add(url);
-// }
-// }
-// if (!useJarRepository && baseURLs.isEmpty()) {
-// log.warn("no repository to create!");
-// // no repository to create
-// return null;
-// }
-//
-// LicenseRepository result = null;
-// LicenseRepository current = null;
-// if (useJarRepository) {
-// current = result = newJarLicenseRepository(false);
-// }
-//
-// for (URL baseURL : baseURLs) {
-// if (baseURL != null && !baseURL.toString().trim().isEmpty()) {
-// LicenseRepository r = new LicenseRepository();
-// r.setBaseURL(baseURL);
-// if (current == null) {
-// // no previous repository to chain
-// result = r;
-//
-// } else {
-// // chain to previous repository
-// current.appendRepository(r);
-// }
-// // new repository to chain
-// current = r;
-// }
-// }
-// if (load) {
-// result.load();
-// }
-// return result;
-// }
-
-// /**
-// * @param load {@code true} if repository should be loaded
-// * @return the license repository coming for class-path
-// * @throws IOException if any pb while loading repository (if asked)
-// * @deprecated since 2.1, prefer use the {@link LicenseStore} api.
-// */
-// @Deprecated
-// public static LicenseRepository newJarLicenseRepository(boolean load) throws IOException {
-// LicenseRepository result = new LicenseRepository();
-// // the first repository is always a jar repository
-// URL baseURL = LicenseRepositoryFactory.class.getResource(
-// JAR_LICENSE_REPOSITORY);
-// result.setBaseURL(baseURL);
-// if (load) {
-// result.load();
-// }
-// return result;
-// }
-}
Deleted: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,136 +0,0 @@
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * The {@code LicenseStore} offers {@link License} coming from different {@link
- * LicenseRepository}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.1
- */
-public class LicenseStore implements Iterable<LicenseRepository> {
-
- /** Logger */
- private static final Log log = LogFactory.getLog(LicenseStore.class);
-
- /** class-path directory where is the licenses repository */
- public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
-
- /** list of available license repositories */
- protected List<LicenseRepository> repositories;
-
- /** flag to know if store was init */
- protected boolean init;
-
- public void init() throws IOException {
- checkNotInit("init");
- try {
- if (repositories == null) {
- // adding the default class-path repository
- addJarRepository();
- }
- for (LicenseRepository r : this) {
- r.load();
- }
- } finally {
- init = true;
- }
- }
-
- public List<LicenseRepository> getRepositories() {
- return repositories;
- }
-
- public License[] getLicenses() {
- checkInit("getLicenses");
- List<License> result = new ArrayList<License>();
- if (repositories != null) {
- for (LicenseRepository repository : this) {
- for (License license : repository) {
- result.add(license);
- }
- }
- }
- return result.toArray(new License[result.size()]);
- }
-
- public License getLicense(String licenseName) {
- checkInit("getLicense");
- Iterator<LicenseRepository> itr = iterator();
- License result = null;
- while (itr.hasNext()) {
- LicenseRepository licenseRepository = itr.next();
- License license = licenseRepository.getLicense(licenseName);
- if (license != null) {
- result = license;
- break;
- }
- }
- if (result == null && log.isDebugEnabled()) {
- log.debug("could not find license named '" + licenseName + "'");
- }
- return result;
- }
-
- public void addRepository(String extraResolver) throws IOException {
- addRepository(new URL(extraResolver));
- }
-
- public void addRepository(URL baseURL) throws IOException {
- checkNotInit("addRepository");
- LicenseRepository repository = new LicenseRepository();
- repository.setBaseURL(baseURL);
- if (log.isDebugEnabled()) {
- log.debug("Adding a license repository " + repository);
- }
- addRepository(repository);
- }
-
- public void addJarRepository() throws IOException {
- checkNotInit("addJarRepository");
- URL baseURL = getClass().getResource(JAR_LICENSE_REPOSITORY);
- LicenseRepository repository = new LicenseRepository();
- repository.setBaseURL(baseURL);
- if (log.isDebugEnabled()) {
- log.debug("Adding a jar license repository " + repository);
- }
- addRepository(repository);
- }
-
- @Override
- public Iterator<LicenseRepository> iterator() {
- return getRepositories().iterator();
- }
-
- protected void addRepository(LicenseRepository repository) {
- checkNotInit("addRepository");
- if (repositories == null) {
- repositories = new ArrayList<LicenseRepository>();
-
- }
- if (log.isInfoEnabled()) {
- log.info("Adding a license repository " + repository);
- }
- repositories.add(repository);
- }
-
- protected void checkInit(String operation) throws IllegalStateException {
- if (!init) {
- throw new IllegalStateException("store was not init, operation [" + operation + "] not possible.");
- }
- }
-
- protected void checkNotInit(String operation) throws IllegalStateException {
- if (init) {
- throw new IllegalStateException("store was init, operation [" + operation + "+] not possible.");
- }
- }
-}
Copied: trunk/src/main/resources/META-INF/licenses/agpl_v3/header.txt (from rev 1709, trunk/src/main/resources/license/agpl_v3/header.txt)
===================================================================
--- trunk/src/main/resources/META-INF/licenses/agpl_v3/header.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/agpl_v3/header.txt 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,12 @@
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
Copied: trunk/src/main/resources/META-INF/licenses/agpl_v3/license.txt (from rev 1709, trunk/src/main/resources/license/agpl_v3/license.txt)
===================================================================
--- trunk/src/main/resources/META-INF/licenses/agpl_v3/license.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/agpl_v3/license.txt 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
\ No newline at end of file
Copied: trunk/src/main/resources/META-INF/licenses/fdl_v1_3/header.txt (from rev 1709, trunk/src/main/resources/license/fdl_v1_3/header.txt)
===================================================================
--- trunk/src/main/resources/META-INF/licenses/fdl_v1_3/header.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/fdl_v1_3/header.txt 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,12 @@
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Free Documentation License as published by
+the Free Software Foundation, either version 1.3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Free Documentation License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
Copied: trunk/src/main/resources/META-INF/licenses/fdl_v1_3/license.txt (from rev 1709, trunk/src/main/resources/license/fdl_v1_3/license.txt)
===================================================================
--- trunk/src/main/resources/META-INF/licenses/fdl_v1_3/license.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/fdl_v1_3/license.txt 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,451 @@
+
+ GNU Free Documentation License
+ Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
\ No newline at end of file
Modified: trunk/src/main/resources/META-INF/licenses/licenses.properties
===================================================================
--- trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-06 16:21:34 UTC (rev 1709)
+++ trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-06 16:43:34 UTC (rev 1710)
@@ -1,7 +1,7 @@
-fdl_v1_3=Free Documentation License Version 1.3
agpl_v3=GNU Affero General Public License version 3.0
apache_v2=License Apache version 3.0
cddl_v1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+fdl_v1_3=Free Documentation License Version 1.3
gpl_v1=License gpl version 1.0
gpl_v2=License gpl version 2.0
gpl_v3=License gpl version 3.0
Copied: trunk/src/test/java/org/nuiton/license/plugin/model/LicenseRepositoryTest.java (from rev 1709, trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java)
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/model/LicenseRepositoryTest.java (rev 0)
+++ trunk/src/test/java/org/nuiton/license/plugin/model/LicenseRepositoryTest.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,45 @@
+package org.nuiton.license.plugin.model;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * Tests {@link LicenseRepository}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseRepositoryTest {
+
+ protected LicenseRepository repository;
+
+ @Before
+ public void setUp() {
+ repository = null;
+ }
+
+ @Test
+ public void testJarRepository() throws IOException {
+
+ repository = new LicenseRepository();
+ URL baseURL = getClass().getResource(
+ LicenseStore.JAR_LICENSE_REPOSITORY
+ );
+ repository.setBaseURL(baseURL);
+ repository.load();
+
+ License[] licenses = repository.getLicenses();
+ Assert.assertNotNull(licenses);
+ Assert.assertEquals(LicenseStoreTest.DEFAULT_LICENSES.size(),
+ licenses.length);
+
+ for (String licenseName : LicenseStoreTest.DEFAULT_LICENSES) {
+ License license = repository.getLicense(licenseName);
+ Assert.assertNotNull(license);
+ }
+ }
+}
Property changes on: trunk/src/test/java/org/nuiton/license/plugin/model/LicenseRepositoryTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Copied: trunk/src/test/java/org/nuiton/license/plugin/model/LicenseStoreTest.java (from rev 1709, trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java)
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/model/LicenseStoreTest.java (rev 0)
+++ trunk/src/test/java/org/nuiton/license/plugin/model/LicenseStoreTest.java 2010-04-06 16:43:34 UTC (rev 1710)
@@ -0,0 +1,65 @@
+package org.nuiton.license.plugin.model;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests {@link LicenseStore}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseStoreTest {
+
+ public static final List<String> DEFAULT_LICENSES = Arrays.asList(
+ "agpl_v3",
+ "apache_v2",
+ "cddl_v1",
+ "fdl_v1_3",
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3",
+ "mit"
+ );
+
+ protected LicenseStore store;
+
+ @Before
+ public void setUp() {
+ store = null;
+ }
+
+ @Test
+ public void testJarRepository() throws IOException {
+
+ store = new LicenseStore();
+ store.init();
+
+ List<LicenseRepository> repositories = store.getRepositories();
+ Assert.assertNotNull(repositories);
+ Assert.assertEquals(1, repositories.size());
+ LicenseRepository repository = repositories.get(0);
+
+ License[] licenses1 = repository.getLicenses();
+ License[] licenses = store.getLicenses();
+ Assert.assertNotNull(licenses);
+ Assert.assertNotNull(licenses1);
+ Assert.assertEquals(DEFAULT_LICENSES.size(), licenses.length);
+ Assert.assertEquals(DEFAULT_LICENSES.size(), licenses1.length);
+
+ for (String licenseName : DEFAULT_LICENSES) {
+ License license = repository.getLicense(licenseName);
+ License license1 = store.getLicense(licenseName);
+ Assert.assertNotNull(license);
+ Assert.assertNotNull(license1);
+ Assert.assertEquals(license, license1);
+ }
+ }
+}
Property changes on: trunk/src/test/java/org/nuiton/license/plugin/model/LicenseStoreTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
1
0
r1709 - in trunk/src: main/java/org/nuiton/license/plugin/repository main/resources/META-INF/licenses main/resources/META-INF/licenses/cddl_v1 main/resources/license main/resources/license/agpl_v3 main/resources/license/fdl_v1_3 test/java/org/nuiton/license/plugin/repository
by tchemit@users.nuiton.org 06 Apr '10
by tchemit@users.nuiton.org 06 Apr '10
06 Apr '10
Author: tchemit
Date: 2010-04-06 18:21:34 +0200 (Tue, 06 Apr 2010)
New Revision: 1709
Log:
add new licenses + clean code + improve tests
Added:
trunk/src/main/resources/license/agpl_v3/
trunk/src/main/resources/license/agpl_v3/header.txt
trunk/src/main/resources/license/agpl_v3/license.txt
trunk/src/main/resources/license/fdl_v1_3/
trunk/src/main/resources/license/fdl_v1_3/header.txt
trunk/src/main/resources/license/fdl_v1_3/license.txt
Removed:
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
Modified:
trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt
trunk/src/main/resources/META-INF/licenses/licenses.properties
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -23,6 +23,7 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.codehaus.plexus.util.IOUtil;
+import org.nuiton.plugin.PluginHelper;
import java.io.BufferedReader;
import java.io.IOException;
@@ -37,11 +38,11 @@
*/
public class License {
-
public static final String LICENSE_HEADER_FILE = "header.txt";
public static final String LICENSE_CONTENT_FILE = "license.txt";
+ /** base url of license (directory where to find license files) */
protected URL baseURL;
/** the name of the licenses (ex lgpl-3.0) */
@@ -53,7 +54,7 @@
/** url of the license's content */
protected URL licenseURL;
- /** url of the header's template */
+ /** url of the license header's content */
protected URL headerURL;
public License() {
@@ -65,15 +66,14 @@
public URL getLicenseURL() {
if (licenseURL == null) {
-
- licenseURL = LicenseRepository.getUrl(baseURL, LICENSE_CONTENT_FILE);
+ licenseURL = PluginHelper.getUrl(getBaseURL(), LICENSE_CONTENT_FILE);
}
return licenseURL;
}
public URL getHeaderURL() {
if (headerURL == null) {
- headerURL = LicenseRepository.getUrl(baseURL, LICENSE_HEADER_FILE);
+ headerURL = PluginHelper.getUrl(getBaseURL(), LICENSE_HEADER_FILE);
}
return headerURL;
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -22,6 +22,7 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
+import org.nuiton.plugin.PluginHelper;
import java.io.IOException;
import java.net.URL;
@@ -64,11 +65,11 @@
}
public URL getLicenseURL() throws IOException {
- return LicenseRepository.getUrl(baseURL, LICENSE_CONTENT_FILE);
+ return PluginHelper.getUrl(baseURL, LICENSE_CONTENT_FILE);
}
public URL getHeaderURL() throws IOException {
- return LicenseRepository.getUrl(baseURL, LICENSE_HEADER_FILE);
+ return PluginHelper.getUrl(baseURL, LICENSE_HEADER_FILE);
}
@Override
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -22,9 +22,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.plugin.PluginHelper;
import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
@@ -34,7 +34,7 @@
* @author chemit
* @since 1.0.3
*/
-public class LicenseRepository {
+public class LicenseRepository implements Iterable<License> {
/** Logger */
private static final Log log = LogFactory.getLog(LicenseRepository.class);
@@ -44,16 +44,6 @@
/** the base url of the licenses repository */
protected URL baseURL;
-// /** next repository (can be {@code null}). */
-// @Deprecated
-// protected LicenseRepository next;
-//
-// @Deprecated
-// protected List<LicenseDefinition> definitions;
-//
-// @Deprecated
-// protected final Map<LicenseDefinition, License> cache;
-
/** licenses of this repository */
protected List<License> licenses;
@@ -64,7 +54,6 @@
protected boolean init;
public LicenseRepository() {
-// cache = new HashMap<LicenseDefinition, License>();
}
public URL getBaseURL() {
@@ -79,35 +68,35 @@
public void load() throws IOException {
checkNotInit("load");
try {
-// if (!init) {
if (baseURL == null || baseURL.toString().trim().isEmpty()) {
- throw new IllegalStateException("no baseURL defined in " + this);
+ throw new IllegalStateException(
+ "no baseURL defined in " + this);
}
- URL definitionURL = getUrl(baseURL, REPOSITORY_DEFINITION_FILE);
+ URL definitionURL = PluginHelper.getUrl(
+ getBaseURL(),
+ REPOSITORY_DEFINITION_FILE
+ );
if (licenses != null) {
licenses.clear();
} else {
licenses = new ArrayList<License>();
}
-// definitions = new ArrayList<LicenseDefinition>();
if (!checkExists(definitionURL)) {
throw new IllegalArgumentException(
"no licenses.properties found withurl [" +
- definitionURL + "] for resolver " + this);
+ definitionURL + "] for resolver " + this);
}
Properties p = new Properties();
p.load(definitionURL.openStream());
for (Entry<Object, Object> entry : p.entrySet()) {
String licenseName = (String) entry.getKey();
+ licenseName = licenseName.trim().toLowerCase();
String licenseDescription = (String) entry.getValue();
+ URL licenseURL = PluginHelper.getUrl(baseURL, licenseName);
- licenseName = licenseName.trim().toLowerCase();
-
- URL licenseURL = getUrl(baseURL, licenseName);
-
License license = new License();
license.setName(licenseName);
license.setDescription(licenseDescription);
@@ -116,36 +105,16 @@
log.info("Adding license " + license);
}
licenses.add(license);
-// LicenseDefinition def = new LicenseDefinition(
-// licenseURL,
-// licenseName,
-// licenseDescription
-// );
-// definitions.add(def);
}
licenses = Collections.unmodifiableList(licenses);
-// definitions = Collections.unmodifiableList(definitions);
-// }
-// if (next != null) {
-// next.load();
-// }
} finally {
// mark repository as available
init = true;
}
}
- public void reload() throws IOException {
-// if (next != null) {
-// next.reload();
-// }
- init = false;
-// cache.clear();
- load();
- }
-
public License[] getLicenses() {
- checkInit("getLicense");
+ checkInit("getLicenses");
return licenses.toArray(new License[licenses.size()]);
}
@@ -157,7 +126,7 @@
}
License license = null;
- for (License l : licenses) {
+ for (License l : this) {
if (licenseName.equals(l.getName())) {
// got it
license = l;
@@ -167,36 +136,56 @@
return license;
}
+ @Override
+ public Iterator<License> iterator() {
+ checkInit("iterator");
+ return licenses.iterator();
+ }
+
protected boolean checkExists(URL url) throws IOException {
URLConnection openConnection = url.openConnection();
return openConnection.getContentLength() > 0;
}
-
protected void checkInit(String operation) throws IllegalStateException {
if (!init) {
- throw new IllegalStateException("repository " + this + " was not init, operation [" + operation + "] not possible.");
+ throw new IllegalStateException(
+ "repository " + this + " was not init, operation [" +
+ operation + "] not possible.");
}
}
protected void checkNotInit(String operation) throws IllegalStateException {
if (init) {
- throw new IllegalStateException("repository " + this + "was init, operation [" + operation + "+] not possible.");
+ throw new IllegalStateException(
+ "repository " + this + "was init, operation [" +
+ operation + "+] not possible.");
}
}
- public static URL getUrl(URL baseUrl,
- String suffix) throws IllegalArgumentException {
- String url = baseUrl.toString() + "/" + suffix;
- try {
- return new URL(url);
- } catch (MalformedURLException ex) {
- throw new IllegalArgumentException(
- "could not obtain url " + url, ex);
- }
- }
+// /** next repository (can be {@code null}). */
+// @Deprecated
+// protected LicenseRepository next;
+//
+// @Deprecated
+// protected List<LicenseDefinition> definitions;
+//
+// @Deprecated
+// protected final Map<LicenseDefinition, License> cache;
+//
+// @Deprecated
+// public void reload() throws IOException {
+// init = false;
+// load();
+// }
// @Deprecated
+// public static URL getUrl(URL baseUrl,
+// String suffix) throws IllegalArgumentException {
+// return PluginHelper.getUrl(baseUrl, suffix);
+// }
+//
+// @Deprecated
// public LicenseRepository appendRepository(LicenseRepository next) {
// LicenseRepository lastRepository = getLastRepository();
// lastRepository.next = next;
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -6,7 +6,6 @@
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@ -38,7 +37,7 @@
// adding the default class-path repository
addJarRepository();
}
- for (LicenseRepository r : repositories) {
+ for (LicenseRepository r : this) {
r.load();
}
} finally {
@@ -54,8 +53,10 @@
checkInit("getLicenses");
List<License> result = new ArrayList<License>();
if (repositories != null) {
- for (LicenseRepository repository : repositories) {
- result.addAll(Arrays.asList(repository.getLicenses()));
+ for (LicenseRepository repository : this) {
+ for (License license : repository) {
+ result.add(license);
+ }
}
}
return result.toArray(new License[result.size()]);
Modified: trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt 2010-04-06 16:21:34 UTC (rev 1709)
@@ -1,3 +1,16 @@
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-TODO
+This program is free software: you can redistribute it and/or modify
+it under the terms of the Common Development and Distrubtion License as
+published by the Sun Microsystems, either version 1.0 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Lesser Public License for more details.
+
+You should have received a copy of the Common Development and Distrubtion
+License along with this program. If not, see
+<http://www.gnu.org/licenses/gpl-1.0.html>.
+
Modified: trunk/src/main/resources/META-INF/licenses/licenses.properties
===================================================================
--- trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-06 16:21:34 UTC (rev 1709)
@@ -1,3 +1,5 @@
+fdl_v1_3=Free Documentation License Version 1.3
+agpl_v3=GNU Affero General Public License version 3.0
apache_v2=License Apache version 3.0
cddl_v1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
gpl_v1=License gpl version 1.0
Added: trunk/src/main/resources/license/agpl_v3/header.txt
===================================================================
--- trunk/src/main/resources/license/agpl_v3/header.txt (rev 0)
+++ trunk/src/main/resources/license/agpl_v3/header.txt 2010-04-06 16:21:34 UTC (rev 1709)
@@ -0,0 +1,12 @@
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
Added: trunk/src/main/resources/license/agpl_v3/license.txt
===================================================================
--- trunk/src/main/resources/license/agpl_v3/license.txt (rev 0)
+++ trunk/src/main/resources/license/agpl_v3/license.txt 2010-04-06 16:21:34 UTC (rev 1709)
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
\ No newline at end of file
Added: trunk/src/main/resources/license/fdl_v1_3/header.txt
===================================================================
--- trunk/src/main/resources/license/fdl_v1_3/header.txt (rev 0)
+++ trunk/src/main/resources/license/fdl_v1_3/header.txt 2010-04-06 16:21:34 UTC (rev 1709)
@@ -0,0 +1,12 @@
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Free Documentation License as published by
+the Free Software Foundation, either version 1.3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Free Documentation License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
Added: trunk/src/main/resources/license/fdl_v1_3/license.txt
===================================================================
--- trunk/src/main/resources/license/fdl_v1_3/license.txt (rev 0)
+++ trunk/src/main/resources/license/fdl_v1_3/license.txt 2010-04-06 16:21:34 UTC (rev 1709)
@@ -0,0 +1,451 @@
+
+ GNU Free Documentation License
+ Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
\ No newline at end of file
Deleted: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -1,386 +0,0 @@
-/*
- * *##%
- * Maven License Plugin
- * Copyright (C) 2008 - 2010 CodeLutin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
- */
-package org.nuiton.license.plugin.repository;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.nuiton.plugin.PluginHelper;
-import org.nuiton.plugin.TestHelper;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-/** @author chemit */
-@Ignore
-public class LicenseRepositoryFactoryTest extends Assert {
-//
-// public static final String NEWLICENSE = "new_license";
-//
-// public static final String NEWLICENSE2 = "new_license2";
-//
-// protected static final Log log = LogFactory.getLog(LicenseRepositoryFactoryTest.class);
-//
-// protected static final String encoding = "utf-8";
-//
-// protected File baseDir;
-//
-// public static final String[] DEFAULT_LICENSES = new String[]{"apache_v2",
-// "cddl_v1",
-// "gpl_v1",
-// "gpl_v2",
-// "gpl_v3",
-// "lgpl_v2_1",
-// "lgpl_v3"};
-//
-// protected File getBaseDir() {
-// if (baseDir == null) {
-// baseDir = TestHelper.getBasedir();
-// }
-// return baseDir;
-// }
-//
-// protected void assertLicenseDefinitionFound(String name, LicenseDefinition definition) throws IOException {
-// assertNotNull("could not find definition for license [" + name + "]", definition);
-// assertEquals(name.toLowerCase(), definition.getName());
-// }
-//
-// protected void assertLicenseFound(String name, License license) throws IOException {
-// assertNotNull("could not find license [" + name + "]", license);
-// assertEquals(name, license.getName());
-// assertNotNull(license.getLicenseContent(encoding));
-// assertNotNull(license.getHeaderContent(encoding));
-// }
-//
-// protected void assertLicenseRepositoryFound(LicenseRepository repository, String... names) throws IOException {
-//
-// assertNotNull("could not find repository", repository);
-// assertEquals("expected " + names.length + " licenses but had " + repository.getDefinitions().size(), names.length, repository.getDefinitions().size());
-//
-// for (String name : names) {
-// LicenseDefinition def = repository.getDefinition(name);
-// assertLicenseDefinitionFound(name.toLowerCase(), def);
-// License lic = repository.getLicense(name);
-// assertLicenseFound(name.toLowerCase(), lic);
-// }
-// }
-//
-// protected File createLicenseRepository(boolean createLicene) throws IOException {
-// long timestamp = System.currentTimeMillis();
-//
-// File repo = TestHelper.getFile(getBaseDir(),
-// "target",
-// "test-classes",
-// "org",
-// "nuiton",
-// "license",
-// "plugin",
-// "repository",
-// "repository_" + timestamp
-// );
-//
-// log.info("new license repository : " + TestHelper.getRelativePath(baseDir, repo));
-// if (createLicene) {
-//
-// String licenseName = "license_" + timestamp;
-// addLicenseToRepository(repo, licenseName);
-// }
-// return repo;
-// }
-//
-// protected void addLicenseToRepository(File repo, String licenseName) throws IOException {
-//
-// File defFile = new File(repo, LicenseRepository.REPOSITORY_DEFINITION_FILE);
-//
-// String content = "";
-// if (defFile.exists()) {
-//
-// content = TestHelper.readAsString(defFile, encoding) + "\n";
-// }
-//
-// TestHelper.writeString(defFile, content + licenseName + "=My dummy license\n", encoding);
-//
-// // create dummy licenses
-// File file = new File(repo, licenseName);
-// PluginHelper.createDirectoryIfNecessary(file);
-// TestHelper.writeString(new File(file, License.LICENSE_CONTENT_FILE), "license:" + licenseName, encoding);
-// TestHelper.writeString(new File(file, License.LICENSE_HEADER_FILE), "header:" + licenseName, encoding);
-//
-// }
-//
-// @Test
-// public void newJarLicenseRepository() throws Exception {
-//
-// LicenseRepository[] repositories;
-// LicenseRepository repository;
-//
-// repository = LicenseRepositoryFactory.newJarLicenseRepository(false);
-// assertNotNull(repository);
-// assertFalse(repository.init);
-// repositories = repository.getAllRepositories();
-// assertEquals(1, repositories.length);
-// assertEquals(repository, repositories[0]);
-//
-// repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
-// assertNotNull(repository);
-// assertTrue(repository.init);
-// repositories = repository.getAllRepositories();
-// assertEquals(1, repositories.length);
-// assertEquals(repository, repositories[0]);
-// List<LicenseDefinition> definitions = repository.getDefinitions();
-// List<LicenseDefinition> allDefinitions = repository.getAllDefinitions();
-// assertEquals(7, definitions.size());
-// assertEquals(7, allDefinitions.size());
-// assertEquals(definitions, allDefinitions);
-//
-// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
-// }
-//
-// @Test
-// public void testNewInstance() throws Exception {
-//
-// LicenseRepository[] repositories;
-// LicenseRepository repository;
-// LicenseDefinition def;
-//
-// repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
-// assertNotNull(repository);
-// repositories = repository.getAllRepositories();
-// assertEquals(1, repositories.length);
-// assertNotNull(repositories[0]);
-// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
-//
-// repository = LicenseRepositoryFactory.newLicenseRepository(true, true, "");
-// repositories = repository.getAllRepositories();
-// assertNotNull(repository);
-// assertEquals(1, repositories.length);
-// assertNotNull(repositories[0]);
-// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
-//
-// repository = LicenseRepositoryFactory.newLicenseRepository(true, false, "file://yo");
-// assertNotNull(repository);
-// repositories = repository.getAllRepositories();
-//
-// assertEquals(2, repositories.length);
-// assertNotNull(repositories[0]);
-// assertNotNull(repositories[1]);
-//
-// assertNotNull(repositories[1].getBaseURL());
-// assertEquals("file://yo", repositories[1].getBaseURL().toString());
-//
-// // create a new dummy license repository with a license
-//
-// File repo = createLicenseRepository(true);
-// String generatedLicence = "license" + repo.getName().substring(repo.getName().indexOf("_"));
-//
-// repository = LicenseRepositoryFactory.newLicenseRepository(true, true, repo.toURI().toURL().toString());
-// assertNotNull(repository);
-// repositories = repository.getAllRepositories();
-//
-// assertEquals(2, repositories.length);
-//
-// assertNotNull(repositories[0]);
-// assertNotNull(repositories[1]);
-// assertEquals(5, repositories[0].getDefinitions().size());
-// assertEquals(1, repositories[1].getDefinitions().size());
-//
-// assertLicenseRepositoryFound(repositories[0], DEFAULT_LICENSES);
-//
-// assertNotNull(repositories[1].getBaseURL());
-// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
-//
-// assertLicenseRepositoryFound(repositories[1],
-// generatedLicence);
-//
-//
-// // add license
-//
-// addLicenseToRepository(repo, NEWLICENSE);
-//
-// repository.reload();
-//
-// repositories = repository.getAllRepositories();
-//
-// assertEquals(2, repositories.length);
-// assertNotNull(repositories[0]);
-// assertNotNull(repositories[1]);
-// assertNotNull(repositories[1].getBaseURL());
-// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
-// assertEquals(2, repositories[1].getDefinitions().size());
-// assertNotNull(repositories[1].getDefinitions().get(1));
-//
-// assertLicenseRepositoryFound(repositories[1],
-// NEWLICENSE, generatedLicence);
-//
-// // add another license
-//
-// addLicenseToRepository(repo, NEWLICENSE2);
-// repository.reload();
-//
-// repositories = repository.getAllRepositories();
-//
-// assertEquals(2, repositories.length);
-// assertNotNull(repositories[0]);
-// assertNotNull(repositories[1]);
-// assertNotNull(repositories[1].getBaseURL());
-// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
-// assertEquals(3, repositories[1].getDefinitions().size());
-//
-// assertLicenseRepositoryFound(repositories[1], NEWLICENSE,
-// NEWLICENSE2, generatedLicence);
-// }
-//
-// @Test
-// public void testGetLicenseNames() throws Exception {
-// LicenseRepository factory = LicenseRepositoryFactory.newJarLicenseRepository(true);
-//
-// int expectedJarResolverLicenses = 5;
-// List<LicenseDefinition> licenseNames = factory.getDefinitions();
-// //todo make dynamic that test
-// assertEquals(expectedJarResolverLicenses, licenseNames.size());
-//
-// // create a new dummy license repository with a license
-// File repo = createLicenseRepository(true);
-//
-// LicenseResolver resolver = new LicenseResolver();
-// resolver.setBaseURL(repo.toURI().toURL().toString());
-//
-// factory.addResolver(resolver);
-//
-// licenseNames = factory.getLicenseNames();
-// assertEquals(expectedJarResolverLicenses + 1, licenseNames.size());
-//
-// // add a new license to repo
-// long timestamp = System.currentTimeMillis();
-// String licenseName = "dummy2_" + timestamp;
-// addLicenseToRepository(repo, licenseName);
-//
-// factory = LicenseFactory.newInstance(repo.toURI().toURL().toString());
-//
-// licenseNames = factory.getLicenseNames();
-// assertEquals(expectedJarResolverLicenses + 2, licenseNames.size());
-//
-// }
-// @Test(expected = IllegalStateException.class)
-// public void testResolvIllegalArgumentException1() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-// // no baseURL
-// // no licenseName
-// // no licenses.txt
-// resolver.resolv(null);
-// }
-//
-// @Test(expected = IllegalStateException.class)
-// public void testResolvIllegalArgumentException2() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-//
-// // no baseURL
-// // no licenseName
-// // no licenses.txt
-// resolver.resolv("");
-// }
-//
-// @Test(expected = IllegalStateException.class)
-// public void testResolvIllegalArgumentException3() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-//
-// // no baseURL
-// // no licenseName
-// // no licenses.txt
-// resolver.resolv(" ");
-// }
-//
-// @Test(expected = IllegalStateException.class)
-// public void testResolvIllegalArgumentException4() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-//
-// // no baseURL
-// // no licenses.txt
-// resolver.resolv("dummy");
-// }
-//
-// @Test(expected = IllegalArgumentException.class)
-// public void testResolvIllegalArgumentException5() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-//
-//
-// resolver.setBaseURL("dummy");
-// // no licenses.txt
-// resolver.resolv("dummy");
-// }
-//
-// @Test
-// public void testResolv() throws Exception {
-//
-// LicenseResolver resolver = new LicenseResolver();
-//
-// long timestamp = System.currentTimeMillis();
-// String licenseName = "dummy_" + timestamp;
-//
-// File repo = createLicenseRepository(false);
-//
-// resolver.setBaseURL(repo.toURI().toURL().toString());
-//
-// License license;
-//
-// try {
-// // no licenses.properties
-// resolver.resolv(licenseName);
-// fail();
-// } catch (IllegalArgumentException e) {
-// assertTrue(true);
-// }
-//
-// addLicenseToRepository(repo, licenseName);
-//
-// //FileUtil.writeString(new File(repo, "licenses.properties"), licenseName + "=My dummy license\n", encoding);
-// //license = resolver.resolv(licenseName);
-// //assertNull(license);
-//
-// Map<String, String> licenseNames = resolver.getLicenseNames();
-// assertNotNull(licenseNames);
-// assertEquals(1, licenseNames.size());
-// assertTrue(licenseNames.containsKey(licenseName));
-//
-// // create dummy licenses
-// //File file = new File(repo, licenseName);
-// //file.mkdirs();
-// //FileUtil.writeString(new File(file, "license.txt"), "license", encoding);
-// //FileUtil.writeString(new File(file, "header.txt"), "header", encoding);
-//
-// license = resolver.resolv(licenseName);
-// assertNotNull(license);
-// assertEquals(licenseName, license.getName());
-// assertNotNull(license.getLicenseContent(encoding));
-// assertNotNull(license.getHeaderContent(encoding));
-// assertEquals("license:" + licenseName, license.getLicenseContent(encoding));
-// assertEquals("header:" + licenseName, license.getHeaderContent(encoding));
-//
-// }
-}
Modified: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -6,8 +6,6 @@
import java.io.IOException;
import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
/**
* Tests {@link LicenseRepository}.
@@ -17,17 +15,6 @@
*/
public class LicenseRepositoryTest {
- public static final List<String> DEFAULT_LICENSES = Arrays.asList(
- "apache_v2",
- "cddl_v1",
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3",
- "mit"
- );
-
protected LicenseRepository repository;
@Before
@@ -39,15 +26,18 @@
public void testJarRepository() throws IOException {
repository = new LicenseRepository();
- URL baseURL = getClass().getResource(LicenseStore.JAR_LICENSE_REPOSITORY);
+ URL baseURL = getClass().getResource(
+ LicenseStore.JAR_LICENSE_REPOSITORY
+ );
repository.setBaseURL(baseURL);
repository.load();
License[] licenses = repository.getLicenses();
Assert.assertNotNull(licenses);
- Assert.assertEquals(DEFAULT_LICENSES.size(), licenses.length);
+ Assert.assertEquals(LicenseStoreTest.DEFAULT_LICENSES.size(),
+ licenses.length);
- for (String licenseName : DEFAULT_LICENSES) {
+ for (String licenseName : LicenseStoreTest.DEFAULT_LICENSES) {
License license = repository.getLicense(licenseName);
Assert.assertNotNull(license);
}
Modified: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java 2010-04-06 13:41:31 UTC (rev 1708)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java 2010-04-06 16:21:34 UTC (rev 1709)
@@ -17,8 +17,10 @@
public class LicenseStoreTest {
public static final List<String> DEFAULT_LICENSES = Arrays.asList(
+ "agpl_v3",
"apache_v2",
"cddl_v1",
+ "fdl_v1_3",
"gpl_v1",
"gpl_v2",
"gpl_v3",
1
0
r1708 - in trunk/src: main/java/org/nuiton/license/plugin/repository test/java/org/nuiton/license/plugin/repository
by tchemit@users.nuiton.org 06 Apr '10
by tchemit@users.nuiton.org 06 Apr '10
06 Apr '10
Author: tchemit
Date: 2010-04-06 15:41:31 +0200 (Tue, 06 Apr 2010)
New Revision: 1708
Log:
add trsts
Added:
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java
Modified:
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 13:04:14 UTC (rev 1707)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 13:41:31 UTC (rev 1708)
@@ -36,7 +36,6 @@
*/
public class LicenseRepository {
-
/** Logger */
private static final Log log = LogFactory.getLog(LicenseRepository.class);
@@ -145,9 +144,9 @@
load();
}
- public List<License> getLicenses() {
+ public License[] getLicenses() {
checkInit("getLicense");
- return licenses;
+ return licenses.toArray(new License[licenses.size()]);
}
public License getLicense(String licenseName) {
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 13:04:14 UTC (rev 1707)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 13:41:31 UTC (rev 1708)
@@ -6,6 +6,7 @@
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@ -54,7 +55,7 @@
List<License> result = new ArrayList<License>();
if (repositories != null) {
for (LicenseRepository repository : repositories) {
- result.addAll(repository.getLicenses());
+ result.addAll(Arrays.asList(repository.getLicenses()));
}
}
return result.toArray(new License[result.size()]);
Added: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java (rev 0)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java 2010-04-06 13:41:31 UTC (rev 1708)
@@ -0,0 +1,55 @@
+package org.nuiton.license.plugin.repository;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests {@link LicenseRepository}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseRepositoryTest {
+
+ public static final List<String> DEFAULT_LICENSES = Arrays.asList(
+ "apache_v2",
+ "cddl_v1",
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3",
+ "mit"
+ );
+
+ protected LicenseRepository repository;
+
+ @Before
+ public void setUp() {
+ repository = null;
+ }
+
+ @Test
+ public void testJarRepository() throws IOException {
+
+ repository = new LicenseRepository();
+ URL baseURL = getClass().getResource(LicenseStore.JAR_LICENSE_REPOSITORY);
+ repository.setBaseURL(baseURL);
+ repository.load();
+
+ License[] licenses = repository.getLicenses();
+ Assert.assertNotNull(licenses);
+ Assert.assertEquals(DEFAULT_LICENSES.size(), licenses.length);
+
+ for (String licenseName : DEFAULT_LICENSES) {
+ License license = repository.getLicense(licenseName);
+ Assert.assertNotNull(license);
+ }
+ }
+}
Property changes on: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java 2010-04-06 13:04:14 UTC (rev 1707)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java 2010-04-06 13:41:31 UTC (rev 1708)
@@ -5,6 +5,7 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
/**
@@ -15,7 +16,8 @@
*/
public class LicenseStoreTest {
- public static final String[] DEFAULT_LICENSES = {"apache_v2",
+ public static final List<String> DEFAULT_LICENSES = Arrays.asList(
+ "apache_v2",
"cddl_v1",
"gpl_v1",
"gpl_v2",
@@ -23,9 +25,9 @@
"lgpl_v2_1",
"lgpl_v3",
"mit"
- };
+ );
- LicenseStore store;
+ protected LicenseStore store;
@Before
public void setUp() {
@@ -33,7 +35,7 @@
}
@Test
- public void testJArRepository() throws IOException {
+ public void testJarRepository() throws IOException {
store = new LicenseStore();
store.init();
@@ -43,9 +45,19 @@
Assert.assertEquals(1, repositories.size());
LicenseRepository repository = repositories.get(0);
+ License[] licenses1 = repository.getLicenses();
License[] licenses = store.getLicenses();
Assert.assertNotNull(licenses);
- Assert.assertEquals(DEFAULT_LICENSES.length, licenses.length);
+ Assert.assertNotNull(licenses1);
+ Assert.assertEquals(DEFAULT_LICENSES.size(), licenses.length);
+ Assert.assertEquals(DEFAULT_LICENSES.size(), licenses1.length);
+ for (String licenseName : DEFAULT_LICENSES) {
+ License license = repository.getLicense(licenseName);
+ License license1 = store.getLicense(licenseName);
+ Assert.assertNotNull(license);
+ Assert.assertNotNull(license1);
+ Assert.assertEquals(license, license1);
+ }
}
}
1
0
r1707 - in trunk/src: main/java/org/nuiton/license/plugin main/java/org/nuiton/license/plugin/repository main/resources/META-INF/licenses main/resources/META-INF/licenses/cddl_v1 main/resources/META-INF/licenses/mit test/java/org/nuiton/license/plugin/repository
by tchemit@users.nuiton.org 06 Apr '10
by tchemit@users.nuiton.org 06 Apr '10
06 Apr '10
Author: tchemit
Date: 2010-04-06 15:04:14 +0200 (Tue, 06 Apr 2010)
New Revision: 1707
Log:
introduce LicenseStore, deprecates LicenseRepository, + other stuff to be continued...
Added:
trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java
trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
trunk/src/main/resources/META-INF/licenses/cddl_v1/
trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt
trunk/src/main/resources/META-INF/licenses/cddl_v1/license.txt
trunk/src/main/resources/META-INF/licenses/mit/
trunk/src/main/resources/META-INF/licenses/mit/header.txt
trunk/src/main/resources/META-INF/licenses/mit/license.txt
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
Added: trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,94 @@
+package org.nuiton.license.plugin;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.nuiton.license.plugin.repository.LicenseStore;
+import org.nuiton.plugin.AbstractPlugin;
+
+import java.io.IOException;
+
+/**
+ * Abstract license mojo.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public abstract class AbstractLicenseMojo extends AbstractPlugin {
+
+ /**
+ * Dependance du projet.
+ *
+ * @parameter default-value="${project}"
+ * @required
+ * @since 2.1
+ */
+ private MavenProject project;
+
+ /**
+ * Un flag pour activer le mode verbeux.
+ *
+ * @parameter expression="${license.verbose}" default-value="${maven.verbose}"
+ * @since 2.1
+ */
+ private boolean verbose;
+
+ /**
+ * Encoding a utiliser pour lire et ecrire les fichiers.
+ *
+ * @parameter expression="${license.encoding}" default-value="${project.build.sourceEncoding}"
+ * @required
+ * @since 2.1
+ */
+ private String encoding;
+
+ @Override
+ public final MavenProject getProject() {
+ return project;
+ }
+
+ @Override
+ public final void setProject(MavenProject project) {
+ this.project = project;
+ }
+
+ @Override
+ public final boolean isVerbose() {
+ return verbose;
+ }
+
+ @Override
+ public final void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public final String getEncoding() {
+ return encoding;
+ }
+
+ public final void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+ protected LicenseStore createLicenseStore(String... extraResolver)
+ throws MojoExecutionException {
+ LicenseStore store;
+ try {
+ store = new LicenseStore();
+ store.addJarRepository();
+ if (extraResolver != null) {
+ for (String s : extraResolver) {
+ store.addRepository(s);
+ }
+ }
+ store.init();
+ } catch (IllegalArgumentException ex) {
+ throw new MojoExecutionException(
+ "could not obtain the license repository", ex);
+ } catch (IOException ex) {
+ throw new MojoExecutionException(
+ "could not obtain the license repository", ex);
+ }
+ return store;
+ }
+
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/AbstractLicenseMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,181 @@
+package org.nuiton.license.plugin;
+
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.velocity.VelocityComponent;
+import org.nuiton.license.plugin.header.generator.HeaderGenerator;
+import org.nuiton.plugin.AbstractPlugin;
+import org.nuiton.plugin.PluginHelper;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * The goal to update (or add) the licence header on some files.
+ * <p/>
+ * This goal replace the {@code update-header} goal which can not deal with
+ * Copyright.
+ * <p/>
+ * This goal use a specific project file descriptor {@code license.xml} to
+ * describe all files to treate more precisly for a whole project.
+ *
+ * @author chemit
+ * @requiresProject true
+ * @goal update-header-file
+ * @since 1.2
+ */
+public class UpdateHeaderFileMojo extends AbstractLicenseMojo {
+
+ /**
+ * l'annee de creation du module (sera place dans le header)
+ *
+ * @parameter expression="${license.inceptionYear}" default-value="${project.inceptionYear}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String inceptionYear;
+
+ /**
+ * le nom de l'organisation (sera place dans le header)
+ *
+ * @parameter expression="${license.organizationName}"
+ * default-value="${project.organization.name}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String organizationName;
+
+ /**
+ * le nom du projet (sera place dans le header)
+ *
+ * @parameter expression="${license.projectName}" default-value="${project.name}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String projectName;
+
+ /**
+ * Le type de license a appliquer.
+ *
+ * @parameter expression="${license.licenseName}"
+ * @required
+ * @since 1.0.0
+ */
+ protected String licenseName;
+
+ /**
+ * Un flag pour conserver un backup des fichiers modifies.
+ *
+ * @parameter expression="${license.keepBackup}" default-value="false"
+ * @since 1.0.0
+ */
+ protected boolean keepBackup;
+
+ /**
+ * A flag to skip the goal.
+ *
+ * @parameter expression="${skipUpdateHeader}" default-value="false"
+ * @since 1.0.3
+ */
+ protected boolean skipUpdateHeader;
+
+ /**
+ * A flag to test plugin but modify no file.
+ *
+ * @parameter expression="${dryRun}" default-value="false"
+ * @since 1.0.3
+ */
+ protected boolean dryRun;
+
+ /**
+ * Velocity Component.
+ *
+ * @component roleHint="maven-license-plugin"
+ * @since 2.0.0
+ */
+ protected VelocityComponent velocity;
+
+ /**
+ * All available generators
+ *
+ * @component role="org.nuiton.license.plugin.header.generator.HeaderGenerator"
+ */
+ protected Map<String, HeaderGenerator> _generators;
+
+ /** le timestamp utilise pour la generation */
+ protected long timestamp;
+
+ @Override
+ protected void init() throws Exception {
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ }
+
+ public boolean isDryRun() {
+ return dryRun;
+ }
+
+ public void setDryRun(boolean dryRun) {
+ this.dryRun = dryRun;
+ }
+
+ public boolean isKeepBackup() {
+ return keepBackup;
+ }
+
+ public void setKeepBackup(boolean keepBackup) {
+ this.keepBackup = keepBackup;
+ }
+
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(long timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public boolean isSkipUpdateHeader() {
+ return skipUpdateHeader;
+ }
+
+ public void setSkipUpdateHeader(boolean skipUpdateHeader) {
+ this.skipUpdateHeader = skipUpdateHeader;
+ }
+
+ public String getInceptionYear() {
+ return inceptionYear;
+ }
+
+ public void setInceptionYear(String inceptionYear) {
+ this.inceptionYear = inceptionYear;
+ }
+
+ public String getLicenseName() {
+ return licenseName;
+ }
+
+ public void setLicenseName(String licenseName) {
+ this.licenseName = licenseName;
+ }
+
+ public String getOrganizationName() {
+ return organizationName;
+ }
+
+ public void setOrganizationName(String organizationName) {
+ this.organizationName = organizationName;
+ }
+
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderFileMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java (rev 0)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,134 @@
+package org.nuiton.license.plugin.repository;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * The {@code LicenseStore} offers {@link License} coming from different {@link
+ * LicenseRepository}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseStore implements Iterable<LicenseRepository> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(LicenseStore.class);
+
+ /** class-path directory where is the licenses repository */
+ public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
+
+ /** list of available license repositories */
+ protected List<LicenseRepository> repositories;
+
+ /** flag to know if store was init */
+ protected boolean init;
+
+ public void init() throws IOException {
+ checkNotInit("init");
+ try {
+ if (repositories == null) {
+ // adding the default class-path repository
+ addJarRepository();
+ }
+ for (LicenseRepository r : repositories) {
+ r.load();
+ }
+ } finally {
+ init = true;
+ }
+ }
+
+ public List<LicenseRepository> getRepositories() {
+ return repositories;
+ }
+
+ public License[] getLicenses() {
+ checkInit("getLicenses");
+ List<License> result = new ArrayList<License>();
+ if (repositories != null) {
+ for (LicenseRepository repository : repositories) {
+ result.addAll(repository.getLicenses());
+ }
+ }
+ return result.toArray(new License[result.size()]);
+ }
+
+ public License getLicense(String licenseName) {
+ checkInit("getLicense");
+ Iterator<LicenseRepository> itr = iterator();
+ License result = null;
+ while (itr.hasNext()) {
+ LicenseRepository licenseRepository = itr.next();
+ License license = licenseRepository.getLicense(licenseName);
+ if (license != null) {
+ result = license;
+ break;
+ }
+ }
+ if (result == null && log.isDebugEnabled()) {
+ log.debug("could not find license named '" + licenseName + "'");
+ }
+ return result;
+ }
+
+ public void addRepository(String extraResolver) throws IOException {
+ addRepository(new URL(extraResolver));
+ }
+
+ public void addRepository(URL baseURL) throws IOException {
+ checkNotInit("addRepository");
+ LicenseRepository repository = new LicenseRepository();
+ repository.setBaseURL(baseURL);
+ if (log.isDebugEnabled()) {
+ log.debug("Adding a license repository " + repository);
+ }
+ addRepository(repository);
+ }
+
+ public void addJarRepository() throws IOException {
+ checkNotInit("addJarRepository");
+ URL baseURL = getClass().getResource(JAR_LICENSE_REPOSITORY);
+ LicenseRepository repository = new LicenseRepository();
+ repository.setBaseURL(baseURL);
+ if (log.isDebugEnabled()) {
+ log.debug("Adding a jar license repository " + repository);
+ }
+ addRepository(repository);
+ }
+
+ @Override
+ public Iterator<LicenseRepository> iterator() {
+ return getRepositories().iterator();
+ }
+
+ protected void addRepository(LicenseRepository repository) {
+ checkNotInit("addRepository");
+ if (repositories == null) {
+ repositories = new ArrayList<LicenseRepository>();
+
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Adding a license repository " + repository);
+ }
+ repositories.add(repository);
+ }
+
+ protected void checkInit(String operation) throws IllegalStateException {
+ if (!init) {
+ throw new IllegalStateException("store was not init, operation [" + operation + "] not possible.");
+ }
+ }
+
+ protected void checkNotInit(String operation) throws IllegalStateException {
+ if (init) {
+ throw new IllegalStateException("store was init, operation [" + operation + "+] not possible.");
+ }
+ }
+}
Property changes on: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseStore.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/cddl_v1/header.txt 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,3 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+TODO
Added: trunk/src/main/resources/META-INF/licenses/cddl_v1/license.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/cddl_v1/license.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/cddl_v1/license.txt 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,380 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. ¤
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
Added: trunk/src/main/resources/META-INF/licenses/mit/header.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/mit/header.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/mit/header.txt 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Added: trunk/src/main/resources/META-INF/licenses/mit/license.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/mit/license.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/mit/license.txt 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Added: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java (rev 0)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java 2010-04-06 13:04:14 UTC (rev 1707)
@@ -0,0 +1,51 @@
+package org.nuiton.license.plugin.repository;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Tests {@link LicenseStore}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+public class LicenseStoreTest {
+
+ public static final String[] DEFAULT_LICENSES = {"apache_v2",
+ "cddl_v1",
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3",
+ "mit"
+ };
+
+ LicenseStore store;
+
+ @Before
+ public void setUp() {
+ store = null;
+ }
+
+ @Test
+ public void testJArRepository() throws IOException {
+
+ store = new LicenseStore();
+ store.init();
+
+ List<LicenseRepository> repositories = store.getRepositories();
+ Assert.assertNotNull(repositories);
+ Assert.assertEquals(1, repositories.size());
+ LicenseRepository repository = repositories.get(0);
+
+ License[] licenses = store.getLicenses();
+ Assert.assertNotNull(licenses);
+ Assert.assertEquals(DEFAULT_LICENSES.length, licenses.length);
+
+ }
+}
Property changes on: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseStoreTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
1
0
r1706 - in trunk/src: . it main/java/org/nuiton/license/plugin main/java/org/nuiton/license/plugin/header/generator main/java/org/nuiton/license/plugin/repository main/resources/META-INF/licenses site/rst test/java/org/nuiton/license/plugin/repository
by tchemit@users.nuiton.org 06 Apr '10
by tchemit@users.nuiton.org 06 Apr '10
06 Apr '10
Author: tchemit
Date: 2010-04-06 15:03:55 +0200 (Tue, 06 Apr 2010)
New Revision: 1706
Log:
introduce LicenseStore, deprecates LicenseRepository, + other stuff to be continued...
Added:
trunk/src/it/
trunk/src/it/add-license-file/
trunk/src/it/add-third-party-file/
trunk/src/it/update-header-file/
Modified:
trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java
trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
trunk/src/main/resources/META-INF/licenses/licenses.properties
trunk/src/site/rst/index.rst
trunk/src/site/rst/usage.rst
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
Modified: trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -20,12 +20,8 @@
*/
package org.nuiton.license.plugin;
-
-import org.apache.maven.project.MavenProject;
import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseRepository;
-import org.nuiton.license.plugin.repository.LicenseRepositoryFactory;
-import org.nuiton.plugin.AbstractPlugin;
+import org.nuiton.license.plugin.repository.LicenseStore;
import org.nuiton.plugin.PluginHelper;
import java.io.File;
@@ -40,18 +36,9 @@
* @requiresProject true
* @requiresDependencyResolution compile
*/
-public class AddLicenseFileMojo extends AbstractPlugin {
+public class AddLicenseFileMojo extends AbstractLicenseMojo {
/**
- * Dependance du projet.
- *
- * @parameter default-value="${project}"
- * @required
- * @since 1.0.0
- */
- protected MavenProject project;
-
- /**
* Fichier de la licence du module.
*
* @parameter expression="${license.licenceFile}" default-value="${basedir}/LICENSE.txt"
@@ -94,15 +81,6 @@
protected String licenseFilename;
/**
- * Encoding a utiliser pour lire et ecrire les fichiers.
- *
- * @parameter expression="${helper.encoding}" default-value="${project.build.sourceEncoding}"
- * @required
- * @since 1.0.0
- */
- protected String encoding;
-
- /**
* Un flag pour conserver un backup des fichiers modifies.
*
* @parameter expression="${license.keepBackup}" default-value="false"
@@ -119,14 +97,6 @@
protected boolean force;
/**
- * Un flag pour activer le mode verbeux.
- *
- * @parameter expression="${license.verbose}" default-value="${maven.verbose}"
- * @since 1.0.0
- */
- protected boolean verbose;
-
- /**
* Un flag pour faire une copie nommée dans META-INF (prefixe avec le nom de
* l'artifact).
* <p/>
@@ -167,14 +137,17 @@
// acquire license
- LicenseRepository factory =
- LicenseRepositoryFactory.newLicenseRepository(
- true,
- true,
- extraResolver
- );
+ LicenseStore licenseStore = createLicenseStore(extraResolver);
+ license = licenseStore.getLicense(licenseName);
- license = factory.getLicense(licenseName);
+// LicenseRepository factory =
+// LicenseRepositoryFactory.newLicenseRepository(
+// true,
+// true,
+// extraResolver
+// );
+//
+// license = factory.getLicense(licenseName);
if (licenseFilename == null || licenseFilename.isEmpty()) {
licenseFilename = licenseName;
@@ -186,12 +159,12 @@
getLog().info("using licence [" + licenseName + "]");
if (doGenerate) {
- if (verbose) {
+ if (isVerbose()) {
getLog().info("detail : " + license);
}
if (licenseFile.exists() && keepBackup) {
- if (verbose) {
+ if (isVerbose()) {
getLog().info("backup " + licenseFile);
}
// copy it to backup file
@@ -199,10 +172,10 @@
}
}
- String licenseContent = license.getLicenseContent(encoding);
+ String licenseContent = license.getLicenseContent(getEncoding());
if (doGenerate) {
- writeFile(licenseFile, licenseContent, encoding);
+ writeFile(licenseFile, licenseContent, getEncoding());
}
if (hasClassPath()) {
@@ -214,8 +187,8 @@
if (copyToMETA_INF) {
File destFile = PluginHelper.getFile(
outputDirectory,
- "META-INF", project.getArtifactId() + "-" +
- licenseFile.getName()
+ "META-INF", getProject().getArtifactId() + "-" +
+ licenseFile.getName()
);
copyFile(licenseFile, destFile);
}
@@ -239,10 +212,6 @@
return extraResolver;
}
- public String getEncoding() {
- return encoding;
- }
-
public boolean isKeepBackup() {
return keepBackup;
}
@@ -271,10 +240,6 @@
this.license = license;
}
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-
public void setKeepBackup(boolean keepBackup) {
this.keepBackup = keepBackup;
}
@@ -286,24 +251,4 @@
public void setForce(boolean force) {
this.force = force;
}
-
- @Override
- public boolean isVerbose() {
- return verbose;
- }
-
- @Override
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
- }
-
- @Override
- public MavenProject getProject() {
- return project;
- }
-
- @Override
- public void setProject(MavenProject project) {
- this.project = project;
- }
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -34,7 +34,6 @@
import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
-import org.nuiton.plugin.AbstractPlugin;
import org.nuiton.plugin.PluginHelper;
import java.io.File;
@@ -54,21 +53,11 @@
* @requiresDependencyResolution test
* @requiresProject true
*/
-public class AddThirdPartyFileMojo extends AbstractPlugin {
+public class AddThirdPartyFileMojo extends AbstractLicenseMojo {
private static final String unknownLicenseMessage = "Unknown license";
/**
- * Dependance du projet.
- *
- * @parameter default-value="${project}"
- * @required
- * @readonly
- * @since 1.0.0
- */
- protected MavenProject project;
-
- /**
* Fichier ou ecrire les licences des dependances.
*
* @parameter expression="${license.thirdPartyFilename}"
@@ -81,23 +70,13 @@
/**
* Repertoire de sortie des classes (classpath).
*
- * @parameter expression="${license.outputDirectory}"
- * default-value="target/generated-sources/license"
+ * @parameter expression="${license.outputDirectory}" default-value="target/generated-sources/license"
* @required
* @since 1.0.0
*/
protected File outputDirectory;
/**
- * Encoding a utiliser pour lire et ecrire les fichiers.
- *
- * @parameter expression="${license.encoding}" default-value="${project.build.sourceEncoding}"
- * @required
- * @since 1.0.0
- */
- protected String encoding;
-
- /**
* Un flag pour forcer la generation.
*
* @parameter expression="${license.force}" default-value="false"
@@ -123,14 +102,6 @@
protected boolean copyToMETA_INF;
/**
- * Un flag pour activer le mode verbeux.
- *
- * @parameter expression="${license.verbose}" default-value="${maven.verbose}"
- * @since 1.0.0
- */
- protected boolean verbose;
-
- /**
* Local Repository.
*
* @parameter expression="${localRepository}"
@@ -236,29 +207,29 @@
}
}
} else {
- thirdPartyFileContent = PluginHelper.readAsString(thirdPartyFile, encoding);
+ thirdPartyFileContent = PluginHelper.readAsString(thirdPartyFile, getEncoding());
}
}
@Override
protected void doAction() throws Exception {
if (doGenerate) {
- if (verbose) {
+ if (isVerbose()) {
getLog().info("writing third-party file : " + thirdPartyFile);
}
if (keepBackup && thirdPartyFile.exists()) {
- if (verbose) {
+ if (isVerbose()) {
getLog().info("backup " + thirdPartyFile);
}
backupFile(thirdPartyFile);
}
- writeFile(thirdPartyFile, thirdPartyFileContent, encoding);
+ writeFile(thirdPartyFile, thirdPartyFileContent, getEncoding());
}
if (copyToMETA_INF) {
copyFile(thirdPartyFile, new File(
outputDirectory,
- "META-INF" + File.separator + project.getArtifactId() +
- "-" + thirdPartyFile.getName())
+ "META-INF" + File.separator + getProject().getArtifactId() +
+ "-" + thirdPartyFile.getName())
);
}
addResourceDir(outputDirectory, "**/*.txt");
@@ -270,7 +241,7 @@
ArtifactFilter artifactFilter =
new ScopeArtifactFilter(Artifact.SCOPE_TEST);
return dependencyTreeBuilder.buildDependencyTree(
- project,
+ getProject(),
localRepository,
factory,
artifactMetadataSource,
@@ -286,15 +257,15 @@
protected void buildLicenseMap(DependencyNode node, LicenseMap licenseMap) {
if (node.getState() != DependencyNode.INCLUDED) {
// this dependency is not included, so do not treate it
- if (verbose) {
+ if (isVerbose()) {
getLog().info("do not include this dependency " +
- node.toNodeString());
+ node.toNodeString());
}
return;
}
Artifact artifact = node.getArtifact();
- if (verbose && getLog().isDebugEnabled()) {
+ if (isVerbose() && getLog().isDebugEnabled()) {
getLog().debug("treate node " + node.toNodeString());
}
@@ -314,7 +285,7 @@
for (Object o : licenses) {
if (o == null) {
getLog().warn("could not acquire the license for "
- + artifactName);
+ + artifactName);
continue;
}
License license = (License) o;
@@ -339,7 +310,7 @@
protected String buildGroupedLicenses(LicenseMap licenseMap) {
StringBuilder sb = new StringBuilder();
sb.append("List of third-party dependencies grouped by " +
- "their license type.");
+ "their license type.");
for (String licenseName : licenseMap.keySet()) {
sb.append("\n\n").append(licenseName).append(" : ");
@@ -419,24 +390,4 @@
return put(key, valueList);
}
}
-
- @Override
- public boolean isVerbose() {
- return verbose;
- }
-
- @Override
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
- }
-
- @Override
- public MavenProject getProject() {
- return project;
- }
-
- @Override
- public void setProject(MavenProject project) {
- this.project = project;
- }
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -20,7 +20,6 @@
*/
package org.nuiton.license.plugin;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.nuiton.license.plugin.header.generator.HeaderGenerator;
@@ -37,7 +36,7 @@
* @goal generator-list
* @since 1.0.1
*/
-public class GeneratorListMojo extends AbstractMojo {
+public class GeneratorListMojo extends AbstractLicenseMojo {
/**
* Un drapeau pour afficher aussi le contenu des license.
@@ -55,8 +54,13 @@
protected Map<String, HeaderGenerator> _generators;
@Override
- public void execute() throws MojoExecutionException, MojoFailureException {
+ protected void init() throws Exception {
+ // nothing to do
+ }
+ @Override
+ public void doAction() throws MojoExecutionException, MojoFailureException {
+
// display it
StringBuilder buffer = new StringBuilder("\n");
buffer.append("\n\n-------------------------------------------------------------------------------\n");
Modified: trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -20,13 +20,10 @@
*/
package org.nuiton.license.plugin;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseDefinition;
-import org.nuiton.license.plugin.repository.LicenseRepository;
-import org.nuiton.license.plugin.repository.LicenseRepositoryFactory;
+import org.nuiton.license.plugin.repository.LicenseStore;
import java.io.IOException;
@@ -39,7 +36,7 @@
* @requiresDirectInvocation
* @since 1.0.1
*/
-public class LicenseListMojo extends AbstractMojo {
+public class LicenseListMojo extends AbstractLicenseMojo {
/**
* La baseURL d'un resolver de license supplementaire
@@ -50,15 +47,6 @@
protected String extraResolver;
/**
- * Encoding a utiliser pour lire et ecrire les fichiers.
- *
- * @parameter expression="${encoding}" default-value="UTF-8"
- * @required
- * @since 1.0.0
- */
- protected String encoding;
-
- /**
* Un drapeau pour afficher aussi le contenu des license.
*
* @parameter expression="${detail}"
@@ -66,50 +54,80 @@
*/
protected boolean detail;
+ /** store of licenses */
+ protected LicenseStore licenseStore;
+
@Override
- public void execute() throws MojoExecutionException, MojoFailureException {
+ protected void init() throws Exception {
+ // obtain licenses store
+ licenseStore = createLicenseStore(extraResolver);
+ }
+
+ @Override
+ public void doAction() throws MojoExecutionException, MojoFailureException {
StringBuilder buffer = new StringBuilder();
buffer.append("\n\n-------------------------------------------------------------------------------\n");
buffer.append(" maven-license-plugin\n");
buffer.append("-------------------------------------------------------------------------------\n\n");
buffer.append("Available licenses :\n\n");
- LicenseRepository factory;
- try {
- factory = LicenseRepositoryFactory.newLicenseRepository(
- true,
- true,
- extraResolver
- );
- } catch (IllegalArgumentException ex) {
- throw new MojoExecutionException(
- "could not obtain the license repository", ex);
- } catch (IOException ex) {
- throw new MojoExecutionException(
- "could not obtain the license repository", ex);
- }
-
- for (LicenseDefinition entry : factory.getDefinitions()) {
- String licenseName = entry.getName();
+ for (License license : licenseStore.getLicenses()) {
+ String licenseName = license.getName();
buffer.append(" * ");
buffer.append(licenseName);
buffer.append(" : ");
- buffer.append(entry.getDescription());
+ buffer.append(license.getDescription());
buffer.append('\n');
if (detail) {
try {
-
- License license = factory.getLicense(licenseName);
buffer.append("\n");
- buffer.append(license.getHeaderContent(encoding));
+ buffer.append(license.getHeaderContent(getEncoding()));
buffer.append("\n\n");
} catch (IOException ex) {
throw new MojoExecutionException(
"could not instanciate license with name " +
- licenseName + " for reason " + ex.getMessage(), ex);
+ licenseName + " for reason " + ex.getMessage(), ex);
}
}
}
getLog().info(buffer.toString());
+// LicenseRepository factory;
+// try {
+// factory = LicenseRepositoryFactory.newLicenseRepository(
+// true,
+// true,
+// extraResolver
+// );
+// } catch (IllegalArgumentException ex) {
+// throw new MojoExecutionException(
+// "could not obtain the license repository", ex);
+// } catch (IOException ex) {
+// throw new MojoExecutionException(
+// "could not obtain the license repository", ex);
+// }
+//
+// for (LicenseDefinition entry : factory.getDefinitions()) {
+// String licenseName = entry.getName();
+// buffer.append(" * ");
+// buffer.append(licenseName);
+// buffer.append(" : ");
+// buffer.append(entry.getDescription());
+// buffer.append('\n');
+// if (detail) {
+// try {
+//
+// License license = factory.getLicense(licenseName);
+// buffer.append("\n");
+// buffer.append(license.getHeaderContent(encoding));
+// buffer.append("\n\n");
+// } catch (IOException ex) {
+// throw new MojoExecutionException(
+// "could not instanciate license with name " +
+// licenseName + " for reason " + ex.getMessage(), ex);
+// }
+// }
+// }
+// getLog().info(buffer.toString());
}
+
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -21,7 +21,6 @@
package org.nuiton.license.plugin;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
@@ -29,9 +28,7 @@
import org.codehaus.plexus.velocity.VelocityComponent;
import org.nuiton.license.plugin.header.generator.HeaderGenerator;
import org.nuiton.license.plugin.repository.License;
-import org.nuiton.license.plugin.repository.LicenseRepository;
-import org.nuiton.license.plugin.repository.LicenseRepositoryFactory;
-import org.nuiton.plugin.AbstractPlugin;
+import org.nuiton.license.plugin.repository.LicenseStore;
import org.nuiton.plugin.PluginHelper;
import org.nuiton.processor.LicenseProcessor;
@@ -47,28 +44,12 @@
* @requiresProject true
* @goal update-header
* @since 1.0.1
+ * @deprecated since 1.2, use now the <b>update-header-file</b> goal instead.
*/
-public class UpdateHeaderMojo extends AbstractPlugin {
+@Deprecated
+public class UpdateHeaderMojo extends AbstractLicenseMojo {
/**
- * Dependance du projet.
- *
- * @parameter default-value="${project}"
- * @required
- * @since 1.0.0
- */
- protected MavenProject project;
-
- /**
- * Encoding a utiliser pour lire et ecrire les fichiers.
- *
- * @parameter expression="${license.encoding}" default-value="${project.build.sourceEncoding}"
- * @required
- * @since 1.0.0
- */
- protected String encoding;
-
- /**
* l'annee de creation du module (sera place dans le header)
*
* @parameter expression="${license.inceptionYear}" default-value="${project.inceptionYear}"
@@ -232,14 +213,6 @@
protected boolean keepBackup;
/**
- * Un flag pour activer le mode verbeux.
- *
- * @parameter expression="${license.verbose}" default-value="${maven.verbose}"
- * @since 1.0.0
- */
- protected boolean verbose;
-
- /**
* A flag to skip the goal.
*
* @parameter expression="${skipUpdateHeader}" default-value="false"
@@ -285,27 +258,10 @@
/** le timestamp utilise pour la generation */
protected long timestamp;
- @Override
- public boolean isVerbose() {
- return verbose;
- }
+ /** store of licenses */
+ protected LicenseStore licenseStore;
@Override
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
- }
-
- @Override
- public MavenProject getProject() {
- return project;
- }
-
- @Override
- public void setProject(MavenProject project) {
- this.project = project;
- }
-
- @Override
public boolean checkPackaging() {
return true;
}
@@ -353,7 +309,7 @@
// should never happen...
throw new MojoExecutionException("no header generator found");
}
- if (verbose) {
+ if (isVerbose()) {
for (Entry<String, HeaderGenerator> e : _generators.entrySet()) {
Entry<String, HeaderGenerator> next = e;
getLog().info("config - available generator : " + next.getKey());
@@ -396,15 +352,19 @@
checkResource(templateFile);
// recuperation de la license a utiliser
- LicenseRepository factory =
- LicenseRepositoryFactory.newLicenseRepository(
- true,
- true,
- licenseResolver
- );
- License license = factory.getLicense(licenseName);
+ licenseStore = createLicenseStore(licenseResolver);
+
+ License license = licenseStore.getLicense(licenseName);
+//
+// LicenseRepository factory =
+// LicenseRepositoryFactory.newLicenseRepository(
+// true,
+// true,
+// licenseResolver
+// );
+// License license = factory.getLicense(licenseName);
- if (verbose) {
+ if (isVerbose()) {
getLog().info("config - use license " + license.getName());
getLog().info("config - use generator " + generator.getName());
getLog().info("config - use template " + template);
@@ -414,7 +374,7 @@
// build the comment boxed header content
boxedLicenseHeaderContent = generator.getHeader(licenseHeaderContent);
- if (verbose) {
+ if (isVerbose()) {
getLog().info("config - header to use\n" +
boxedLicenseHeaderContent);
}
@@ -432,7 +392,7 @@
for (String javaRelativePath : entry.getValue()) {
File file = new File(src, javaRelativePath);
- if (verbose) {
+ if (isVerbose()) {
getLog().info("process file " + file);
}
@@ -454,18 +414,18 @@
getLog().info("adding license header on file " + file);
String content = PluginHelper.readAsString(
file,
- encoding
+ getEncoding()
);
content = boxedLicenseHeaderContent + content;
if (!dryRun) {
- writeFile(processFile, content, encoding);
+ writeFile(processFile, content, getEncoding());
}
}
}
if (keepBackup && !dryRun) {
File backupFile = new File(file.getAbsolutePath() + "~");
- if (verbose) {
+ if (isVerbose()) {
getLog().debug("backup original file " + file);
}
renameFile(file, backupFile);
@@ -505,7 +465,7 @@
HeaderGenerator generator) throws Exception {
// recuperation de la license a mettre dans le header
- String licenseContent = license.getHeaderContent(encoding);
+ String licenseContent = license.getHeaderContent(getEncoding());
// defined inceptionYear (if year is older than now suffix with a - thisYear)
Calendar cal = Calendar.getInstance();
@@ -530,7 +490,7 @@
}
}
- if (verbose) {
+ if (isVerbose()) {
StringBuilder buffer = new StringBuilder();
buffer.append("config - parameters for template : ");
@@ -548,7 +508,7 @@
StringWriter writer = new StringWriter();
- Template velocityTemplate = engine.getTemplate(template, encoding);
+ Template velocityTemplate = engine.getTemplate(template, getEncoding());
velocityTemplate.merge(context, writer);
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -36,8 +36,19 @@
public static final String GENERATOR_DESCRIPTION =
"generator with apt comment style";
+ public static final String PREFIX = "~~~ ";
+
+ public static final String OPEN_TAG = "\n";
+
+ public static final String CLOSE_TAG = "\n";
+
public AptLicenseHeaderGeneratorImpl() {
- super("~~~ ", "\n", "\n", LicenseFilter.HEADER, LicenseFilter.FOOTER);
+ super(PREFIX,
+ OPEN_TAG,
+ CLOSE_TAG,
+ LicenseFilter.HEADER,
+ LicenseFilter.FOOTER
+ );
}
@Override
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -36,8 +36,19 @@
public static final String GENERATOR_DESCRIPTION =
"generator with java comment style";
+ public static final String PREFIX = " *";
+
+ public static final String OPEN_TAG = "/*";
+
+ public static final String CLOSE_TAG = " */";
+
public JavaLicenseHeaderGeneratorImpl() {
- super(" *", "/*", " */", LicenseFilter.HEADER, LicenseFilter.FOOTER);
+ super(PREFIX,
+ OPEN_TAG,
+ CLOSE_TAG,
+ LicenseFilter.HEADER,
+ LicenseFilter.FOOTER
+ );
}
@Override
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -42,7 +42,12 @@
public static final String PREFIX = "#";
public PropertiesLicenseHeaderGeneratorImpl() {
- super(PREFIX, LINE, LINE, LicenseFilter.HEADER, LicenseFilter.FOOTER);
+ super(PREFIX,
+ LINE,
+ LINE,
+ LicenseFilter.HEADER,
+ LicenseFilter.FOOTER
+ );
}
@Override
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -36,8 +36,19 @@
public static final String GENERATOR_DESCRIPTION =
"generator with xml comment style";
+ public static final String PREFIX = " ";
+
+ public static final String OPEN_TAG = "<!--";
+
+ public static final String CLOSE_TAG = "-->";
+
public XmlLicenseHeaderGeneratorImpl() {
- super(" ", "<!--", "-->", LicenseFilter.HEADER, LicenseFilter.FOOTER);
+ super(PREFIX,
+ OPEN_TAG,
+ CLOSE_TAG,
+ LicenseFilter.HEADER,
+ LicenseFilter.FOOTER
+ );
}
@Override
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -37,6 +37,13 @@
*/
public class License {
+
+ public static final String LICENSE_HEADER_FILE = "header.txt";
+
+ public static final String LICENSE_CONTENT_FILE = "license.txt";
+
+ protected URL baseURL;
+
/** the name of the licenses (ex lgpl-3.0) */
protected String name;
@@ -57,10 +64,17 @@
}
public URL getLicenseURL() {
+ if (licenseURL == null) {
+
+ licenseURL = LicenseRepository.getUrl(baseURL, LICENSE_CONTENT_FILE);
+ }
return licenseURL;
}
public URL getHeaderURL() {
+ if (headerURL == null) {
+ headerURL = LicenseRepository.getUrl(baseURL, LICENSE_HEADER_FILE);
+ }
return headerURL;
}
@@ -68,13 +82,17 @@
return description;
}
+ public URL getBaseURL() {
+ return baseURL;
+ }
+
public String getLicenseContent(String encoding) throws IOException {
if (licenseURL == null) {
- throw new IllegalStateException("no licenseURL defined in " + this);
+ throw new IllegalStateException("no licenseURL defined, can not obtain license content in " + this);
}
Reader r = new BufferedReader(
- new InputStreamReader(licenseURL.openStream(), encoding));
+ new InputStreamReader(getLicenseURL().openStream(), encoding));
try {
return IOUtil.toString(r);
} finally {
@@ -83,11 +101,11 @@
}
public String getHeaderContent(String encoding) throws IOException {
- if (headerURL == null) {
- throw new IllegalStateException("no headerURL defined in " + this);
+ if (baseURL == null) {
+ throw new IllegalStateException("no baseURL defined, can not obtain header content in " + this);
}
Reader r = new BufferedReader(
- new InputStreamReader(headerURL.openStream(), encoding));
+ new InputStreamReader(getHeaderURL().openStream(), encoding));
try {
return IOUtil.toString(r);
} finally {
@@ -99,18 +117,24 @@
this.name = name;
}
- public void setLicenseURL(URL licenseURL) {
- this.licenseURL = licenseURL;
- }
+// @Deprecated
+// public void setLicenseURL(URL licenseURL) {
+// this.licenseURL = licenseURL;
+// }
+//
+// @Deprecated
+// public void setHeaderURL(URL headerURL) {
+// this.headerURL = headerURL;
+// }
- public void setHeaderURL(URL headerURL) {
- this.headerURL = headerURL;
- }
-
public void setDescription(String description) {
this.description = description;
}
+ public void setBaseURL(URL baseURL) {
+ this.baseURL = baseURL;
+ }
+
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(
@@ -119,8 +143,8 @@
);
builder.append("name", name);
builder.append("description", description);
- builder.append("licenseURL", licenseURL);
- builder.append("headerURL", headerURL);
+ builder.append("licenseURL", getLicenseURL());
+ builder.append("headerURL", getHeaderURL());
return builder.toString();
}
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -30,7 +30,9 @@
* Model of a license definition in a license repository.
*
* @since 1.0.3
+ * @deprecated since 2.1, prefer use directly the {@link License} class instead.
*/
+@Deprecated
public class LicenseDefinition {
public static final String LICENSE_HEADER_FILE = "header.txt";
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -20,6 +20,9 @@
*/
package org.nuiton.license.plugin.repository;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -33,18 +36,28 @@
*/
public class LicenseRepository {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(LicenseRepository.class);
+
public static final String REPOSITORY_DEFINITION_FILE = "licenses.properties";
/** the base url of the licenses repository */
protected URL baseURL;
- /** next repository (can be {@code null}). */
- protected LicenseRepository next;
+// /** next repository (can be {@code null}). */
+// @Deprecated
+// protected LicenseRepository next;
+//
+// @Deprecated
+// protected List<LicenseDefinition> definitions;
+//
+// @Deprecated
+// protected final Map<LicenseDefinition, License> cache;
- protected List<LicenseDefinition> definitions;
+ /** licenses of this repository */
+ protected List<License> licenses;
- protected final Map<LicenseDefinition, License> cache;
-
/**
* flag to known if repository was init (pass to {@code true} when invoking
* the method {@link #load()}).
@@ -52,7 +65,7 @@
protected boolean init;
public LicenseRepository() {
- cache = new HashMap<LicenseDefinition, License>();
+// cache = new HashMap<LicenseDefinition, License>();
}
public URL getBaseURL() {
@@ -60,38 +73,30 @@
}
public void setBaseURL(URL baseURL) {
- checkNotInit();
+ checkNotInit("setBaseURL");
this.baseURL = baseURL;
}
- public LicenseRepository appendRepository(LicenseRepository next) {
- LicenseRepository lastRepository = getLastRepository();
- lastRepository.next = next;
- return next;
- }
-
- public synchronized void reload() throws IOException {
- if (next != null) {
- next.reload();
- }
- init = false;
- cache.clear();
- load();
- }
-
- public synchronized void load() throws IOException {
- if (!init) {
+ public void load() throws IOException {
+ checkNotInit("load");
+ try {
+// if (!init) {
if (baseURL == null || baseURL.toString().trim().isEmpty()) {
throw new IllegalStateException("no baseURL defined in " + this);
}
URL definitionURL = getUrl(baseURL, REPOSITORY_DEFINITION_FILE);
- this.definitions = new ArrayList<LicenseDefinition>();
+ if (licenses != null) {
+ licenses.clear();
+ } else {
+ licenses = new ArrayList<License>();
+ }
+// definitions = new ArrayList<LicenseDefinition>();
if (!checkExists(definitionURL)) {
throw new IllegalArgumentException(
"no licenses.properties found withurl [" +
- definitionURL + "] for resolver " + this);
+ definitionURL + "] for resolver " + this);
}
Properties p = new Properties();
p.load(definitionURL.openStream());
@@ -104,87 +109,81 @@
URL licenseURL = getUrl(baseURL, licenseName);
- LicenseDefinition def = new LicenseDefinition(
- licenseURL,
- licenseName,
- licenseDescription
- );
- definitions.add(def);
+ License license = new License();
+ license.setName(licenseName);
+ license.setDescription(licenseDescription);
+ license.setBaseURL(licenseURL);
+ if (log.isInfoEnabled()) {
+ log.info("Adding license " + license);
+ }
+ licenses.add(license);
+// LicenseDefinition def = new LicenseDefinition(
+// licenseURL,
+// licenseName,
+// licenseDescription
+// );
+// definitions.add(def);
}
- definitions = Collections.unmodifiableList(definitions);
+ licenses = Collections.unmodifiableList(licenses);
+// definitions = Collections.unmodifiableList(definitions);
+// }
+// if (next != null) {
+// next.load();
+// }
+ } finally {
+ // mark repository as available
+ init = true;
}
- if (next != null) {
- next.load();
- }
- // mark repository as available
- init = true;
}
- public List<LicenseDefinition> getAllDefinitions() {
- LicenseRepository[] repos = getAllRepositories();
- List<LicenseDefinition> result =
- new ArrayList<LicenseDefinition>(repos.length);
- for (LicenseRepository repo : repos) {
- result.addAll(repo.definitions);
- }
- return result;
+ public void reload() throws IOException {
+// if (next != null) {
+// next.reload();
+// }
+ init = false;
+// cache.clear();
+ load();
}
- public List<LicenseDefinition> getDefinitions() {
- return definitions;
+ public List<License> getLicenses() {
+ checkInit("getLicense");
+ return licenses;
}
- public LicenseDefinition getDefinition(String licenseName) {
- checkInit();
+ public License getLicense(String licenseName) {
+ checkInit("getLicense");
if (licenseName == null || licenseName.trim().isEmpty()) {
throw new IllegalArgumentException(
"licenceName can not be null, nor empty");
}
- licenseName = licenseName.trim().toLowerCase();
- LicenseDefinition definition = null;
- for (LicenseDefinition d : definitions) {
- if (licenseName.equals(d.getName())) {
- definition = d;
+
+ License license = null;
+ for (License l : licenses) {
+ if (licenseName.equals(l.getName())) {
+ // got it
+ license = l;
break;
}
}
- if (definition == null && next != null) {
- definition = next.getDefinition(licenseName);
- }
- return definition;
+ return license;
}
- public License getLicense(String licenseName) throws IOException {
- checkInit();
- if (licenseName == null || licenseName.trim().isEmpty()) {
- throw new IllegalArgumentException(
- "licenceName can not be null, nor empty");
- }
+ protected boolean checkExists(URL url) throws IOException {
+ URLConnection openConnection = url.openConnection();
+ return openConnection.getContentLength() > 0;
+ }
- LicenseDefinition definition = getDefinition(licenseName);
- License license = null;
- if (definition != null) {
- synchronized (cache) {
- license = cache.get(definition);
- if (license == null) {
+ protected void checkInit(String operation) throws IllegalStateException {
+ if (!init) {
+ throw new IllegalStateException("repository " + this + " was not init, operation [" + operation + "] not possible.");
+ }
+ }
- URL licenseURL = definition.getLicenseURL();
- URL headerURL = definition.getHeaderURL();
-
- checkExists(licenseURL);
- checkExists(headerURL);
-
- license = new License();
- license.setName(definition.getName());
- license.setDescription(definition.getDescription());
- license.setLicenseURL(licenseURL);
- license.setHeaderURL(headerURL);
- cache.put(definition, license);
- }
- }
+ protected void checkNotInit(String operation) throws IllegalStateException {
+ if (init) {
+ throw new IllegalStateException("repository " + this + "was init, operation [" + operation + "+] not possible.");
}
- return license;
}
public static URL getUrl(URL baseUrl,
@@ -198,39 +197,80 @@
}
}
- protected LicenseRepository getLastRepository() {
- LicenseRepository last = next == null ? this : next.getLastRepository();
- return last;
- }
-
- protected LicenseRepository[] getAllRepositories() {
- List<LicenseRepository> list = new ArrayList<LicenseRepository>();
- LicenseRepository repo = this;
- while (repo != null) {
- list.add(repo);
- repo = repo.next;
- }
- return list.toArray(new LicenseRepository[list.size()]);
- }
-
- protected boolean checkExists(URL url) throws IOException {
- URLConnection openConnection = url.openConnection();
- return openConnection.getContentLength() > 0;
- }
-
- protected void checkNotInit() throws IllegalStateException {
- if (init) {
- throw new IllegalStateException(
- "license repository " + this +
- " was already initialize...");
- }
- }
-
- protected void checkInit() throws IllegalStateException {
- if (!init) {
- throw new IllegalStateException(
- "repository " + this + " is not init, use the load " +
- "method before any license request");
- }
- }
+// @Deprecated
+// public LicenseRepository appendRepository(LicenseRepository next) {
+// LicenseRepository lastRepository = getLastRepository();
+// lastRepository.next = next;
+// return next;
+// }
+//
+// @Deprecated
+// public List<LicenseDefinition> getAllDefinitions() {
+// LicenseRepository[] repos = getAllRepositories();
+// List<LicenseDefinition> result =
+// new ArrayList<LicenseDefinition>(repos.length);
+// for (LicenseRepository repo : repos) {
+// result.addAll(repo.definitions);
+// }
+// return result;
+// }
+//
+// public List<LicenseDefinition> getDefinitions() {
+// return definitions;
+// }
+//
+// public LicenseDefinition getDefinition(String licenseName) {
+// checkInit("getDefinition");
+// if (licenseName == null || licenseName.trim().isEmpty()) {
+// throw new IllegalArgumentException(
+// "licenceName can not be null, nor empty");
+// }
+// licenseName = licenseName.trim().toLowerCase();
+// LicenseDefinition definition = null;
+// for (LicenseDefinition d : definitions) {
+// if (licenseName.equals(d.getName())) {
+// definition = d;
+// break;
+// }
+// }
+// if (definition == null && next != null) {
+// definition = next.getDefinition(licenseName);
+// }
+// return definition;
+// }
+//
+// @Deprecated
+// protected LicenseRepository getLastRepository() {
+// LicenseRepository last = next == null ? this : next.getLastRepository();
+// return last;
+// }
+//
+// @Deprecated
+// protected LicenseRepository[] getAllRepositories() {
+// List<LicenseRepository> list = new ArrayList<LicenseRepository>();
+// LicenseRepository repo = this;
+// while (repo != null) {
+// list.add(repo);
+// repo = repo.next;
+// }
+// return list.toArray(new LicenseRepository[list.size()]);
+// }
+//
+// @Deprecated
+// protected void checkNotInit() throws IllegalStateException {
+// if (init) {
+// throw new IllegalStateException(
+// "license repository " + this +
+// " was already initialize...");
+// }
+// }
+//
+// @Deprecated
+// protected void checkInit() throws IllegalStateException {
+// if (!init) {
+// throw new IllegalStateException(
+// "repository " + this + " is not init, use the load " +
+// "method before any license request");
+// }
+// }
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -31,97 +31,107 @@
/**
* @author chemit
* @since 1.0.3
+ * @deprecated since 2.1, prefer use now a {@link LicenseStore}.
*/
+@Deprecated
public class LicenseRepositoryFactory {
- /** class-path directory where is the licenses repository */
- public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
+// /** class-path directory where is the licenses repository */
+// public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
+//
+// /** to use log facility, just put in your code: log.info(\"...\"); */
+// static private final Log log = LogFactory.getLog(LicenseRepositoryFactory.class);
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private final Log log = LogFactory.getLog(LicenseRepositoryFactory.class);
+// /**
+// * Obtain a new repository.
+// *
+// * @param useJarRepository flag to use at first a jar repository
+// * @param load flag to load the repository
+// * @param extraResolvers extra baseURLs to defined extra license resolver
+// * @return the instanciate and ready to use license repository
+// * @throws IOException if any problem while acquiring license repository
+// * @deprecated since 2.1, prefer use the {@link LicenseStore} api.
+// */
+// @Deprecated
+// public static LicenseRepository newLicenseRepository(
+// boolean useJarRepository,
+// boolean load,
+// String... extraResolvers) throws IOException {
+//
+// List<URL> baseURLs = new ArrayList<URL>();
+// if (extraResolvers != null) {
+// for (String exUrl : extraResolvers) {
+// if (exUrl == null) {
+// // skpi null url
+// continue;
+// }
+// URL url;
+// try {
+// url = new URL(exUrl);
+// } catch (Exception e) {
+// if (log.isDebugEnabled()) {
+// log.warn("could not convert url [" + exUrl +
+// "], for reason " + e.getMessage());
+// } else {
+// log.warn("could not convert url [" + exUrl +
+// "], for reason " + e.getMessage());
+// }
+// log.warn("will skip the url [" + exUrl + "]");
+// continue;
+// }
+// baseURLs.add(url);
+// }
+// }
+// if (!useJarRepository && baseURLs.isEmpty()) {
+// log.warn("no repository to create!");
+// // no repository to create
+// return null;
+// }
+//
+// LicenseRepository result = null;
+// LicenseRepository current = null;
+// if (useJarRepository) {
+// current = result = newJarLicenseRepository(false);
+// }
+//
+// for (URL baseURL : baseURLs) {
+// if (baseURL != null && !baseURL.toString().trim().isEmpty()) {
+// LicenseRepository r = new LicenseRepository();
+// r.setBaseURL(baseURL);
+// if (current == null) {
+// // no previous repository to chain
+// result = r;
+//
+// } else {
+// // chain to previous repository
+// current.appendRepository(r);
+// }
+// // new repository to chain
+// current = r;
+// }
+// }
+// if (load) {
+// result.load();
+// }
+// return result;
+// }
- /**
- * Obtain a new repository.
- *
- * @param useJarRepository flag to use at first a jar repository
- * @param load flag to load the repository
- * @param extraResolvers extra baseURLs to defined extra license resolver
- * @return the instanciate and ready to use license repository
- * @throws IOException if any problem while acquiring license repository
- */
- public static LicenseRepository newLicenseRepository(
- boolean useJarRepository,
- boolean load,
- String... extraResolvers) throws IOException {
-
- List<URL> baseURLs = new ArrayList<URL>();
- if (extraResolvers != null) {
- for (String exUrl : extraResolvers) {
- if (exUrl == null) {
- // skpi null url
- continue;
- }
- URL url;
- try {
- url = new URL(exUrl);
- } catch (Exception e) {
- if (log.isDebugEnabled()) {
- log.warn("could not convert url [" + exUrl +
- "], for reason " + e.getMessage());
- } else {
- log.warn("could not convert url [" + exUrl +
- "], for reason " + e.getMessage());
- }
- log.warn("will skip the url [" + exUrl + "]");
- continue;
- }
- baseURLs.add(url);
- }
- }
- if (!useJarRepository && baseURLs.isEmpty()) {
- log.warn("no repository to create!");
- // no repository to create
- return null;
- }
-
- LicenseRepository result = null;
- LicenseRepository current = null;
- if (useJarRepository) {
- current = result = newJarLicenseRepository(false);
- }
-
- for (URL baseURL : baseURLs) {
- if (baseURL != null && !baseURL.toString().trim().isEmpty()) {
- LicenseRepository r = new LicenseRepository();
- r.setBaseURL(baseURL);
- if (current == null) {
- // no previous repository to chain
- result = r;
-
- } else {
- // chain to previous repository
- current.appendRepository(r);
- }
- // new repository to chain
- current = r;
- }
- }
- if (load) {
- result.load();
- }
- return result;
- }
-
- public static LicenseRepository newJarLicenseRepository(
- boolean load) throws IOException {
- LicenseRepository result = new LicenseRepository();
- // the first repository is always a jar repository
- URL baseURL = LicenseRepositoryFactory.class.getResource(
- JAR_LICENSE_REPOSITORY);
- result.setBaseURL(baseURL);
- if (load) {
- result.load();
- }
- return result;
- }
+// /**
+// * @param load {@code true} if repository should be loaded
+// * @return the license repository coming for class-path
+// * @throws IOException if any pb while loading repository (if asked)
+// * @deprecated since 2.1, prefer use the {@link LicenseStore} api.
+// */
+// @Deprecated
+// public static LicenseRepository newJarLicenseRepository(boolean load) throws IOException {
+// LicenseRepository result = new LicenseRepository();
+// // the first repository is always a jar repository
+// URL baseURL = LicenseRepositoryFactory.class.getResource(
+// JAR_LICENSE_REPOSITORY);
+// result.setBaseURL(baseURL);
+// if (load) {
+// result.load();
+// }
+// return result;
+// }
}
Modified: trunk/src/main/resources/META-INF/licenses/licenses.properties
===================================================================
--- trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-06 13:03:55 UTC (rev 1706)
@@ -1,3 +1,5 @@
+apache_v2=License Apache version 3.0
+cddl_v1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
gpl_v1=License gpl version 1.0
gpl_v2=License gpl version 2.0
gpl_v3=License gpl version 3.0
@@ -3,3 +5,3 @@
lgpl_v2_1=License lgpl version 2.1
lgpl_v3=License lgpl version 3.0
-apache_v2=License Apache version 3.0
+mit=MIT-License
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/site/rst/index.rst 2010-04-06 13:03:55 UTC (rev 1706)
@@ -16,7 +16,7 @@
::
- *##% Content ##%*
+ %L Content L%
The header is composed of two parts :
@@ -29,10 +29,11 @@
::
/*
- * *##%
+ * %L
* Plugin maven de changement de license
+ * --
* Copyright (C) 2008 - 2009 CodeLutin
- *
+ * --
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
@@ -46,7 +47,7 @@
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * ##%*
+ * L%
*/
Goals Overview
@@ -89,4 +90,3 @@
.. _license help: help-mojo.html
.. _usage: usage.html
-
\ No newline at end of file
Modified: trunk/src/site/rst/usage.rst
===================================================================
--- trunk/src/site/rst/usage.rst 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/site/rst/usage.rst 2010-04-06 13:03:55 UTC (rev 1706)
@@ -4,7 +4,7 @@
add-license goal
================
-This goal create or update the LICENSE.txt file and add it in build.
+This goal creates or updates the LICENSE.txt file and add it in build.
for full detail see `add-license`_ detail page.
@@ -18,7 +18,7 @@
generator-list goal
===================
-This goal display of available generators.
+This goal display of available header generators.
Use it directly (and only) from commandline :
@@ -74,7 +74,7 @@
The plugin will seek in all projets sources roots (and test sources roots).
-Note : to detect the license header we use the nuiton-processor library.
+Note : to detect the license header we use the `nuiton-processor`_ library.
Update java files
~~~~~~~~~~~~~~~~~
@@ -300,3 +300,5 @@
.. _license-list: license-list-mojo.html
.. _help: help-mojo.html
+
+.. _nuiton-processor : http://maven-site.nuiton.org/processor/index.html
Modified: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-04-05 08:49:12 UTC (rev 1705)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-04-06 13:03:55 UTC (rev 1706)
@@ -23,7 +23,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
+import org.nuiton.plugin.PluginHelper;
import org.nuiton.plugin.TestHelper;
import java.io.File;
@@ -31,226 +33,225 @@
import java.util.List;
/** @author chemit */
+@Ignore
public class LicenseRepositoryFactoryTest extends Assert {
- public static final String NEWLICENSE = "new_license";
-
- public static final String NEWLICENSE2 = "new_license2";
-
- protected static final Log log = LogFactory.getLog(LicenseRepositoryFactoryTest.class);
-
- protected static final String encoding = "utf-8";
-
- protected File baseDir;
-
- protected File getBaseDir() {
- if (baseDir == null) {
- baseDir = TestHelper.getBasedir();
- }
- return baseDir;
- }
-
- protected void assertLicenseDefinitionFound(String name, LicenseDefinition definition) throws IOException {
- assertNotNull("could not find definition for license [" + name + "]", definition);
- assertEquals(name.toLowerCase(), definition.getName());
- }
-
- protected void assertLicenseFound(String name, License license) throws IOException {
- assertNotNull("could not find license [" + name + "]", license);
- assertEquals(name, license.getName());
- assertNotNull(license.getLicenseContent(encoding));
- assertNotNull(license.getHeaderContent(encoding));
- }
-
- protected void assertLicenseRepositoryFound(LicenseRepository repository, String... names) throws IOException {
-
- assertNotNull("could not find repository", repository);
- assertEquals("expected " + names.length + " licenses but had " + repository.getDefinitions().size(), names.length, repository.getDefinitions().size());
-
- for (String name : names) {
- LicenseDefinition def = repository.getDefinition(name);
- assertLicenseDefinitionFound(name.toLowerCase(), def);
- License lic = repository.getLicense(name);
- assertLicenseFound(name.toLowerCase(), lic);
- }
- }
-
- protected File createLicenseRepository(boolean createLicene) throws IOException {
- long timestamp = System.currentTimeMillis();
-
- File repo = TestHelper.getFile(getBaseDir(), "target", "test-classes", "org", "nuiton", "license", "plugin", "repository", "repository_" + timestamp);
-
- log.info("new license repository : " + TestHelper.getRelativePath(baseDir, repo));
- if (createLicene) {
-
- String licenseName = "license_" + timestamp;
- addLicenseToRepository(repo, licenseName);
- }
- return repo;
- }
-
- protected void addLicenseToRepository(File repo, String licenseName) throws IOException {
-
- File defFile = new File(repo, LicenseRepository.REPOSITORY_DEFINITION_FILE);
-
- String content = "";
- if (defFile.exists()) {
-
- content = TestHelper.readAsString(defFile, encoding) + "\n";
- }
-
- TestHelper.writeString(defFile, content + licenseName + "=My dummy license\n", encoding);
-
- // create dummy licenses
- File file = new File(repo, licenseName);
- file.mkdirs();
- TestHelper.writeString(new File(file, LicenseDefinition.LICENSE_CONTENT_FILE), "license:" + licenseName, encoding);
- TestHelper.writeString(new File(file, LicenseDefinition.LICENSE_HEADER_FILE), "header:" + licenseName, encoding);
-
- }
-
- @Test
- public void newJarLicenseRepository() throws Exception {
-
- LicenseRepository[] repositories;
- LicenseRepository repository;
-
- repository = LicenseRepositoryFactory.newJarLicenseRepository(false);
- assertNotNull(repository);
- assertFalse(repository.init);
- repositories = repository.getAllRepositories();
- assertEquals(1, repositories.length);
- assertEquals(repository, repositories[0]);
-
- repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
- assertNotNull(repository);
- assertTrue(repository.init);
- repositories = repository.getAllRepositories();
- assertEquals(1, repositories.length);
- assertEquals(repository, repositories[0]);
- List<LicenseDefinition> definitions = repository.getDefinitions();
- List<LicenseDefinition> allDefinitions = repository.getAllDefinitions();
- assertEquals(5, definitions.size());
- assertEquals(5, allDefinitions.size());
- assertEquals(definitions, allDefinitions);
-
- assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
- }
-
- @Test
- public void testNewInstance() throws Exception {
-
- LicenseRepository[] repositories;
- LicenseRepository repository;
- LicenseDefinition def;
-
- repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
- assertNotNull(repository);
- repositories = repository.getAllRepositories();
- assertEquals(1, repositories.length);
- assertNotNull(repositories[0]);
- assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
-
- repository = LicenseRepositoryFactory.newLicenseRepository(true, true, "");
- repositories = repository.getAllRepositories();
- assertNotNull(repository);
- assertEquals(1, repositories.length);
- assertNotNull(repositories[0]);
- assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
-
- repository = LicenseRepositoryFactory.newLicenseRepository(true, false, "file://yo");
- assertNotNull(repository);
- repositories = repository.getAllRepositories();
-
- assertEquals(2, repositories.length);
- assertNotNull(repositories[0]);
- assertNotNull(repositories[1]);
-
- assertNotNull(repositories[1].getBaseURL());
- assertEquals("file://yo", repositories[1].getBaseURL().toString());
-
- // create a new dummy license repository with a license
-
- File repo = createLicenseRepository(true);
- String generatedLicence = "license" + repo.getName().substring(repo.getName().indexOf("_"));
-
- repository = LicenseRepositoryFactory.newLicenseRepository(true, true, repo.toURI().toURL().toString());
- assertNotNull(repository);
- repositories = repository.getAllRepositories();
-
- assertEquals(2, repositories.length);
-
- assertNotNull(repositories[0]);
- assertNotNull(repositories[1]);
- assertEquals(5, repositories[0].getDefinitions().size());
- assertEquals(1, repositories[1].getDefinitions().size());
-
- assertLicenseRepositoryFound(repositories[0],
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
-
- assertNotNull(repositories[1].getBaseURL());
- assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
-
- assertLicenseRepositoryFound(repositories[1],
- generatedLicence);
-
-
- // add license
-
- addLicenseToRepository(repo, NEWLICENSE);
-
- repository.reload();
-
- repositories = repository.getAllRepositories();
-
- assertEquals(2, repositories.length);
- assertNotNull(repositories[0]);
- assertNotNull(repositories[1]);
- assertNotNull(repositories[1].getBaseURL());
- assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
- assertEquals(2, repositories[1].getDefinitions().size());
- assertNotNull(repositories[1].getDefinitions().get(1));
-
- assertLicenseRepositoryFound(repositories[1],
- NEWLICENSE, generatedLicence);
-
- // add another license
-
- addLicenseToRepository(repo, NEWLICENSE2);
- repository.reload();
-
- repositories = repository.getAllRepositories();
-
- assertEquals(2, repositories.length);
- assertNotNull(repositories[0]);
- assertNotNull(repositories[1]);
- assertNotNull(repositories[1].getBaseURL());
- assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
- assertEquals(3, repositories[1].getDefinitions().size());
-
- assertLicenseRepositoryFound(repositories[1], NEWLICENSE,
- NEWLICENSE2, generatedLicence);
- }
//
+// public static final String NEWLICENSE = "new_license";
+//
+// public static final String NEWLICENSE2 = "new_license2";
+//
+// protected static final Log log = LogFactory.getLog(LicenseRepositoryFactoryTest.class);
+//
+// protected static final String encoding = "utf-8";
+//
+// protected File baseDir;
+//
+// public static final String[] DEFAULT_LICENSES = new String[]{"apache_v2",
+// "cddl_v1",
+// "gpl_v1",
+// "gpl_v2",
+// "gpl_v3",
+// "lgpl_v2_1",
+// "lgpl_v3"};
+//
+// protected File getBaseDir() {
+// if (baseDir == null) {
+// baseDir = TestHelper.getBasedir();
+// }
+// return baseDir;
+// }
+//
+// protected void assertLicenseDefinitionFound(String name, LicenseDefinition definition) throws IOException {
+// assertNotNull("could not find definition for license [" + name + "]", definition);
+// assertEquals(name.toLowerCase(), definition.getName());
+// }
+//
+// protected void assertLicenseFound(String name, License license) throws IOException {
+// assertNotNull("could not find license [" + name + "]", license);
+// assertEquals(name, license.getName());
+// assertNotNull(license.getLicenseContent(encoding));
+// assertNotNull(license.getHeaderContent(encoding));
+// }
+//
+// protected void assertLicenseRepositoryFound(LicenseRepository repository, String... names) throws IOException {
+//
+// assertNotNull("could not find repository", repository);
+// assertEquals("expected " + names.length + " licenses but had " + repository.getDefinitions().size(), names.length, repository.getDefinitions().size());
+//
+// for (String name : names) {
+// LicenseDefinition def = repository.getDefinition(name);
+// assertLicenseDefinitionFound(name.toLowerCase(), def);
+// License lic = repository.getLicense(name);
+// assertLicenseFound(name.toLowerCase(), lic);
+// }
+// }
+//
+// protected File createLicenseRepository(boolean createLicene) throws IOException {
+// long timestamp = System.currentTimeMillis();
+//
+// File repo = TestHelper.getFile(getBaseDir(),
+// "target",
+// "test-classes",
+// "org",
+// "nuiton",
+// "license",
+// "plugin",
+// "repository",
+// "repository_" + timestamp
+// );
+//
+// log.info("new license repository : " + TestHelper.getRelativePath(baseDir, repo));
+// if (createLicene) {
+//
+// String licenseName = "license_" + timestamp;
+// addLicenseToRepository(repo, licenseName);
+// }
+// return repo;
+// }
+//
+// protected void addLicenseToRepository(File repo, String licenseName) throws IOException {
+//
+// File defFile = new File(repo, LicenseRepository.REPOSITORY_DEFINITION_FILE);
+//
+// String content = "";
+// if (defFile.exists()) {
+//
+// content = TestHelper.readAsString(defFile, encoding) + "\n";
+// }
+//
+// TestHelper.writeString(defFile, content + licenseName + "=My dummy license\n", encoding);
+//
+// // create dummy licenses
+// File file = new File(repo, licenseName);
+// PluginHelper.createDirectoryIfNecessary(file);
+// TestHelper.writeString(new File(file, License.LICENSE_CONTENT_FILE), "license:" + licenseName, encoding);
+// TestHelper.writeString(new File(file, License.LICENSE_HEADER_FILE), "header:" + licenseName, encoding);
+//
+// }
+//
// @Test
+// public void newJarLicenseRepository() throws Exception {
+//
+// LicenseRepository[] repositories;
+// LicenseRepository repository;
+//
+// repository = LicenseRepositoryFactory.newJarLicenseRepository(false);
+// assertNotNull(repository);
+// assertFalse(repository.init);
+// repositories = repository.getAllRepositories();
+// assertEquals(1, repositories.length);
+// assertEquals(repository, repositories[0]);
+//
+// repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
+// assertNotNull(repository);
+// assertTrue(repository.init);
+// repositories = repository.getAllRepositories();
+// assertEquals(1, repositories.length);
+// assertEquals(repository, repositories[0]);
+// List<LicenseDefinition> definitions = repository.getDefinitions();
+// List<LicenseDefinition> allDefinitions = repository.getAllDefinitions();
+// assertEquals(7, definitions.size());
+// assertEquals(7, allDefinitions.size());
+// assertEquals(definitions, allDefinitions);
+//
+// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
+// }
+//
+// @Test
+// public void testNewInstance() throws Exception {
+//
+// LicenseRepository[] repositories;
+// LicenseRepository repository;
+// LicenseDefinition def;
+//
+// repository = LicenseRepositoryFactory.newJarLicenseRepository(true);
+// assertNotNull(repository);
+// repositories = repository.getAllRepositories();
+// assertEquals(1, repositories.length);
+// assertNotNull(repositories[0]);
+// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
+//
+// repository = LicenseRepositoryFactory.newLicenseRepository(true, true, "");
+// repositories = repository.getAllRepositories();
+// assertNotNull(repository);
+// assertEquals(1, repositories.length);
+// assertNotNull(repositories[0]);
+// assertLicenseRepositoryFound(repository, DEFAULT_LICENSES);
+//
+// repository = LicenseRepositoryFactory.newLicenseRepository(true, false, "file://yo");
+// assertNotNull(repository);
+// repositories = repository.getAllRepositories();
+//
+// assertEquals(2, repositories.length);
+// assertNotNull(repositories[0]);
+// assertNotNull(repositories[1]);
+//
+// assertNotNull(repositories[1].getBaseURL());
+// assertEquals("file://yo", repositories[1].getBaseURL().toString());
+//
+// // create a new dummy license repository with a license
+//
+// File repo = createLicenseRepository(true);
+// String generatedLicence = "license" + repo.getName().substring(repo.getName().indexOf("_"));
+//
+// repository = LicenseRepositoryFactory.newLicenseRepository(true, true, repo.toURI().toURL().toString());
+// assertNotNull(repository);
+// repositories = repository.getAllRepositories();
+//
+// assertEquals(2, repositories.length);
+//
+// assertNotNull(repositories[0]);
+// assertNotNull(repositories[1]);
+// assertEquals(5, repositories[0].getDefinitions().size());
+// assertEquals(1, repositories[1].getDefinitions().size());
+//
+// assertLicenseRepositoryFound(repositories[0], DEFAULT_LICENSES);
+//
+// assertNotNull(repositories[1].getBaseURL());
+// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
+//
+// assertLicenseRepositoryFound(repositories[1],
+// generatedLicence);
+//
+//
+// // add license
+//
+// addLicenseToRepository(repo, NEWLICENSE);
+//
+// repository.reload();
+//
+// repositories = repository.getAllRepositories();
+//
+// assertEquals(2, repositories.length);
+// assertNotNull(repositories[0]);
+// assertNotNull(repositories[1]);
+// assertNotNull(repositories[1].getBaseURL());
+// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
+// assertEquals(2, repositories[1].getDefinitions().size());
+// assertNotNull(repositories[1].getDefinitions().get(1));
+//
+// assertLicenseRepositoryFound(repositories[1],
+// NEWLICENSE, generatedLicence);
+//
+// // add another license
+//
+// addLicenseToRepository(repo, NEWLICENSE2);
+// repository.reload();
+//
+// repositories = repository.getAllRepositories();
+//
+// assertEquals(2, repositories.length);
+// assertNotNull(repositories[0]);
+// assertNotNull(repositories[1]);
+// assertNotNull(repositories[1].getBaseURL());
+// assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
+// assertEquals(3, repositories[1].getDefinitions().size());
+//
+// assertLicenseRepositoryFound(repositories[1], NEWLICENSE,
+// NEWLICENSE2, generatedLicence);
+// }
+//
+// @Test
// public void testGetLicenseNames() throws Exception {
// LicenseRepository factory = LicenseRepositoryFactory.newJarLicenseRepository(true);
//
1
0
r1705 - in trunk/src/main/resources/META-INF/licenses: . apache_v2
by tchemit@users.nuiton.org 05 Apr '10
by tchemit@users.nuiton.org 05 Apr '10
05 Apr '10
Author: tchemit
Date: 2010-04-05 10:49:12 +0200 (Mon, 05 Apr 2010)
New Revision: 1705
Log:
Evolution #462: Add new licenses in repository (apache v 2.0)
Added:
trunk/src/main/resources/META-INF/licenses/apache_v2/
trunk/src/main/resources/META-INF/licenses/apache_v2/header.txt
trunk/src/main/resources/META-INF/licenses/apache_v2/license.txt
Modified:
trunk/src/main/resources/META-INF/licenses/licenses.properties
Added: trunk/src/main/resources/META-INF/licenses/apache_v2/header.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/apache_v2/header.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/apache_v2/header.txt 2010-04-05 08:49:12 UTC (rev 1705)
@@ -0,0 +1,11 @@
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
Added: trunk/src/main/resources/META-INF/licenses/apache_v2/license.txt
===================================================================
--- trunk/src/main/resources/META-INF/licenses/apache_v2/license.txt (rev 0)
+++ trunk/src/main/resources/META-INF/licenses/apache_v2/license.txt 2010-04-05 08:49:12 UTC (rev 1705)
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
Modified: trunk/src/main/resources/META-INF/licenses/licenses.properties
===================================================================
--- trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-04 18:28:34 UTC (rev 1704)
+++ trunk/src/main/resources/META-INF/licenses/licenses.properties 2010-04-05 08:49:12 UTC (rev 1705)
@@ -2,4 +2,5 @@
gpl_v2=License gpl version 2.0
gpl_v3=License gpl version 3.0
lgpl_v2_1=License lgpl version 2.1
-lgpl_v3=License lgpl version 3.0
\ No newline at end of file
+lgpl_v3=License lgpl version 3.0
+apache_v2=License Apache version 3.0
1
0
Author: tchemit
Date: 2010-04-04 20:28:34 +0200 (Sun, 04 Apr 2010)
New Revision: 1704
Log:
change to version 2.1
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-04-04 09:51:45 UTC (rev 1703)
+++ trunk/pom.xml 2010-04-04 18:28:34 UTC (rev 1704)
@@ -14,7 +14,7 @@
</parent>
<artifactId>maven-license-plugin</artifactId>
- <version>2.0.3-SNAPSHOT</version>
+ <version>2.1-SNAPSHOT</version>
<dependencies>
1
0
04 Apr '10
Author: tchemit
Date: 2010-04-04 11:51:45 +0200 (Sun, 04 Apr 2010)
New Revision: 1703
Log:
Evolution #454: Use maven-helper-plugin 1.2.3
Modified:
trunk/pom.xml
trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-04-04 07:55:41 UTC (rev 1702)
+++ trunk/pom.xml 2010-04-04 09:51:45 UTC (rev 1703)
@@ -288,7 +288,8 @@
<properties>
<processor.version>1.0.2</processor.version>
-
+ <helper.version>1.2.3-SNAPSHOT</helper.version>
+
<!-- documentation is in english -->
<siteLocales>en</siteLocales>
Modified: trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java 2010-04-04 07:55:41 UTC (rev 1702)
+++ trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java 2010-04-04 09:51:45 UTC (rev 1703)
@@ -22,6 +22,7 @@
import org.junit.Test;
import org.nuiton.plugin.AbstractMojoTest;
+import org.nuiton.plugin.PluginHelper;
import java.io.File;
import java.io.IOException;
@@ -68,11 +69,7 @@
// always assume pom is older than any file
// since we can not ensure order of copy test resources
- File file = mojo.getProject().getFile();
- boolean b = file.setLastModified(0);
- if (!b) {
- throw new IOException("could not change lastModified on " + file);
- }
+ PluginHelper.setLastModified(mojo.getProject().getFile(), 0);
// then executing the mojo, will do NOT change the licence file
mojo.execute();
@@ -99,11 +96,7 @@
// always assume pom is older than any file
// since we can not ensure order of copy test resources
- File file = mojo.getProject().getFile();
- boolean b = file.setLastModified(0);
- if (!b) {
- throw new IOException("could not changed lastModified on " + file);
- }
+ PluginHelper.setLastModified(mojo.getProject().getFile(), 0);
// then executing the mojo, will do NOT change the licence file
mojo.execute();
1
0
r1702 - in trunk/src: main/java/org/nuiton/license/plugin main/java/org/nuiton/license/plugin/header/generator main/java/org/nuiton/license/plugin/repository test/java/org/nuiton/license/plugin test/java/org/nuiton/license/plugin/repository
by tchemit@users.nuiton.org 04 Apr '10
by tchemit@users.nuiton.org 04 Apr '10
04 Apr '10
Author: tchemit
Date: 2010-04-04 09:55:41 +0200 (Sun, 04 Apr 2010)
New Revision: 1702
Log:
Evolution #452: Reformat code to respect code formatting
Modified:
trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java
trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java
trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/HeaderGenerator.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/LicenseHeaderGenerator.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java
trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java
trunk/src/test/java/org/nuiton/license/plugin/UpdateHeaderMojoTest.java
trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
Modified: trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFileMojo.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -31,7 +31,8 @@
import java.io.File;
/**
- * Le goal pour ajouter le fichier LICENSE.txt dans le classpath (et le generer s'il n'existe pas).
+ * Le goal pour ajouter le fichier LICENSE.txt dans le classpath (et le generer
+ * s'il n'existe pas).
*
* @author chemit
* @goal add-license
@@ -49,6 +50,7 @@
* @since 1.0.0
*/
protected MavenProject project;
+
/**
* Fichier de la licence du module.
*
@@ -57,10 +59,12 @@
* @since 1.0.0
*/
protected File licenseFile;
+
/**
* Le type de license a appliquer.
* <p/>
- * Pour obtenir la liste des licenses disponibles, utilisez le goal <b>available-licenses</b>
+ * Pour obtenir la liste des licenses disponibles, utilisez le goal
+ * <b>available-licenses</b>
* <pre>
* mvn helper:available-licenses -Ddetail
* </pre>
@@ -70,14 +74,17 @@
* @since 1.0.0
*/
protected String licenseName;
+
/**
* Repertoire de sortie des sources.
*
- * @parameter expression="${license.outputDirectory}" default-value="target/generated-sources/license"
+ * @parameter expression="${license.outputDirectory}"
+ * default-value="target/generated-sources/license"
* @required
* @since 1.0.0
*/
protected File outputDirectory;
+
/**
* Repertoire de sortie des classes (classpath).
*
@@ -85,6 +92,7 @@
* @since 1.0.0
*/
protected String licenseFilename;
+
/**
* Encoding a utiliser pour lire et ecrire les fichiers.
*
@@ -93,6 +101,7 @@
* @since 1.0.0
*/
protected String encoding;
+
/**
* Un flag pour conserver un backup des fichiers modifies.
*
@@ -100,6 +109,7 @@
* @since 1.0.0
*/
protected boolean keepBackup;
+
/**
* Un flag pour forcer la generation.
*
@@ -107,6 +117,7 @@
* @since 1.0.0
*/
protected boolean force;
+
/**
* Un flag pour activer le mode verbeux.
*
@@ -114,15 +125,19 @@
* @since 1.0.0
*/
protected boolean verbose;
+
/**
- * Un flag pour faire une copie nommée dans META-INF (prefixe avec le nom de l'artifact).
+ * Un flag pour faire une copie nommée dans META-INF (prefixe avec le nom de
+ * l'artifact).
* <p/>
- * Cette option n'est utilisable que sur des modules avec un class-path (pas pour un pom)
+ * Cette option n'est utilisable que sur des modules avec un class-path (pas
+ * pour un pom)
*
* @parameter expression="${license.copyToMETA_INF}" default-value="false"
* @since 1.0.0
*/
protected boolean copyToMETA_INF;
+
/**
* La baseURL d'un resolver de license supplementaire
*
@@ -130,6 +145,7 @@
* @since 1.0.0
*/
protected String[] extraResolver;
+
protected License license;
protected boolean hasClassPath() {
@@ -151,7 +167,12 @@
// acquire license
- LicenseRepository factory = LicenseRepositoryFactory.newLicenseRepository(true, true, extraResolver);
+ LicenseRepository factory =
+ LicenseRepositoryFactory.newLicenseRepository(
+ true,
+ true,
+ extraResolver
+ );
license = factory.getLicense(licenseName);
@@ -191,7 +212,11 @@
copyFile(licenseFile, target);
if (copyToMETA_INF) {
- File destFile = PluginHelper.getFile(outputDirectory, "META-INF", project.getArtifactId() + "-" + licenseFile.getName());
+ File destFile = PluginHelper.getFile(
+ outputDirectory,
+ "META-INF", project.getArtifactId() + "-" +
+ licenseFile.getName()
+ );
copyFile(licenseFile, destFile);
}
addResourceDir(outputDirectory, "**/*.txt");
@@ -206,7 +231,7 @@
return licenseName;
}
- public org.nuiton.license.plugin.repository.License getLicense() {
+ public License getLicense() {
return license;
}
@@ -242,7 +267,7 @@
this.extraResolver = extraResolver;
}
- public void setLicense(org.nuiton.license.plugin.repository.License license) {
+ public void setLicense(License license) {
this.license = license;
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFileMojo.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -34,17 +34,19 @@
import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.nuiton.plugin.AbstractPlugin;
+import org.nuiton.plugin.PluginHelper;
import java.io.File;
import java.util.List;
import java.util.SortedSet;
+import java.util.TreeMap;
import java.util.TreeSet;
-import org.nuiton.plugin.AbstractPlugin;
-import org.nuiton.plugin.PluginHelper;
/**
- * Le goal pour copier le fichier THIRD-PARTY.txt (contenant les licenses de toutes les dependances du projet)
- * dans le classpath (et le generer s'il n'existe pas).
+ * Le goal pour copier le fichier THIRD-PARTY.txt (contenant les licenses de
+ * toutes les dependances du projet) dans le classpath (et le generer s'il
+ * n'existe pas).
*
* @author chemit
* @goal add-third-party
@@ -55,6 +57,7 @@
public class AddThirdPartyFileMojo extends AbstractPlugin {
private static final String unknownLicenseMessage = "Unknown license";
+
/**
* Dependance du projet.
*
@@ -64,22 +67,27 @@
* @since 1.0.0
*/
protected MavenProject project;
+
/**
* Fichier ou ecrire les licences des dependances.
*
- * @parameter expression="${license.thirdPartyFilename}" default-value="THIRD-PARTY.txt"
+ * @parameter expression="${license.thirdPartyFilename}"
+ * default-value="THIRD-PARTY.txt"
* @required
* @since 1.0.0
*/
protected String thirdPartyFilename;
+
/**
* Repertoire de sortie des classes (classpath).
*
- * @parameter expression="${license.outputDirectory}" default-value="target/generated-sources/license"
+ * @parameter expression="${license.outputDirectory}"
+ * default-value="target/generated-sources/license"
* @required
* @since 1.0.0
*/
protected File outputDirectory;
+
/**
* Encoding a utiliser pour lire et ecrire les fichiers.
*
@@ -88,6 +96,7 @@
* @since 1.0.0
*/
protected String encoding;
+
/**
* Un flag pour forcer la generation.
*
@@ -95,6 +104,7 @@
* @since 1.0.0
*/
protected boolean force;
+
/**
* Un flag pour conserver un backup des fichiers modifies.
*
@@ -102,13 +112,16 @@
* @since 1.0.0
*/
protected boolean keepBackup;
+
/**
- * Un flag pour faire une copie nommé dans META-INF (prefixe avec le nom de l'artifact).
+ * Un flag pour faire une copie nommé dans META-INF (prefixe avec le nom de
+ * l'artifact).
*
* @parameter expression="${license.copyToMETA_INF}" default-value="false"
* @since 1.0.0
*/
protected boolean copyToMETA_INF;
+
/**
* Un flag pour activer le mode verbeux.
*
@@ -116,6 +129,7 @@
* @since 1.0.0
*/
protected boolean verbose;
+
/**
* Local Repository.
*
@@ -125,6 +139,7 @@
* @since 1.0.0
*/
protected ArtifactRepository localRepository;
+
/**
* Remote repositories used for the project.
*
@@ -134,47 +149,55 @@
* @since 1.0.0
*/
protected List<?> remoteRepositories;
+
/**
* Dependency tree builder component.
*
* @component
*/
protected DependencyTreeBuilder dependencyTreeBuilder;
+
/**
* Artifact Factory component.
*
* @component
*/
protected ArtifactFactory factory;
+
/**
* Artifact metadata source component.
*
* @component
*/
protected ArtifactMetadataSource artifactMetadataSource;
+
/**
* Artifact collector component.
*
* @component
*/
protected ArtifactCollector collector;
+
/**
* Maven Project Builder component.
*
* @component
*/
protected MavenProjectBuilder mavenProjectBuilder;
+
/**
- * content of third party file (only computed if {@link #force} is active or the
- * {@link #thirdPartyFile} does not exist, or is not up-to-date.
+ * content of third party file (only computed if {@link #force} is active or
+ * the {@link #thirdPartyFile} does not exist, or is not up-to-date.
*/
protected String thirdPartyFileContent;
+
protected File thirdPartyFile;
@Override
protected boolean checkPackaging() {
return rejectPackaging(Packaging.pom);
}
+
boolean doGenerate;
@Override
@@ -204,7 +227,8 @@
thirdPartyFileContent = buildGroupedLicenses(licenseMap);
// log dependencies with no license
- SortedSet<String> dependenciesWithNoLicense = licenseMap.get(unknownLicenseMessage);
+ SortedSet<String> dependenciesWithNoLicense =
+ licenseMap.get(unknownLicenseMessage);
if (dependenciesWithNoLicense != null) {
for (String dep : dependenciesWithNoLicense) {
// no license found for the dependency
@@ -231,17 +255,28 @@
writeFile(thirdPartyFile, thirdPartyFileContent, encoding);
}
if (copyToMETA_INF) {
- copyFile(thirdPartyFile, new File(outputDirectory, "META-INF" + File.separator + project.getArtifactId() + "-" + thirdPartyFile.getName()));
+ copyFile(thirdPartyFile, new File(
+ outputDirectory,
+ "META-INF" + File.separator + project.getArtifactId() +
+ "-" + thirdPartyFile.getName())
+ );
}
- addResourceDir(outputDirectory,"**/*.txt");
+ addResourceDir(outputDirectory, "**/*.txt");
}
/** @return resolve the dependency tree */
protected DependencyNode resolveProject() {
try {
- ArtifactFilter artifactFilter = new ScopeArtifactFilter(Artifact.SCOPE_TEST);
- return dependencyTreeBuilder.buildDependencyTree(project, localRepository, factory,
- artifactMetadataSource, artifactFilter, collector);
+ ArtifactFilter artifactFilter =
+ new ScopeArtifactFilter(Artifact.SCOPE_TEST);
+ return dependencyTreeBuilder.buildDependencyTree(
+ project,
+ localRepository,
+ factory,
+ artifactMetadataSource,
+ artifactFilter,
+ collector
+ );
} catch (DependencyTreeBuilderException e) {
getLog().error("Unable to build dependency tree.", e);
return null;
@@ -252,7 +287,8 @@
if (node.getState() != DependencyNode.INCLUDED) {
// this dependency is not included, so do not treate it
if (verbose) {
- getLog().info("do not include this dependency " + node.toNodeString());
+ getLog().info("do not include this dependency " +
+ node.toNodeString());
}
return;
}
@@ -264,7 +300,8 @@
if (!Artifact.SCOPE_SYSTEM.equals(artifact.getScope())) {
try {
- MavenProject artifactProject = getMavenProjectFromRepository(artifact);
+ MavenProject artifactProject =
+ getMavenProjectFromRepository(artifact);
String artifactName = getArtifactName(artifactProject);
List<?> licenses = artifactProject.getLicenses();
@@ -276,7 +313,8 @@
} else {
for (Object o : licenses) {
if (o == null) {
- getLog().warn("could not acquire the license for " + artifactName);
+ getLog().warn("could not acquire the license for "
+ + artifactName);
continue;
}
License license = (License) o;
@@ -300,7 +338,8 @@
protected String buildGroupedLicenses(LicenseMap licenseMap) {
StringBuilder sb = new StringBuilder();
- sb.append("List of third-party dependencies grouped by their license type.");
+ sb.append("List of third-party dependencies grouped by " +
+ "their license type.");
for (String licenseName : licenseMap.keySet()) {
sb.append("\n\n").append(licenseName).append(" : ");
@@ -332,7 +371,8 @@
}
/**
- * Get the <code>Maven project</code> from the repository depending the <code>Artifact</code> given.
+ * Get the <code>Maven project</code> from the repository depending the
+ * <code>Artifact</code> given.
*
* @param artifact an artifact
* @return the Maven project for the given artifact
@@ -344,17 +384,25 @@
boolean allowStubModel = false;
if (!"pom".equals(artifact.getType())) {
- artifact = factory.createProjectArtifact(artifact.getGroupId(), artifact.getArtifactId(),
- artifact.getVersion(), artifact.getScope());
+ artifact = factory.createProjectArtifact(
+ artifact.getGroupId(),
+ artifact.getArtifactId(),
+ artifact.getVersion(),
+ artifact.getScope()
+ );
allowStubModel = true;
}
// TODO: we should use the MavenMetadataSource instead
- return mavenProjectBuilder.buildFromRepository(artifact, remoteRepositories, localRepository,
- allowStubModel);
+ return mavenProjectBuilder.buildFromRepository(
+ artifact,
+ remoteRepositories,
+ localRepository,
+ allowStubModel
+ );
}
- protected class LicenseMap extends java.util.TreeMap<String, SortedSet<String>> {
+ protected class LicenseMap extends TreeMap<String, SortedSet<String>> {
private static final long serialVersionUID = 864199843545688069L;
Modified: trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/GeneratorListMojo.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,24 +20,22 @@
*/
package org.nuiton.license.plugin;
-import java.util.Map;
-import java.util.Map.Entry;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.nuiton.license.plugin.header.generator.HeaderGenerator;
+import java.util.Map;
+import java.util.Map.Entry;
+
/**
* Displays all the available generators.
*
* @author chemit
- *
* @requiresProject false
* @requiresDirectInvocation
* @goal generator-list
- *
* @since 1.0.1
- *
*/
public class GeneratorListMojo extends AbstractMojo {
@@ -48,6 +46,7 @@
* @since 1.0.1
*/
protected boolean detail;
+
/**
* All available generators
*
@@ -67,13 +66,17 @@
buffer.append("No generator found.\n\n");
} else {
buffer.append("List of available generators :\n\n");
- for (Entry<String, HeaderGenerator> stringHeaderGeneratorEntry : _generators.entrySet()) {
- Entry<String, HeaderGenerator> e = stringHeaderGeneratorEntry;
+ for (Entry<String, HeaderGenerator> e : _generators.entrySet()) {
HeaderGenerator generator = e.getValue();
- buffer.append(" - ").append(e.getKey()).append(" : ").append(generator.getDescription());
+ buffer.append(" - ");
+ buffer.append(e.getKey());
+ buffer.append(" : ");
+ buffer.append(generator.getDescription());
buffer.append("\n");
if (detail) {
- buffer.append("\n example : \n").append(generator.getHeader("content ")).append('\n');
+ buffer.append("\n example : \n");
+ buffer.append(generator.getHeader("content "));
+ buffer.append('\n');
}
}
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/LicenseListMojo.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,16 +20,16 @@
*/
package org.nuiton.license.plugin;
-import java.io.IOException;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-
import org.nuiton.license.plugin.repository.License;
import org.nuiton.license.plugin.repository.LicenseDefinition;
import org.nuiton.license.plugin.repository.LicenseRepository;
import org.nuiton.license.plugin.repository.LicenseRepositoryFactory;
+import java.io.IOException;
+
/**
* Display all available licenses.
*
@@ -37,7 +37,6 @@
* @goal license-list
* @requiresProject false
* @requiresDirectInvocation
- *
* @since 1.0.1
*/
public class LicenseListMojo extends AbstractMojo {
@@ -49,6 +48,7 @@
* @since 1.0.1
*/
protected String extraResolver;
+
/**
* Encoding a utiliser pour lire et ecrire les fichiers.
*
@@ -57,6 +57,7 @@
* @since 1.0.0
*/
protected String encoding;
+
/**
* Un drapeau pour afficher aussi le contenu des license.
*
@@ -75,23 +76,37 @@
LicenseRepository factory;
try {
- factory = LicenseRepositoryFactory.newLicenseRepository(true, true, extraResolver);
+ factory = LicenseRepositoryFactory.newLicenseRepository(
+ true,
+ true,
+ extraResolver
+ );
} catch (IllegalArgumentException ex) {
- throw new MojoExecutionException("could not obtain the license repository", ex);
+ throw new MojoExecutionException(
+ "could not obtain the license repository", ex);
} catch (IOException ex) {
- throw new MojoExecutionException("could not obtain the license repository", ex);
+ throw new MojoExecutionException(
+ "could not obtain the license repository", ex);
}
for (LicenseDefinition entry : factory.getDefinitions()) {
String licenseName = entry.getName();
- buffer.append(" * ").append(licenseName).append(" : ").append(entry.getDescription()).append('\n');
+ buffer.append(" * ");
+ buffer.append(licenseName);
+ buffer.append(" : ");
+ buffer.append(entry.getDescription());
+ buffer.append('\n');
if (detail) {
try {
License license = factory.getLicense(licenseName);
- buffer.append("\n").append(license.getHeaderContent(encoding)).append("\n\n");
+ buffer.append("\n");
+ buffer.append(license.getHeaderContent(encoding));
+ buffer.append("\n\n");
} catch (IOException ex) {
- throw new MojoExecutionException("could not instanciate license with name " + licenseName + " for reason " + ex.getMessage(), ex);
+ throw new MojoExecutionException(
+ "could not instanciate license with name " +
+ licenseName + " for reason " + ex.getMessage(), ex);
}
}
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderMojo.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -58,6 +58,7 @@
* @since 1.0.0
*/
protected MavenProject project;
+
/**
* Encoding a utiliser pour lire et ecrire les fichiers.
*
@@ -66,6 +67,7 @@
* @since 1.0.0
*/
protected String encoding;
+
/**
* l'annee de creation du module (sera place dans le header)
*
@@ -74,14 +76,17 @@
* @since 1.0.0
*/
protected String inceptionYear;
+
/**
* le nom de l'organisation (sera place dans le header)
*
- * @parameter expression="${license.organizationName}" default-value="${project.organization.name}"
+ * @parameter expression="${license.organizationName}"
+ * default-value="${project.organization.name}"
* @required
* @since 1.0.0
*/
protected String organizationName;
+
/**
* le nom du projet (sera place dans le header)
*
@@ -90,6 +95,7 @@
* @since 1.0.0
*/
protected String projectName;
+
/**
* Le type de license a appliquer.
*
@@ -98,6 +104,7 @@
* @since 1.0.0
*/
protected String licenseName;
+
/**
* Le type de générateur a utiliser pour encapsuler le header.
* <p/>
@@ -108,13 +115,14 @@
* @since 1.0.1
*/
protected String generatorName;
+
/**
* La liste des patterns de fichiers à inclure (séparés par des virgules).
* <p/>
* Exemple : <code>**\/*.java,**\/*.properties</code>
* <p/>
- * On recherchera alors les fichiers respectant l'un des patterns dans
- * tous les répertoires de sources et de tests.
+ * On recherchera alors les fichiers respectant l'un des patterns dans tous
+ * les répertoires de sources et de tests.
* <p/>
* Par défaut, on veut utiliser le plugin sur des fichiers sources java.
*
@@ -123,13 +131,14 @@
* @since 1.0.1
*/
protected String includes = "**/*.java";
+
/**
* La liste des patterns de fichiers à exclure (séparés par des virgules).
* <p/>
* Exemple : <code>**\/*.java,**\/*.properties</code>
* <p/>
- * On recherchera alors les fichiers respectant l'un des patterns dans
- * tous les répertoires de sources et de tests.
+ * On recherchera alors les fichiers respectant l'un des patterns dans tous
+ * les répertoires de sources et de tests.
* <p/>
* Par défaut, on n'exclue rien.
*
@@ -137,53 +146,57 @@
* @since 1.0.1
*/
protected String excludes;
+
/**
* Compile source directory roots to inspect.
- *
+ * <p/>
* Can use it a a comma separated string :
- *
- * <pre><compileSourceRoots>src/site,src.target/extra-site</compileSourceRoots> </pre>
- *
+ * <p/>
+ * <pre><compileSourceRoots>src/site,src.target/extra-site</compileSourceRoots>
+ * </pre>
+ * <p/>
* or a list :
- *
+ * <p/>
* <pre>
* <compileSourceRoots>
* <root>src/site</root> </pre>
- * <root>src/target/extra-site</root> </pre>
- * </compileSourceRoots>
- * </pre>
- *
+ * <root>src/target/extra-site</root> </pre>
+ * </compileSourceRoots> </pre>
+ * <p/>
* <b>Note:</b> If not set, will use the build compile roots.
*
- * @parameter expression="${license.compileSourceRoots}" default-value="${project.compileSourceRoots}"
+ * @parameter expression="${license.compileSourceRoots}"
+ * default-value="${project.compileSourceRoots}"
* @required
* @since 1.0.0
*/
protected List<String> compileSourceRoots;
+
/**
* Test source directory roots to inspect.
- *
+ * <p/>
* Can use it a a comma separated string :
- *
- * <pre><testSourceRoots>src/test1,src/test2</testSourceRoots> </pre>
- *
+ * <p/>
+ * <pre><testSourceRoots>src/test1,src/test2</testSourceRoots>
+ * </pre>
+ * <p/>
* or a list :
- *
+ * <p/>
* <pre>
* <testSourceRoots>
* <root>src/site</root> </pre>
- * <root>src/target/extra-site</root> </pre>
- * </testSourceRoots>
- * </pre>
- *
+ * <root>src/target/extra-site</root> </pre>
+ * </testSourceRoots> </pre>
+ * <p/>
* <b>Note:</b> If not set, will use the build test roots.
*
- *
- * @parameter expression="${license.testSourceRoots}" default-value="${project.testCompileSourceRoots}"
+ * @parameter expression="${license.testSourceRoots}"
+ * default-value="${project.testCompileSourceRoots}"
* @required
* @since 1.0.0
*/
protected List<String> testSourceRoots;
+
/**
* Un resolver externe
*
@@ -191,6 +204,7 @@
* @since 1.0.0
*/
protected String licenseResolver;
+
/**
* La template (velocity) a utiliser pour construire le header.
* <p/>
@@ -200,6 +214,7 @@
* @since 1.0.1
*/
protected String template;
+
/**
* Des paramètres supplémentaires à utiliser dans la template du header.
*
@@ -207,6 +222,7 @@
* @since 1.0.1
*/
protected Map<String, String> templateParameters;
+
/**
* Un flag pour conserver un backup des fichiers modifies.
*
@@ -214,6 +230,7 @@
* @since 1.0.0
*/
protected boolean keepBackup;
+
/**
* Un flag pour activer le mode verbeux.
*
@@ -221,6 +238,7 @@
* @since 1.0.0
*/
protected boolean verbose;
+
/**
* A flag to skip the goal.
*
@@ -228,6 +246,7 @@
* @since 1.0.3
*/
protected boolean skipUpdateHeader;
+
/**
* A flag to test plugin but modify no file.
*
@@ -235,6 +254,7 @@
* @since 1.0.3
*/
protected boolean dryRun;
+
/**
* Velocity Component.
*
@@ -242,27 +262,27 @@
* @since 2.0.0
*/
protected VelocityComponent velocity;
+
/**
* All available generators
*
* @component role="org.nuiton.license.plugin.header.generator.HeaderGenerator"
*/
protected Map<String, HeaderGenerator> _generators;
- /**
- * le header a ajouter dans chaque fichier source java
- */
+
+ /** le header a ajouter dans chaque fichier source java */
protected String licenseHeaderContent;
- /**
- * le header complet (avec les balises de commentaires)
- */
+
+ /** le header complet (avec les balises de commentaires) */
protected String boxedLicenseHeaderContent;
+
/**
- * la liste des chemin relatifs des sources java a traiter pour chaque repertoire contenant des sources
+ * la liste des chemin relatifs des sources java a traiter pour chaque
+ * repertoire contenant des sources
*/
protected Map<File, String[]> filesToTreate;
- /**
- * le timestamp utilise pour la generation
- */
+
+ /** le timestamp utilise pour la generation */
protected long timestamp;
@Override
@@ -334,16 +354,16 @@
throw new MojoExecutionException("no header generator found");
}
if (verbose) {
- for (Entry<String, HeaderGenerator> stringHeaderGeneratorEntry : _generators.entrySet()) {
- Entry<String, HeaderGenerator> next = stringHeaderGeneratorEntry;
+ for (Entry<String, HeaderGenerator> e : _generators.entrySet()) {
+ Entry<String, HeaderGenerator> next = e;
getLog().info("config - available generator : " + next.getKey());
}
- if (compileSourceRoots!=null) {
+ if (compileSourceRoots != null) {
for (String root : compileSourceRoots) {
getLog().info("config - compile source root : " + root);
}
}
- if (testSourceRoots!=null) {
+ if (testSourceRoots != null) {
for (String root : testSourceRoots) {
getLog().info("config - test source root : " + root);
}
@@ -351,7 +371,9 @@
}
if (!_generators.containsKey(generatorName.trim())) {
- throw new MojoExecutionException("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)");
+ throw new MojoExecutionException(
+ "the generator named '" + generatorName +
+ "' is unknown (use generator-list goal to see all of them)");
}
HeaderGenerator generator = _generators.get(generatorName);
@@ -369,11 +391,17 @@
File templateFile = new File(template);
- // verifie que la template existe (dans le class-path ou en tant que fichier)
+ // verifie que la template existe (dans le class-path ou en tant que
+ // fichier)
checkResource(templateFile);
// recuperation de la license a utiliser
- LicenseRepository factory = LicenseRepositoryFactory.newLicenseRepository(true, true, licenseResolver);
+ LicenseRepository factory =
+ LicenseRepositoryFactory.newLicenseRepository(
+ true,
+ true,
+ licenseResolver
+ );
License license = factory.getLicense(licenseName);
if (verbose) {
@@ -387,7 +415,8 @@
// build the comment boxed header content
boxedLicenseHeaderContent = generator.getHeader(licenseHeaderContent);
if (verbose) {
- getLog().info("config - header to use\n" + boxedLicenseHeaderContent);
+ getLog().info("config - header to use\n" +
+ boxedLicenseHeaderContent);
}
}
@@ -408,7 +437,8 @@
}
// file where to writeFile result
- File processFile = new File(file.getAbsolutePath() + "_" + timestamp);
+ File processFile = new File(file.getAbsolutePath() + "_" +
+ timestamp);
try {
p.process(file, processFile);
@@ -416,11 +446,16 @@
if (!foundLicenseHeader) {
if (p.getLicenceFilter().isDetectHeader()) {
- getLog().warn("skip file " + file + " (no license footer tag found : '##%*' !)");
+ getLog().warn(
+ "skip file " + file +
+ " (no license footer tag found : '##%*' !)");
} else {
// no license header found in file, add it
getLog().info("adding license header on file " + file);
- String content = PluginHelper.readAsString(file, encoding);
+ String content = PluginHelper.readAsString(
+ file,
+ encoding
+ );
content = boxedLicenseHeaderContent + content;
if (!dryRun) {
writeFile(processFile, content, encoding);
@@ -443,7 +478,9 @@
}
} catch (Exception e) {
- getLog().warn("skip file " + file + " (could not process for reason : " + e.getMessage() + ")");
+ getLog().warn(
+ "skip file " + file + " (could not process " +
+ "for reason : " + e.getMessage() + ")");
deleteFile(processFile);
} finally {
// toujours cleaner les états du filtre du processeur
@@ -464,7 +501,8 @@
* @return le header construit
* @throws Exception pour toute erreur pendant la construction du header
*/
- protected String computeHeader(License license, HeaderGenerator generator) throws Exception {
+ protected String computeHeader(License license,
+ HeaderGenerator generator) throws Exception {
// recuperation de la license a mettre dans le header
String licenseContent = license.getHeaderContent(encoding);
@@ -497,7 +535,10 @@
buffer.append("config - parameters for template : ");
for (Object key : context.getKeys()) {
- buffer.append("\n * ").append(key).append(" : ").append(context.get(key + ""));
+ buffer.append("\n * ");
+ buffer.append(key);
+ buffer.append(" : ");
+ buffer.append(context.get(key + ""));
}
getLog().info(buffer.toString());
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/AptLicenseHeaderGeneratorImpl.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -23,18 +23,19 @@
import org.nuiton.processor.filters.LicenseFilter;
/**
- * Le generateur de header pour des fichiers apt.
+ * Le generateur de header pour des fichiers apt.
*
* @author chemit
+ * @plexus.component role-hint="license-apt"
* @since 1.0.1
- *
- * @plexus.component role-hint="license-apt"
*/
public class AptLicenseHeaderGeneratorImpl extends LicenseHeaderGenerator {
public static final String GENERATOR_NAME = "license-apt";
- public static final String GENERATOR_DESCRIPTION = "generator with apt comment style";
+ public static final String GENERATOR_DESCRIPTION =
+ "generator with apt comment style";
+
public AptLicenseHeaderGeneratorImpl() {
super("~~~ ", "\n", "\n", LicenseFilter.HEADER, LicenseFilter.FOOTER);
}
@@ -48,4 +49,4 @@
public String getDescription() {
return GENERATOR_DESCRIPTION;
}
-}
\ No newline at end of file
+}
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/HeaderGenerator.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/HeaderGenerator.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/HeaderGenerator.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -30,21 +30,13 @@
*/
public interface HeaderGenerator {
- /**
- * Plexus role name
- */
+ /** Plexus role name */
String ROLE_NAME = HeaderGenerator.class.getName();
- /**
- *
- * @return the name of the generator
- */
+ /** @return the name of the generator */
String getName();
- /**
- *
- * @return the description of the generator
- */
+ /** @return the description of the generator */
String getDescription();
/**
@@ -53,16 +45,12 @@
*/
String getHeader(String content);
- /**
- *
- * @return the prefix to add on each lines of the header
- */
+ /** @return the prefix to add on each lines of the header */
String getLinePrefix();
/**
- *
- * @param content
- * @return the prefix content
+ * @param content the license
+ * @return the prefix content (wrapping header)
* @throws IOException if any io exceptions
*/
String prefixContent(String content) throws IOException;
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/JavaLicenseHeaderGeneratorImpl.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -26,15 +26,16 @@
* Le geénérateur de header pour les fichiers sources java.
*
* @author chemit
+ * @plexus.component role-hint="license-java"
* @since 1.0.1
- *
- * @plexus.component role-hint="license-java"
*/
public class JavaLicenseHeaderGeneratorImpl extends LicenseHeaderGenerator {
public static final String GENERATOR_NAME = "license-java";
- public static final String GENERATOR_DESCRIPTION = "generator with java comment style";
+ public static final String GENERATOR_DESCRIPTION =
+ "generator with java comment style";
+
public JavaLicenseHeaderGeneratorImpl() {
super(" *", "/*", " */", LicenseFilter.HEADER, LicenseFilter.FOOTER);
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/LicenseHeaderGenerator.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/LicenseHeaderGenerator.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/LicenseHeaderGenerator.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,24 +20,33 @@
*/
package org.nuiton.license.plugin.header.generator;
-import java.io.IOException;
import org.nuiton.plugin.PluginHelper;
+import java.io.IOException;
+
/**
* Une implentation de base pour les generateur d'en-tete de license.
- *
+ *
* @author chemit
* @since 1.0.1
*/
public abstract class LicenseHeaderGenerator implements HeaderGenerator {
protected String linePrefix;
+
protected String openTag;
+
protected String closeTag;
+
protected String openProcessTag;
+
protected String closeProcessTag;
- public LicenseHeaderGenerator(String linePrefix, String openTag, String closeTag, String openProcessTag, String closeProcessTag) {
+ public LicenseHeaderGenerator(String linePrefix,
+ String openTag,
+ String closeTag,
+ String openProcessTag,
+ String closeProcessTag) {
this.linePrefix = linePrefix;
this.openTag = openTag;
this.closeTag = closeTag;
@@ -47,12 +56,30 @@
@Override
public String getHeader(String licenseHeaderContent) {
- return openTag + "\n" + linePrefix + " " + openProcessTag + " " + licenseHeaderContent + " " + closeProcessTag + "\n" + closeTag + "\n";
+ StringBuilder buffer = new StringBuilder();
+ buffer.append(openTag);
+ buffer.append('\n');
+ buffer.append(linePrefix);
+ buffer.append(' ');
+ buffer.append(openProcessTag);
+ buffer.append(' ');
+ buffer.append(licenseHeaderContent);
+ buffer.append(' ');
+ buffer.append(closeProcessTag);
+ buffer.append('\n');
+ buffer.append(closeTag);
+ buffer.append('\n');
+ return buffer.toString();
+// return openTag + "\n" + linePrefix + " " + openProcessTag + " " +
+// licenseHeaderContent + " " + closeProcessTag + "\n" + closeTag + "\n";
}
@Override
public String prefixContent(String content) throws IOException {
- String result = PluginHelper.prefixLines(linePrefix + " ", linePrefix, content);
+ String result = PluginHelper.prefixLines(linePrefix + " ",
+ linePrefix,
+ content
+ );
return result;
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/PropertiesLicenseHeaderGeneratorImpl.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -24,17 +24,21 @@
/**
* Le generateur de header pour des fichiers de proprietes.
- *
+ *
* @author chemit
+ * @plexus.component role-hint="license-properties"
* @since 1.0.1
- *
- * @plexus.component role-hint="license-properties"
*/
public class PropertiesLicenseHeaderGeneratorImpl extends LicenseHeaderGenerator {
public static final String GENERATOR_NAME = "license-properties";
- public static final String GENERATOR_DESCRIPTION = "generator with properties file comment style";
- public static final String LINE = "###############################################################################";
+
+ public static final String GENERATOR_DESCRIPTION =
+ "generator with properties file comment style";
+
+ public static final String LINE =
+ "###############################################################################";
+
public static final String PREFIX = "#";
public PropertiesLicenseHeaderGeneratorImpl() {
Modified: trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/header/generator/XmlLicenseHeaderGeneratorImpl.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -23,18 +23,19 @@
import org.nuiton.processor.filters.LicenseFilter;
/**
- * Le generateur de header pour des fichiers xml.
+ * Le generateur de header pour des fichiers xml.
*
* @author chemit
+ * @plexus.component role-hint="license-xml"
* @since 1.0.1
- *
- * @plexus.component role-hint="license-xml"
*/
public class XmlLicenseHeaderGeneratorImpl extends LicenseHeaderGenerator {
public static final String GENERATOR_NAME = "license-xml";
- public static final String GENERATOR_DESCRIPTION = "generator with xml comment style";
+ public static final String GENERATOR_DESCRIPTION =
+ "generator with xml comment style";
+
public XmlLicenseHeaderGeneratorImpl() {
super(" ", "<!--", "-->", LicenseFilter.HEADER, LicenseFilter.FOOTER);
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/License.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/License.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,14 +20,15 @@
*/
package org.nuiton.license.plugin.repository;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+import org.codehaus.plexus.util.IOUtil;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-import org.codehaus.plexus.util.IOUtil;
/**
* The model of a license.
@@ -36,21 +37,16 @@
*/
public class License {
- /**
- * the name of the licenses (ex lgpl-3.0)
- */
+ /** the name of the licenses (ex lgpl-3.0) */
protected String name;
- /**
- * the description of the license
- */
+
+ /** the description of the license */
protected String description;
- /**
- * url of the license's content
- */
+
+ /** url of the license's content */
protected URL licenseURL;
- /**
- * url of the header's template
- */
+
+ /** url of the header's template */
protected URL headerURL;
public License() {
@@ -77,13 +73,12 @@
throw new IllegalStateException("no licenseURL defined in " + this);
}
- Reader r = new BufferedReader(new InputStreamReader(licenseURL.openStream(), encoding));
+ Reader r = new BufferedReader(
+ new InputStreamReader(licenseURL.openStream(), encoding));
try {
return IOUtil.toString(r);
} finally {
- if (r != null) {
- r.close();
- }
+ r.close();
}
}
@@ -91,13 +86,12 @@
if (headerURL == null) {
throw new IllegalStateException("no headerURL defined in " + this);
}
- Reader r = new BufferedReader(new InputStreamReader(headerURL.openStream(), encoding));
+ Reader r = new BufferedReader(
+ new InputStreamReader(headerURL.openStream(), encoding));
try {
return IOUtil.toString(r);
} finally {
- if (r != null) {
- r.close();
- }
+ r.close();
}
}
@@ -119,7 +113,10 @@
@Override
public String toString() {
- ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE);
+ ToStringBuilder builder = new ToStringBuilder(
+ this,
+ ToStringStyle.MULTI_LINE_STYLE
+ );
builder.append("name", name);
builder.append("description", description);
builder.append("licenseURL", licenseURL);
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseDefinition.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,11 +20,12 @@
*/
package org.nuiton.license.plugin.repository;
-import java.io.IOException;
-import java.net.URL;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
+import java.io.IOException;
+import java.net.URL;
+
/**
* Model of a license definition in a license repository.
*
@@ -33,9 +34,13 @@
public class LicenseDefinition {
public static final String LICENSE_HEADER_FILE = "header.txt";
+
public static final String LICENSE_CONTENT_FILE = "license.txt";
+
protected URL baseURL;
+
protected String name;
+
protected String description;
public LicenseDefinition(URL baseURL, String name, String description) {
@@ -66,7 +71,10 @@
@Override
public String toString() {
- ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE);
+ ToStringBuilder builder = new ToStringBuilder(
+ this,
+ ToStringStyle.MULTI_LINE_STYLE
+ );
builder.append("name", name);
builder.append("description", description);
builder.append("baseURL", baseURL);
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepository.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -24,35 +24,30 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.Properties;
/**
- *
* @author chemit
* @since 1.0.3
*/
public class LicenseRepository {
public static final String REPOSITORY_DEFINITION_FILE = "licenses.properties";
- /**
- * the base url of the licenses repository
- */
+
+ /** the base url of the licenses repository */
protected URL baseURL;
- /**
- * next repository (can be {@code null}).
- */
+
+ /** next repository (can be {@code null}). */
protected LicenseRepository next;
+
protected List<LicenseDefinition> definitions;
+
protected final Map<LicenseDefinition, License> cache;
+
/**
- * flag to known if repository was init (pass to {@code true}
- * when invoking the method {@link #load()}).
+ * flag to known if repository was init (pass to {@code true} when invoking
+ * the method {@link #load()}).
*/
protected boolean init;
@@ -94,7 +89,9 @@
this.definitions = new ArrayList<LicenseDefinition>();
if (!checkExists(definitionURL)) {
- throw new IllegalArgumentException("no licenses.properties found withurl [" + definitionURL + "] for resolver " + this);
+ throw new IllegalArgumentException(
+ "no licenses.properties found withurl [" +
+ definitionURL + "] for resolver " + this);
}
Properties p = new Properties();
p.load(definitionURL.openStream());
@@ -107,7 +104,11 @@
URL licenseURL = getUrl(baseURL, licenseName);
- LicenseDefinition def = new LicenseDefinition(licenseURL, licenseName, licenseDescription);
+ LicenseDefinition def = new LicenseDefinition(
+ licenseURL,
+ licenseName,
+ licenseDescription
+ );
definitions.add(def);
}
definitions = Collections.unmodifiableList(definitions);
@@ -121,7 +122,8 @@
public List<LicenseDefinition> getAllDefinitions() {
LicenseRepository[] repos = getAllRepositories();
- List<LicenseDefinition> result = new ArrayList<LicenseDefinition>(repos.length);
+ List<LicenseDefinition> result =
+ new ArrayList<LicenseDefinition>(repos.length);
for (LicenseRepository repo : repos) {
result.addAll(repo.definitions);
}
@@ -135,7 +137,8 @@
public LicenseDefinition getDefinition(String licenseName) {
checkInit();
if (licenseName == null || licenseName.trim().isEmpty()) {
- throw new IllegalArgumentException("licenceName can not be null, nor empty");
+ throw new IllegalArgumentException(
+ "licenceName can not be null, nor empty");
}
licenseName = licenseName.trim().toLowerCase();
LicenseDefinition definition = null;
@@ -154,7 +157,8 @@
public License getLicense(String licenseName) throws IOException {
checkInit();
if (licenseName == null || licenseName.trim().isEmpty()) {
- throw new IllegalArgumentException("licenceName can not be null, nor empty");
+ throw new IllegalArgumentException(
+ "licenceName can not be null, nor empty");
}
LicenseDefinition definition = getDefinition(licenseName);
@@ -183,12 +187,14 @@
return license;
}
- public static URL getUrl(URL baseUrl, String suffix) throws IllegalArgumentException {
+ public static URL getUrl(URL baseUrl,
+ String suffix) throws IllegalArgumentException {
String url = baseUrl.toString() + "/" + suffix;
try {
return new URL(url);
} catch (MalformedURLException ex) {
- throw new IllegalArgumentException("could not obtain url " + url, ex);
+ throw new IllegalArgumentException(
+ "could not obtain url " + url, ex);
}
}
@@ -214,13 +220,17 @@
protected void checkNotInit() throws IllegalStateException {
if (init) {
- throw new IllegalStateException("license repository " + this + " was already initialize...");
+ throw new IllegalStateException(
+ "license repository " + this +
+ " was already initialize...");
}
}
protected void checkInit() throws IllegalStateException {
if (!init) {
- throw new IllegalStateException("repository " + this + " is not init, use the load method before any license request");
+ throw new IllegalStateException(
+ "repository " + this + " is not init, use the load " +
+ "method before any license request");
}
}
}
Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java
===================================================================
--- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -34,13 +34,10 @@
*/
public class LicenseRepositoryFactory {
- /**
- * class-path directory where is the licenses repository
- */
+ /** class-path directory where is the licenses repository */
public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses";
- /**
- * to use log facility, just put in your code: log.info(\"...\");
- */
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
static private final Log log = LogFactory.getLog(LicenseRepositoryFactory.class);
/**
@@ -52,7 +49,10 @@
* @return the instanciate and ready to use license repository
* @throws IOException if any problem while acquiring license repository
*/
- public static LicenseRepository newLicenseRepository(boolean useJarRepository, boolean load, String... extraResolvers) throws IOException {
+ public static LicenseRepository newLicenseRepository(
+ boolean useJarRepository,
+ boolean load,
+ String... extraResolvers) throws IOException {
List<URL> baseURLs = new ArrayList<URL>();
if (extraResolvers != null) {
@@ -66,9 +66,11 @@
url = new URL(exUrl);
} catch (Exception e) {
if (log.isDebugEnabled()) {
- log.warn("could not convert url [" + exUrl + "], for reason " + e.getMessage());
+ log.warn("could not convert url [" + exUrl +
+ "], for reason " + e.getMessage());
} else {
- log.warn("could not convert url [" + exUrl + "], for reason " + e.getMessage());
+ log.warn("could not convert url [" + exUrl +
+ "], for reason " + e.getMessage());
}
log.warn("will skip the url [" + exUrl + "]");
continue;
@@ -110,10 +112,12 @@
return result;
}
- public static LicenseRepository newJarLicenseRepository(boolean load) throws IOException {
+ public static LicenseRepository newJarLicenseRepository(
+ boolean load) throws IOException {
LicenseRepository result = new LicenseRepository();
// the first repository is always a jar repository
- URL baseURL = LicenseRepositoryFactory.class.getResource(JAR_LICENSE_REPOSITORY);
+ URL baseURL = LicenseRepositoryFactory.class.getResource(
+ JAR_LICENSE_REPOSITORY);
result.setBaseURL(baseURL);
if (load) {
result.load();
Modified: trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/test/java/org/nuiton/license/plugin/AddLicenseFileMojoTest.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,13 +20,15 @@
*/
package org.nuiton.license.plugin;
-import static org.junit.Assert.*;
import org.junit.Test;
+import org.nuiton.plugin.AbstractMojoTest;
import java.io.File;
import java.io.IOException;
-import org.nuiton.plugin.AbstractMojoTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
public class AddLicenseFileMojoTest extends AbstractMojoTest<AddLicenseFileMojo> {
@Override
@@ -42,13 +44,19 @@
mojo.setOutputDirectory(outputDirectory);
if (!outputDirectory.exists()) {
if (!outputDirectory.mkdirs()) {
- throw new IOException("could not create directory : " + outputDirectory);
+ throw new IOException(
+ "could not create directory : " + outputDirectory);
}
}
- mojo.setLicenseFile(new File(pomFile.getParentFile(), mojo.getLicenseFile().toString()));
- log.info("pom : " + getRelativePathFromBasedir(mojo.getProject().getFile()));
- log.info("outputDirectory : " + getRelativePathFromBasedir(mojo.getOutputDirectory()));
- log.info("licenseFile : " + getRelativePathFromBasedir(mojo.getLicenseFile()));
+ mojo.setLicenseFile(new File(pomFile.getParentFile(),
+ mojo.getLicenseFile().toString())
+ );
+ log.info("pom : " +
+ getRelativePathFromBasedir(mojo.getProject().getFile()));
+ log.info("outputDirectory : " +
+ getRelativePathFromBasedir(mojo.getOutputDirectory()));
+ log.info("licenseFile : " +
+ getRelativePathFromBasedir(mojo.getLicenseFile()));
}
@Test
@@ -60,7 +68,11 @@
// always assume pom is older than any file
// since we can not ensure order of copy test resources
- mojo.getProject().getFile().setLastModified(0);
+ File file = mojo.getProject().getFile();
+ boolean b = file.setLastModified(0);
+ if (!b) {
+ throw new IOException("could not change lastModified on " + file);
+ }
// then executing the mojo, will do NOT change the licence file
mojo.execute();
@@ -87,7 +99,11 @@
// always assume pom is older than any file
// since we can not ensure order of copy test resources
- mojo.getProject().getFile().setLastModified(0);
+ File file = mojo.getProject().getFile();
+ boolean b = file.setLastModified(0);
+ if (!b) {
+ throw new IOException("could not changed lastModified on " + file);
+ }
// then executing the mojo, will do NOT change the licence file
mojo.execute();
Modified: trunk/src/test/java/org/nuiton/license/plugin/UpdateHeaderMojoTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/UpdateHeaderMojoTest.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/test/java/org/nuiton/license/plugin/UpdateHeaderMojoTest.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,20 +20,24 @@
*/
package org.nuiton.license.plugin;
+import org.junit.Test;
+import org.nuiton.plugin.AbstractMojoTest;
+import org.nuiton.plugin.PluginHelper;
+import org.nuiton.processor.filters.LicenseFilter;
+
import java.io.File;
import java.io.IOException;
import java.util.Map.Entry;
-import static org.junit.Assert.*;
-import org.junit.Test;
-import org.nuiton.processor.filters.LicenseFilter;
-import org.nuiton.plugin.PluginHelper;
-import org.nuiton.plugin.AbstractMojoTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/** @author chemit */
public class UpdateHeaderMojoTest extends AbstractMojoTest<UpdateHeaderMojo> {
- public static final String _LICENSE_TO_CHANGE_ = LicenseFilter.HEADER + " license to change " + LicenseFilter.FOOTER;
+ public static final String _LICENSE_TO_CHANGE_ =
+ LicenseFilter.HEADER + " license to change " + LicenseFilter.FOOTER;
+
public static final String _MUST_BE_THERE = "// MUST BE THERE!";
@Override
@@ -65,7 +69,8 @@
testPom(new String[]{_MUST_BE_THERE}, new String[]{_LICENSE_TO_CHANGE_});
}
- public void testPom(String[] mandatoryPatterns, String[] excludePatterns) throws Exception {
+ public void testPom(String[] mandatoryPatterns,
+ String[] excludePatterns) throws Exception {
UpdateHeaderMojo mojo = getMojo();
@@ -76,7 +81,8 @@
for (String javaRelativePath : entry.getValue()) {
File f = new File(src, javaRelativePath);
- assertTrue("generated file " + f + " was not found...", f.exists());
+ assertTrue("generated file " + f + " was not found...",
+ f.exists());
String content = PluginHelper.readAsString(f, "utf-8");
@@ -93,9 +99,16 @@
}
}
- protected void checkPattern(String content, String pattern, boolean required, File f) throws IOException {
+ protected void checkPattern(String content,
+ String pattern,
+ boolean required,
+ File f) throws IOException {
- String errorMessage = required ? "could not find the pattern : " : "should not have found pattern :";
- assertEquals(errorMessage + pattern + " in file " + f, required, content.contains(pattern));
+ String errorMessage = required ? "could not find the pattern : " :
+ "should not have found pattern :";
+ assertEquals(errorMessage + pattern + " in file " + f,
+ required,
+ content.contains(pattern)
+ );
}
}
Modified: trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java
===================================================================
--- trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-03-27 20:04:32 UTC (rev 1701)
+++ trunk/src/test/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactoryTest.java 2010-04-04 07:55:41 UTC (rev 1702)
@@ -20,22 +20,26 @@
*/
package org.nuiton.license.plugin.repository;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Test;
import org.nuiton.plugin.TestHelper;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
/** @author chemit */
public class LicenseRepositoryFactoryTest extends Assert {
public static final String NEWLICENSE = "new_license";
+
public static final String NEWLICENSE2 = "new_license2";
protected static final Log log = LogFactory.getLog(LicenseRepositoryFactoryTest.class);
+
protected static final String encoding = "utf-8";
+
protected File baseDir;
protected File getBaseDir() {
@@ -130,11 +134,11 @@
assertEquals(definitions, allDefinitions);
assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3");
}
@Test
@@ -150,11 +154,11 @@
assertEquals(1, repositories.length);
assertNotNull(repositories[0]);
assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3");
repository = LicenseRepositoryFactory.newLicenseRepository(true, true, "");
repositories = repository.getAllRepositories();
@@ -162,11 +166,11 @@
assertEquals(1, repositories.length);
assertNotNull(repositories[0]);
assertLicenseRepositoryFound(repository,
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3");
repository = LicenseRepositoryFactory.newLicenseRepository(true, false, "file://yo");
assertNotNull(repository);
@@ -196,22 +200,22 @@
assertEquals(1, repositories[1].getDefinitions().size());
assertLicenseRepositoryFound(repositories[0],
- "gpl_v1",
- "gpl_v2",
- "gpl_v3",
- "lgpl_v2_1",
- "lgpl_v3");
+ "gpl_v1",
+ "gpl_v2",
+ "gpl_v3",
+ "lgpl_v2_1",
+ "lgpl_v3");
assertNotNull(repositories[1].getBaseURL());
assertEquals(repo, new File(repositories[1].getBaseURL().getFile()));
assertLicenseRepositoryFound(repositories[1],
- generatedLicence);
+ generatedLicence);
// add license
- addLicenseToRepository(repo,NEWLICENSE);
+ addLicenseToRepository(repo, NEWLICENSE);
repository.reload();
@@ -226,11 +230,11 @@
assertNotNull(repositories[1].getDefinitions().get(1));
assertLicenseRepositoryFound(repositories[1],
- NEWLICENSE, generatedLicence);
+ NEWLICENSE, generatedLicence);
// add another license
- addLicenseToRepository(repo,NEWLICENSE2);
+ addLicenseToRepository(repo, NEWLICENSE2);
repository.reload();
repositories = repository.getAllRepositories();
@@ -243,7 +247,7 @@
assertEquals(3, repositories[1].getDefinitions().size());
assertLicenseRepositoryFound(repositories[1], NEWLICENSE,
- NEWLICENSE2, generatedLicence);
+ NEWLICENSE2, generatedLicence);
}
//
// @Test
1
0