You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2010/10/27 00:01:24 UTC
svn commit: r1027755 - in /httpcomponents/maven-notice-plugin/trunk: pom.xml
src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java
Author: olegk
Date: Tue Oct 26 22:01:23 2010
New Revision: 1027755
URL: http://svn.apache.org/viewvc?rev=1027755&view=rev
Log:
Rewrite NOTICE header based on the POM properties
Modified:
httpcomponents/maven-notice-plugin/trunk/pom.xml
httpcomponents/maven-notice-plugin/trunk/src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java
Modified: httpcomponents/maven-notice-plugin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/httpcomponents/maven-notice-plugin/trunk/pom.xml?rev=1027755&r1=1027754&r2=1027755&view=diff
==============================================================================
--- httpcomponents/maven-notice-plugin/trunk/pom.xml (original)
+++ httpcomponents/maven-notice-plugin/trunk/pom.xml Tue Oct 26 22:01:23 2010
@@ -58,6 +58,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.version>2.2.0</maven.version>
+ <commons-io.version>2.0</commons-io.version>
</properties>
<dependencies>
@@ -77,6 +78,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>${commons-io.version}</version>
+ </dependency>
</dependencies>
<build>
Modified: httpcomponents/maven-notice-plugin/trunk/src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java
URL: http://svn.apache.org/viewvc/httpcomponents/maven-notice-plugin/trunk/src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java?rev=1027755&r1=1027754&r2=1027755&view=diff
==============================================================================
--- httpcomponents/maven-notice-plugin/trunk/src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java (original)
+++ httpcomponents/maven-notice-plugin/trunk/src/main/java/org/apache/httpcomponents/maven/plugin/notice/NoticeMojo.java Tue Oct 26 22:01:23 2010
@@ -25,15 +25,20 @@
*/
package org.apache.httpcomponents.maven.plugin.notice;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Calendar;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.maven.model.License;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
@@ -47,6 +52,8 @@ import org.apache.maven.project.MavenPro
*/
public final class NoticeMojo extends AbstractMojo {
+ private final static String UTF_8 = "UTF-8";
+
/**
* The Maven Project Object
*
@@ -83,26 +90,39 @@ public final class NoticeMojo extends Ab
List licenses = this.project.getLicenses();
for (int i = 0; i < licenses.size(); i++) {
License license = (License) licenses.get(i);
- URI uri = createURI(license.getUrl());
- if (!uri.isAbsolute()) {
- File file = findFile(license.getUrl());
- if (file != null) {
- uri = createURI("file://" + file.getAbsolutePath());
+ try {
+ URI uri = new URI(license.getUrl());
+ String s = "LICENSE";
+ if (i > 0) {
+ s = s + i;
}
+ s = s + ".txt";
+ File out = new File(nalDir, s);
+ if (!uri.isAbsolute()) {
+ File file = findFile(license.getUrl());
+ if (file != null) {
+ FileUtils.copyFile(file, out);
+ }
+ } else {
+ FileUtils.copyURLToFile(uri.toURL(), out);
+ }
+ } catch (URISyntaxException ex) {
+ throw new MojoFailureException("Invalid URI: " +
+ ex.getMessage(), ex);
+ } catch (IOException ex) {
+ throw new MojoFailureException("I/O error copying LICENSE file: " +
+ ex.getMessage(), ex);
}
- String s = "LICENSE";
- if (i > 0) {
- s = s + i;
- }
- s = s + ".txt";
- File out = new File(nalDir, s);
- copy(uri, out);
}
File file = findFile("NOTICE.txt");
if (file != null) {
File out = new File(nalDir, "NOTICE.txt");
- URI uri = createURI("file://" + file.getAbsolutePath());
- copy(uri, out);
+ try {
+ rewriteNotice(file, out);
+ } catch (IOException ex) {
+ throw new MojoFailureException("I/O error copying NOTICE file: " +
+ ex.getMessage(), ex);
+ }
}
Resource nalRes = new Resource();
@@ -126,33 +146,42 @@ public final class NoticeMojo extends Ab
return null;
}
- private URI createURI(final String s) throws MojoExecutionException {
+ private void rewriteNotice(final File in, final File out) throws IOException {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ new FileInputStream(in), UTF_8));
try {
- return new URI(s);
- } catch (URISyntaxException ex) {
- throw new MojoExecutionException("Invalid URL: " + s);
- }
- }
-
- private void copy(final URI in, final File out) throws MojoExecutionException {
- try {
- InputStream instream = in.toURL().openStream();
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
+ new FileOutputStream(out), UTF_8));
try {
- OutputStream outstream = new FileOutputStream(out);
- try {
- byte[] tmp = new byte[1024 * 8];
- int l;
- while ((l = instream.read(tmp)) != -1) {
- outstream.write(tmp, 0, l);
+ writer.write("Apache HttpComponent ");
+ writer.write(this.project.getName());
+ writer.write("\r\n");
+ writer.write("Copyright ");
+ String fromYear = this.project.getInceptionYear();
+ if (fromYear != null && fromYear.length() > 0) {
+ writer.write(fromYear);
+ writer.write("-");
+ }
+ Calendar cal = Calendar.getInstance();
+ String toYear = Integer.toString(cal.get(Calendar.YEAR));
+ writer.write(toYear);
+ writer.write(" The Apache Software Foundation\r\n");
+
+ int count = 0;
+ String line;
+ while ((line = reader.readLine()) != null) {
+ count++;
+ if (count > 2) {
+ writer.write(line);
+ writer.write("\r\n");
}
- } finally {
- outstream.close();
}
+ writer.flush();
} finally {
- instream.close();
+ writer.close();
}
- } catch (IOException ex) {
- throw new MojoExecutionException("I/O error: " + ex.getMessage(), ex);
+ } finally {
+ reader.close();
}
}