You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/12/25 03:32:50 UTC

[commons-vfs] annotated tag japicmp-base-0.1.0 created (now 7dc1a37)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git.


      at 7dc1a37  (tag)
 tagging 29e29bcdb31dc01d09c2c8cb66fe5b06747a2682 (commit)
 replaces japicmp-base-0.0.2
      by CloudBees DEV@Cloud
      on Sat Jun 21 18:42:38 2014 -0400

- Log -----------------------------------------------------------------
[maven-release-plugin]  copy for tag japicmp-base-0.1.0
-----------------------------------------------------------------------

This annotated tag includes the following new commits:

     new aceff7a  Initial commit
     new 0ed6bdc  Initial commit
     new 846a435  Updated pom.xml and README.md
     new 878c163  changed logging level to INFO
     new d702fd6  added findbugs plugin
     new ca83540  Updated download link to newest snapshot version
     new dffbb39  moved distribution management to base pom
     new d135151  added testbase module and three submodules to test the comparison of jar archives
     new 80d2a73  further test cases
     new 645e7aa  extended README.md
     new ef67f5f  Added JarArchiveComparatorOptions, Update of README.md
     new af0ec12  [maven-release-plugin] prepare release japicmp-base-0.0.1
     new 8912361  [maven-release-plugin] rollback the release of japicmp-base-0.0.1
     new 41c5647  [maven-release-plugin] prepare release japicmp-base-0.0.1
     new ff15256  [maven-release-plugin] rollback the release of japicmp-base-0.0.1
     new 7fe97d4  [maven-release-plugin] prepare release japicmp-base-0.0.1
     new 8fbdc6c  [maven-release-plugin] rollback the release of japicmp-base-0.0.1
     new 94e66eb  [maven-release-plugin] prepare release japicmp-base-0.0.1
     new 3eeaf9c  [maven-release-plugin] prepare for next development iteration
     new 6c1a401  Updated README.md
     new 53a32f8  added -a option that lets the user specify the access modifier level used to compare classes and class members
     new 0111134  added new feature package filter (new cli option)
     new 7c22f30  added xml output for cobertura plugin
     new 3d58ae7  it is verified that argument for cli option -o and -n is a jar file
     new 329ab85  updated README.md
     new f5b13eb  updated README.md
     new f21e238  [maven-release-plugin] prepare release japicmp-base-0.0.2
     new 5d88a15  [maven-release-plugin] prepare for next development iteration
     new 101d281  updated README.md
     new 83770b8  updated README.md
     new 414ccbb  moved PackageFilter to config package, moved AccessModifier to model package
     new c3f510c  Update download links for releases
     new aeb5540  Local changes
     new 5ec9e0c  Updated README.md
     new 3111346  Updated README.md
     new c5ec4fe  started maven plugin
     new 7af9e49  maven-plugin: added parameter from CLI tool, add local file path as old or new archive location; java source and target level is now 1.7; removed dependency to eclipse-aether API
     new 707c1fa  reactivated cobertura plugin
     new 409f2df  Updated README.md
     new 09ba26a  Updated README.md
     new ab1d0b0  Updated README.md
     new 568f877  removed unnecessary files
     new 037b94e  Updated README.md
     new 2f3b431  added -XX:-UseSplitVerifier option for surefire plugin -> resolves bytecode instrumentation issue with cobertura
     new 761f276  Merged development branch to master
     new 0f0dd74  added @phase to maven-plugin
     new 29e29bc  [maven-release-plugin] prepare release japicmp-base-0.1.0

The 47 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[commons-vfs] 17/20: added -XX:-UseSplitVerifier option for surefire plugin -> resolves bytecode instrumentation issue with cobertura

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 2f3b431df1cc28eba2004763d4b0d7f76e90ee98
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Jun 22 00:02:28 2014 +0200

    added -XX:-UseSplitVerifier option for surefire plugin -> resolves bytecode instrumentation issue with cobertura
---
 japicmp/pom.xml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index 0d78636..0dda364 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -34,6 +34,14 @@
                 <artifactId>cobertura-maven-plugin</artifactId>
             </plugin>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.17</version>
+                <configuration>
+                    <argLine>-XX:-UseSplitVerifier</argLine>
+                </configuration>
+            </plugin>
+            <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <configuration>
                     <archive>


[commons-vfs] 10/20: maven-plugin: added parameter from CLI tool, add local file path as old or new archive location; java source and target level is now 1.7; removed dependency to eclipse-aether API

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 7af9e4952831788d8c8438c666ebc61a1042d0bd
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:18:15 2014 +0200

    maven-plugin: added parameter from CLI tool, add local file path as old or new archive location; java source and target level is now 1.7; removed dependency to eclipse-aether API
---
 japicmp-maven-plugin/pom.xml                       |  19 +-
 .../main/java/japicmp/maven/ConfigurationFile.java |  13 +
 .../src/main/java/japicmp/maven/JApiCmpMojo.java   | 264 +++++++++++++++------
 .../src/main/java/japicmp/maven/Parameter.java     |  49 ++++
 .../src/main/java/japicmp/maven/Version.java       |   9 +
 japicmp-testbase/japicmp-test-maven-plugin/pom.xml |   7 +
 japicmp-testbase/japicmp-test-v2/pom.xml           |  32 +++
 japicmp/pom.xml                                    |   4 -
 japicmp/src/main/java/japicmp/cli/CliParser.java   |  36 +--
 japicmp/src/main/java/japicmp/config/Options.java  |  24 ++
 .../main/java/japicmp/model/AccessModifier.java    |  13 +
 pom.xml                                            |   9 +-
 12 files changed, 360 insertions(+), 119 deletions(-)

diff --git a/japicmp-maven-plugin/pom.xml b/japicmp-maven-plugin/pom.xml
index 8c9c796..f83a912 100644
--- a/japicmp-maven-plugin/pom.xml
+++ b/japicmp-maven-plugin/pom.xml
@@ -14,7 +14,6 @@
 
     <properties>
         <maven.version>3.1.0</maven.version>
-        <aether.version>0.9.0.M2</aether.version>
     </properties>
 
     <prerequisites>
@@ -48,19 +47,19 @@
             <version>${maven.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-api</artifactId>
-            <version>${aether.version}</version>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.aether</groupId>
-            <artifactId>aether-util</artifactId>
-            <version>${aether.version}</version>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>${maven.version}</version>
         </dependency>
         <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-compat</artifactId>
+            <version>${maven.version}</version>
         </dependency>
     </dependencies>
 
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java
new file mode 100644
index 0000000..c5685cd
--- /dev/null
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/ConfigurationFile.java
@@ -0,0 +1,13 @@
+package japicmp.maven;
+
+public class ConfigurationFile {
+    private String path;
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+}
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
index 11b0582..e8b8c46 100644
--- a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
@@ -1,28 +1,31 @@
 package japicmp.maven;
 
-import com.google.common.io.Files;
+import com.google.common.base.Optional;
 import japicmp.cmp.JarArchiveComparator;
 import japicmp.cmp.JarArchiveComparatorOptions;
 import japicmp.config.Options;
+import japicmp.model.AccessModifier;
+import japicmp.model.JApiChangeStatus;
 import japicmp.model.JApiClass;
 import japicmp.output.stdout.StdoutOutputGenerator;
+import japicmp.output.xml.XmlOutputGenerator;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.factory.DefaultArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.DefaultMavenProjectBuilder;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResult;
+import org.apache.maven.settings.Settings;
 
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.nio.charset.Charset;
 import java.util.List;
 
 /**
@@ -31,15 +34,22 @@ import java.util.List;
 public class JApiCmpMojo extends AbstractMojo {
     /**
      * @parameter
+     * @required
      */
     private Version oldVersion;
 
     /**
      * @parameter
+     * @required
      */
     private Version newVersion;
 
     /**
+     * @parameter
+     */
+    private Parameter parameter;
+
+    /**
      * @parameter expression="${project.build.directory}"
      * @required
      */
@@ -48,82 +58,202 @@ public class JApiCmpMojo extends AbstractMojo {
     /**
      * @component
      */
-    private RepositorySystem repoSystem;
+    private ArtifactFactory artifactFactory;
+
+    /**
+     * @component
+     */
+    private ArtifactResolver artifactResolver;
+
+    /**
+     * @parameter default-value="${localRepository}"
+     */
+    private ArtifactRepository localRepository;
 
     /**
-     * @component default-value="${project.remoteProjectRepositories}"
+     * @parameter default-value="${project.remoteArtifactRepositories}"
      */
-    private List<RemoteRepository> remoteRepos;
+    private List<ArtifactRepository> artifactRepositories;
+
+    /**
+     * The system settings for Maven. This is the instance resulting from
+     * merging global and user-level settings files.
+     *
+     * @parameter expression="${settings}"
+     * @readonly
+     * @required
+     */
+    private Settings settings;
 
     public void execute() throws MojoExecutionException, MojoFailureException {
-        File oldVersionFile = null;
-        File newVersionFile = null;
-        if (oldVersion != null) {
-            Dependency dependency = oldVersion.getDependency();
-            if (dependency != null) {
-                String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
-                getLog().debug("oldVersion: " + descriptor);
-                oldVersionFile = resolveArtifact(descriptor);
+        File newVersionFile = retrieveFileFromConfiguration(newVersion, "newVersion");
+        File oldVersionFile = retrieveFileFromConfiguration(oldVersion, "oldVersion");
+        List<JApiClass> jApiClasses = compareArchives(newVersionFile, oldVersionFile);
+        if (projectBuildDir != null && projectBuildDir.exists()) {
+            try {
+                File jApiCmpBuildDir = createJapiCmpBaseDir();
+                Options options = createOptions();
+                String diffOutput = generateDiffOutput(newVersionFile, oldVersionFile, jApiClasses, options);
+                createFileAndWriteTo(diffOutput, jApiCmpBuildDir);
+                generateXmlOutput(newVersionFile, oldVersionFile, jApiClasses, jApiCmpBuildDir, options);
+                breakBuildIfNecessary(jApiClasses);
+            } catch (IOException e) {
+                throw new MojoFailureException(String.format("Failed to construct output directory: %s", e.getMessage()), e);
             }
+        } else {
+            throw new MojoFailureException("Could not determine the location of the build directory.");
         }
-        if (newVersion != null) {
-            Dependency dependency = newVersion.getDependency();
-            if (dependency != null) {
-                String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
-                getLog().debug("newVersion: " + descriptor);
-                newVersionFile = resolveArtifact(descriptor);
+    }
+
+    private void breakBuildIfNecessary(List<JApiClass> jApiClasses) throws MojoFailureException {
+        if(breakBuildOnModificationsParameter()) {
+            for(JApiClass jApiClass : jApiClasses) {
+                if(jApiClass.getChangeStatus() != JApiChangeStatus.UNCHANGED) {
+                    throw new MojoFailureException(String.format("Breaking the build because there is at least one modified class: %s", jApiClass.getFullyQualifiedName()));
+                }
             }
         }
-        if(oldVersionFile != null && newVersionFile != null) {
-            JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
-            JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
-            List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldVersionFile, newVersionFile);
-            StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator();
-            String output = stdoutOutputGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, new Options());
-            getLog().info(output);
-            if(projectBuildDir != null && projectBuildDir.exists()) {
+    }
+
+    private Options createOptions() throws MojoFailureException {
+        Options options = new Options();
+        if (parameter != null) {
+            String accessModifierArg = parameter.getAccessModifier();
+            if (accessModifierArg != null) {
                 try {
-                    File japiBuildDir = new File(projectBuildDir.getCanonicalPath() + File.separator + "japicmp");
-                    japiBuildDir.mkdirs();
-                    File diffOutputfile = new File(japiBuildDir.getCanonicalPath() + File.separator + "japicmp.diff");
-                    FileWriter fileWriter = null;
-                    try {
-                        fileWriter = new FileWriter(diffOutputfile);
-                        fileWriter.write(output);
-                    } catch(Exception e) {
-                        throw new MojoFailureException(String.format("Failed to write diff file: %s", e.getMessage()), e);
-                    } finally {
-                        if(fileWriter != null) {
-                            fileWriter.close();
-                        }
-                    }
-                } catch (IOException e) {
-                    throw new MojoFailureException(String.format("Failed to construct output directory: %s", e.getMessage()), e);
+                    AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase());
+                    options.setAccessModifier(accessModifier);
+                } catch (IllegalArgumentException e) {
+                    throw new MojoFailureException(String.format("Invalid value for option accessModifier: %s. Possible values are: %s.", accessModifierArg, AccessModifier.listOfAccessModifier()));
+                }
+            }
+            String onlyModified = parameter.getOnlyModified();
+            if (onlyModified != null) {
+                Boolean booleanOnlyModified = Boolean.valueOf(onlyModified);
+                options.setOutputOnlyModifications(booleanOnlyModified);
+            }
+            String packagesToExclude = parameter.getPackagesToExclude();
+            if (packagesToExclude != null) {
+                try {
+                    options.addPackagesExcludeFromArgument(packagesToExclude);
+                } catch (Exception e) {
+                    throw new MojoFailureException(e.getMessage());
+                }
+            }
+            String packagesToInclude = parameter.getPackagesToInclude();
+            if (packagesToInclude != null) {
+                try {
+                    options.addPackageIncludeFromArgument(packagesToInclude);
+                } catch (Exception e) {
+                    throw new MojoFailureException(e.getMessage());
                 }
             }
-        } else {
-            throw new MojoFailureException(String.format("At least one required parameter is missing."));
         }
+        return options;
+    }
+
+    private boolean breakBuildOnModificationsParameter() {
+        boolean retVal = false;
+        if (parameter != null) {
+            retVal = Boolean.valueOf(parameter.getBreakBuildOnModifications());
+        }
+        return retVal;
+    }
+
+    private void createFileAndWriteTo(String diffOutput, File jApiCmpBuildDir) throws IOException, MojoFailureException {
+        File outputfile = new File(jApiCmpBuildDir.getCanonicalPath() + File.separator + "japicmp.diff");
+        writeToFile(diffOutput, outputfile);
+    }
+
+    private File createJapiCmpBaseDir() throws IOException {
+        File jApiCmpBuildDir = new File(projectBuildDir.getCanonicalPath() + File.separator + "japicmp");
+        jApiCmpBuildDir.mkdirs();
+        return jApiCmpBuildDir;
+    }
+
+    private String generateDiffOutput(File newVersionFile, File oldVersionFile, List<JApiClass> jApiClasses, Options options) {
+        StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator();
+        String diffOutput = stdoutOutputGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, options);
+        getLog().info(diffOutput);
+        return diffOutput;
+    }
+
+    private void generateXmlOutput(File newVersionFile, File oldVersionFile, List<JApiClass> jApiClasses, File jApiCmpBuildDir, Options options) throws IOException {
+        XmlOutputGenerator xmlGenerator = new XmlOutputGenerator();
+        options.setXmlOutputFile(Optional.of(jApiCmpBuildDir.getCanonicalPath() + File.separator + "japicmp.xml"));
+        xmlGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, options);
     }
 
-    private File resolveArtifact(String descriptor) throws MojoFailureException {
+    private List<JApiClass> compareArchives(File newVersionFile, File oldVersionFile) {
+        JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
+        return jarArchiveComparator.compare(oldVersionFile, newVersionFile);
+    }
+
+    private File retrieveFileFromConfiguration(Version version, String parameterName) throws MojoFailureException {
+        if (version != null) {
+            Dependency dependency = version.getDependency();
+            if (dependency != null) {
+                String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
+                getLog().debug(parameterName + ": " + descriptor);
+                File file = resolveArtifact(dependency);
+                if (file == null) {
+                    throw new MojoFailureException(String.format("Could not resolve dependency with descriptor '%s'.", descriptor));
+                }
+                return file;
+            } else if (version.getFile() != null) {
+                ConfigurationFile configurationFile = version.getFile();
+                String path = configurationFile.getPath();
+                if (path == null) {
+                    throw new MojoFailureException(String.format("The path element in the configuration of the plugin is missing for %s.", parameterName));
+                }
+                File file = new File(path);
+                if (!file.exists()) {
+                    throw new MojoFailureException(String.format("The path '%s' does not point to an existing file.", path));
+                }
+                if (!file.isFile() || !file.canRead()) {
+                    throw new MojoFailureException(String.format("The file given by path '%s' is either not a file or is not readable.", path));
+                }
+                return file;
+            } else {
+                throw new MojoFailureException(String.format("Missing configuration parameter 'dependency'."));
+            }
+        }
+        throw new MojoFailureException(String.format("Missing configuration parameter: %s", parameterName));
+    }
+
+    private void writeToFile(String output, File outputfile) throws MojoFailureException, IOException {
+        FileWriter fileWriter = null;
         try {
-            ArtifactRequest request = new ArtifactRequest();
-            request.setArtifact(new DefaultArtifact(descriptor));
-            request.setRepositories(remoteRepos);
-            ArtifactResult result = repoSystem.resolveArtifact(newSession(repoSystem), request);
-            File file = result.getArtifact().getFile();
-            getLog().info("Resolved artifact " + result + " to " + file + " from " + result.getRepository());
-            return file;
+            fileWriter = new FileWriter(outputfile);
+            fileWriter.write(output);
         } catch (Exception e) {
-            throw new MojoFailureException(String.format("Failed to load artifact from repository: %s", e.getMessage()), e);
+            throw new MojoFailureException(String.format("Failed to write diff file: %s", e.getMessage()), e);
+        } finally {
+            if (fileWriter != null) {
+                fileWriter.close();
+            }
         }
     }
 
-    private static RepositorySystemSession newSession(RepositorySystem system) {
-        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
-        LocalRepository localRepo = new LocalRepository(new File(System.getProperty("user.home") + "/.m2/repository"));
-        session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
-        return session;
+    private File resolveArtifact(Dependency dependency) throws MojoFailureException {
+        notNull(artifactRepositories, "Maven parameter artifactRepositories should be provided by maven container.");
+        notNull(artifactResolver, "Maven parameter artifactResolver should be provided by maven container.");
+        notNull(localRepository, "Maven parameter localRepository should be provided by maven container.");
+        notNull(artifactRepositories, "Maven parameter artifactRepositories should be provided by maven container.");
+        Artifact artifact = artifactFactory.createBuildArtifact(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "jar");
+        ArtifactResolutionRequest request = new ArtifactResolutionRequest();
+        request.setArtifact(artifact);
+        request.setLocalRepository(localRepository);
+        request.setRemoteRepositories(artifactRepositories);
+        artifactResolver.resolve(request);
+        return artifact.getFile();
+    }
+
+    private static <T> T notNull(T value, String msg) throws MojoFailureException {
+        if (value == null) {
+            throw new MojoFailureException(msg);
+        }
+        return value;
     }
 }
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java
new file mode 100644
index 0000000..a4393fe
--- /dev/null
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Parameter.java
@@ -0,0 +1,49 @@
+package japicmp.maven;
+
+public class Parameter {
+    private String accessModifier;
+    private String packagesToInclude;
+    private String packagesToExclude;
+    private String onlyModified;
+    private String breakBuildOnModifications;
+
+    public String getAccessModifier() {
+        return accessModifier;
+    }
+
+    public void setAccessModifier(String accessModifier) {
+        this.accessModifier = accessModifier;
+    }
+
+    public String getPackagesToInclude() {
+        return packagesToInclude;
+    }
+
+    public void setPackagesToInclude(String packagesToInclude) {
+        this.packagesToInclude = packagesToInclude;
+    }
+
+    public String getPackagesToExclude() {
+        return packagesToExclude;
+    }
+
+    public void setPackagesToExclude(String packagesToExclude) {
+        this.packagesToExclude = packagesToExclude;
+    }
+
+    public String getOnlyModified() {
+        return onlyModified;
+    }
+
+    public void setOnlyModified(String onlyModified) {
+        this.onlyModified = onlyModified;
+    }
+
+    public String getBreakBuildOnModifications() {
+        return breakBuildOnModifications;
+    }
+
+    public void setBreakBuildOnModifications(String breakBuildOnModifications) {
+        this.breakBuildOnModifications = breakBuildOnModifications;
+    }
+}
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java
index 3be2982..14d5342 100644
--- a/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java
@@ -2,6 +2,7 @@ package japicmp.maven;
 
 public class Version {
     private Dependency dependency;
+    private ConfigurationFile file;
 
     public Dependency getDependency() {
         return dependency;
@@ -10,4 +11,12 @@ public class Version {
     public void setDependency(Dependency dependency) {
         this.dependency = dependency;
     }
+
+    public ConfigurationFile getFile() {
+        return file;
+    }
+
+    public void setFile(ConfigurationFile file) {
+        this.file = file;
+    }
 }
diff --git a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
index 1cdc6e7..553ed80 100644
--- a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
+++ b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
@@ -40,6 +40,13 @@
                             <version>${project.version}</version>
                         </dependency>
                     </newVersion>
+                    <parameter>
+                        <onlyModified>true</onlyModified>
+                        <packagesToInclude>*</packagesToInclude>
+                        <packagesToExclude>*</packagesToExclude>
+                        <accessModifier>public</accessModifier>
+                        <breakBuildOnModifications>false</breakBuildOnModifications>
+                    </parameter>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml
index c1c68f4..db78d5b 100644
--- a/japicmp-testbase/japicmp-test-v2/pom.xml
+++ b/japicmp-testbase/japicmp-test-v2/pom.xml
@@ -8,4 +8,36 @@
     </parent>
 
     <artifactId>japicmp-test-v2</artifactId>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>japicmp</groupId>
+                <artifactId>japicmp-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <oldVersion>
+                        <dependency>
+                            <groupId>japicmp</groupId>
+                            <artifactId>japicmp-test-v1</artifactId>
+                            <version>${project.version}</version>
+                        </dependency>
+                    </oldVersion>
+                    <newVersion>
+                        <file>
+                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
+                        </file>
+                    </newVersion>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>cmp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index 0d78636..bd8c70e 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -30,10 +30,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <configuration>
                     <archive>
diff --git a/japicmp/src/main/java/japicmp/cli/CliParser.java b/japicmp/src/main/java/japicmp/cli/CliParser.java
index e5f87e3..ba8c4c2 100644
--- a/japicmp/src/main/java/japicmp/cli/CliParser.java
+++ b/japicmp/src/main/java/japicmp/cli/CliParser.java
@@ -2,7 +2,6 @@ package japicmp.cli;
 
 import com.google.common.base.Optional;
 import japicmp.model.AccessModifier;
-import japicmp.config.PackageFilter;
 import japicmp.config.Options;
 import japicmp.exception.JApiCmpException;
 import japicmp.util.StringArrayEnumeration;
@@ -35,32 +34,16 @@ public class CliParser {
                     AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase());
                     options.setAccessModifier(accessModifier);
                 } catch (IllegalArgumentException e) {
-                    throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, listOfAccessModifiers()));
+                    throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, AccessModifier.listOfAccessModifier()));
                 }
             }
             if ("-i".equals(arg)) {
                 String packagesIncludeArg = getOptionWithArgument("-i", sae);
-                String[] parts = packagesIncludeArg.split(",");
-                for (String part : parts) {
-                    part = part.trim();
-                    try {
-                        options.getPackagesInclude().add(new PackageFilter(part));
-                    } catch (Exception e) {
-                        throw new IllegalArgumentException(String.format("Wrong syntax for include option '%s': %s", part, e.getMessage()));
-                    }
-                }
+                options.addPackageIncludeFromArgument(packagesIncludeArg);
             }
             if ("-e".equals(arg)) {
                 String packagesExcludeArg = getOptionWithArgument("-e", sae);
-                String[] parts = packagesExcludeArg.split(",");
-                for (String part : parts) {
-                    part = part.trim();
-                    try {
-                        options.getPackagesInclude().add(new PackageFilter(part));
-                    } catch (Exception e) {
-                        throw new IllegalArgumentException(String.format("Wrong syntax for exclude option '%s': %s", part, e.getMessage()));
-                    }
-                }
+                options.addPackagesExcludeFromArgument(packagesExcludeArg);
             }
             if ("-h".equals(arg)) {
                 printHelp();
@@ -103,17 +86,4 @@ public class CliParser {
             throw new IllegalArgumentException(String.format("Missing argument for option %s.", option));
         }
     }
-
-    private String listOfAccessModifiers() {
-        StringBuilder sb = new StringBuilder();
-        int i = 0;
-        for (AccessModifier am : AccessModifier.values()) {
-            if (i > 0) {
-                sb.append(",");
-            }
-            sb.append(am.toString());
-            i++;
-        }
-        return sb.toString();
-    }
 }
diff --git a/japicmp/src/main/java/japicmp/config/Options.java b/japicmp/src/main/java/japicmp/config/Options.java
index 8cfc975..3efdf52 100644
--- a/japicmp/src/main/java/japicmp/config/Options.java
+++ b/japicmp/src/main/java/japicmp/config/Options.java
@@ -62,4 +62,28 @@ public class Options {
     public List<PackageFilter> getPackagesExclude() {
         return packagesExclude;
     }
+
+    public void addPackagesExcludeFromArgument(String packagesExcludeArg) {
+        String[] parts = packagesExcludeArg.split(",");
+        for (String part : parts) {
+            part = part.trim();
+            try {
+                getPackagesExclude().add(new PackageFilter(part));
+            } catch (Exception e) {
+                throw new IllegalArgumentException(String.format("Wrong syntax for package include option '%s': %s", part, e.getMessage()));
+            }
+        }
+    }
+
+    public void addPackageIncludeFromArgument(String packagesIncludeArg) {
+        String[] parts = packagesIncludeArg.split(",");
+        for (String part : parts) {
+            part = part.trim();
+            try {
+                getPackagesInclude().add(new PackageFilter(part));
+            } catch (Exception e) {
+                throw new IllegalArgumentException(String.format("Wrong syntax for package exclude option '%s': %s", part, e.getMessage()));
+            }
+        }
+    }
 }
diff --git a/japicmp/src/main/java/japicmp/model/AccessModifier.java b/japicmp/src/main/java/japicmp/model/AccessModifier.java
index d9422f2..8454fa2 100644
--- a/japicmp/src/main/java/japicmp/model/AccessModifier.java
+++ b/japicmp/src/main/java/japicmp/model/AccessModifier.java
@@ -12,4 +12,17 @@ public enum AccessModifier {
     public int getLevel() {
         return level;
     }
+
+    public static String listOfAccessModifier() {
+        StringBuilder sb = new StringBuilder();
+        int i = 0;
+        for (AccessModifier am : AccessModifier.values()) {
+            if (i > 0) {
+                sb.append(",");
+            }
+            sb.append(am.toString());
+            i++;
+        }
+        return sb.toString();
+    }
 }
diff --git a/pom.xml b/pom.xml
index 5c6f160..d4f6967 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,8 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <github.account>siom79</github.account>
         <cloudbees.account>siom79</cloudbees.account>
+        <java.source>1.7</java.source>
+        <java.target>1.7</java.target>
     </properties>
 
     <modules>
@@ -36,8 +38,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.1</version>
                 <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
+                    <source>${java.source}</source>
+                    <target>${java.target}</target>
                 </configuration>
             </plugin>
             <plugin>
@@ -55,9 +57,6 @@
                         <goals>
                             <goal>jar</goal>
                         </goals>
-                        <configuration>
-                            <additionalparam>-Xdoclint:none</additionalparam>
-                        </configuration>
                     </execution>
                 </executions>
             </plugin>


[commons-vfs] 08/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 3111346c228b85e9665bb8aa95483d5672baabdf
Author: siom79 <ma...@googlemail.com>
AuthorDate: Thu May 29 12:15:34 2014 +0200

    Updated README.md
---
 README.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/README.md b/README.md
index e7b4d6f..04469f1 100644
--- a/README.md
+++ b/README.md
@@ -100,8 +100,6 @@ The following releases are available:
         * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
 * [Version 0.0.1](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.1)
 
-The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
-
 ##Development##
 
 * [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)


[commons-vfs] 01/20: [maven-release-plugin] prepare for next development iteration

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 5d88a1536d9d675ebb472b3506ac57ead4fc83a4
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Oct 6 11:42:57 2013 +0200

    [maven-release-plugin] prepare for next development iteration
---
 japicmp-testbase/japicmp-test-v1/pom.xml | 2 +-
 japicmp-testbase/japicmp-test-v2/pom.xml | 2 +-
 japicmp-testbase/japicmp-test/pom.xml    | 2 +-
 japicmp-testbase/pom.xml                 | 2 +-
 japicmp/pom.xml                          | 2 +-
 pom.xml                                  | 4 ++--
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/japicmp-testbase/japicmp-test-v1/pom.xml b/japicmp-testbase/japicmp-test-v1/pom.xml
index c1c4437..e0cab16 100644
--- a/japicmp-testbase/japicmp-test-v1/pom.xml
+++ b/japicmp-testbase/japicmp-test-v1/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>japicmp</groupId>
         <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.2</version>
+        <version>0.0.3-SNAPSHOT</version>
     </parent>
 
     <artifactId>japicmp-test-v1</artifactId>
diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml
index d28f988..6e22b3c 100644
--- a/japicmp-testbase/japicmp-test-v2/pom.xml
+++ b/japicmp-testbase/japicmp-test-v2/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>japicmp</groupId>
         <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.2</version>
+        <version>0.0.3-SNAPSHOT</version>
     </parent>
 
     <artifactId>japicmp-test-v2</artifactId>
diff --git a/japicmp-testbase/japicmp-test/pom.xml b/japicmp-testbase/japicmp-test/pom.xml
index e144e25..dcde855 100644
--- a/japicmp-testbase/japicmp-test/pom.xml
+++ b/japicmp-testbase/japicmp-test/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>japicmp</groupId>
         <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.2</version>
+        <version>0.0.3-SNAPSHOT</version>
     </parent>
 
     <artifactId>japicmp-test</artifactId>
diff --git a/japicmp-testbase/pom.xml b/japicmp-testbase/pom.xml
index d96866b..f983041 100644
--- a/japicmp-testbase/pom.xml
+++ b/japicmp-testbase/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>japicmp</groupId>
         <artifactId>japicmp-base</artifactId>
-        <version>0.0.2</version>
+        <version>0.0.3-SNAPSHOT</version>
     </parent>
 
     <artifactId>japicmp-testbase</artifactId>
diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index 13143ae..35c8867 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>japicmp</groupId>
         <artifactId>japicmp-base</artifactId>
-        <version>0.0.2</version>
+        <version>0.0.3-SNAPSHOT</version>
     </parent>
 
     <artifactId>japicmp</artifactId>
diff --git a/pom.xml b/pom.xml
index 96d3cd2..d7b722c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
 
     <groupId>japicmp</groupId>
     <artifactId>japicmp-base</artifactId>
-    <version>0.0.2</version>
+    <version>0.0.3-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <properties>
@@ -122,7 +122,7 @@
         <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection>
         <developerConnection>scm:git:git@github.com:${github.account}/${project.groupId}.git</developerConnection>
         <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url>
-        <tag>japicmp-base-0.0.2</tag>
+        <tag>HEAD</tag>
     </scm>
 
     <distributionManagement>


[commons-vfs] 11/20: reactivated cobertura plugin

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 707c1fa83204d46eb36a661a1457db1f95402d76
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:24:50 2014 +0200

    reactivated cobertura plugin
---
 japicmp/pom.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index bd8c70e..0d78636 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -30,6 +30,10 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <configuration>
                     <archive>


[commons-vfs] 09/20: started maven plugin

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit c5ec4fed0a43eae1221a0c6ca7072c02fe824c91
Author: siom79 <ma...@googlemail.com>
AuthorDate: Wed Jun 18 22:11:21 2014 +0200

    started maven plugin
---
 japicmp-maven-plugin/pom.xml                       |  88 ++++++++++++++
 .../src/main/java/japicmp/maven/Dependency.java    |  31 +++++
 .../src/main/java/japicmp/maven/JApiCmpMojo.java   | 129 +++++++++++++++++++++
 .../src/main/java/japicmp/maven/Version.java       |  13 +++
 japicmp-testbase/japicmp-test-maven-plugin/pom.xml |  55 +++++++++
 japicmp-testbase/pom.xml                           |   3 +-
 pom.xml                                            |   7 +-
 7 files changed, 324 insertions(+), 2 deletions(-)

diff --git a/japicmp-maven-plugin/pom.xml b/japicmp-maven-plugin/pom.xml
new file mode 100644
index 0000000..8c9c796
--- /dev/null
+++ b/japicmp-maven-plugin/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>japicmp-base</artifactId>
+        <groupId>japicmp</groupId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>japicmp-maven-plugin</artifactId>
+    <packaging>maven-plugin</packaging>
+
+    <properties>
+        <maven.version>3.1.0</maven.version>
+        <aether.version>0.9.0.M2</aether.version>
+    </properties>
+
+    <prerequisites>
+        <maven>3.1.0</maven>
+    </prerequisites>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <version>${maven.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-model</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-artifact</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.eclipse.sisu</groupId>
+                    <artifactId>org.eclipse.sisu.plexus</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.aether</groupId>
+            <artifactId>aether-api</artifactId>
+            <version>${aether.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.aether</groupId>
+            <artifactId>aether-util</artifactId>
+            <version>${aether.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <version>3.2</version>
+                <configuration>
+                    <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>mojo-descriptor</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>descriptor</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Dependency.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Dependency.java
new file mode 100644
index 0000000..bd676ea
--- /dev/null
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Dependency.java
@@ -0,0 +1,31 @@
+package japicmp.maven;
+
+public class Dependency {
+    private String groupId;
+    private String artifactId;
+    private String version;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    public void setArtifactId(String artifactId) {
+        this.artifactId = artifactId;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
new file mode 100644
index 0000000..11b0582
--- /dev/null
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
@@ -0,0 +1,129 @@
+package japicmp.maven;
+
+import com.google.common.io.Files;
+import japicmp.cmp.JarArchiveComparator;
+import japicmp.cmp.JarArchiveComparatorOptions;
+import japicmp.config.Options;
+import japicmp.model.JApiClass;
+import japicmp.output.stdout.StdoutOutputGenerator;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResult;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.List;
+
+/**
+ * @goal cmp
+ */
+public class JApiCmpMojo extends AbstractMojo {
+    /**
+     * @parameter
+     */
+    private Version oldVersion;
+
+    /**
+     * @parameter
+     */
+    private Version newVersion;
+
+    /**
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private File projectBuildDir;
+
+    /**
+     * @component
+     */
+    private RepositorySystem repoSystem;
+
+    /**
+     * @component default-value="${project.remoteProjectRepositories}"
+     */
+    private List<RemoteRepository> remoteRepos;
+
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        File oldVersionFile = null;
+        File newVersionFile = null;
+        if (oldVersion != null) {
+            Dependency dependency = oldVersion.getDependency();
+            if (dependency != null) {
+                String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
+                getLog().debug("oldVersion: " + descriptor);
+                oldVersionFile = resolveArtifact(descriptor);
+            }
+        }
+        if (newVersion != null) {
+            Dependency dependency = newVersion.getDependency();
+            if (dependency != null) {
+                String descriptor = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
+                getLog().debug("newVersion: " + descriptor);
+                newVersionFile = resolveArtifact(descriptor);
+            }
+        }
+        if(oldVersionFile != null && newVersionFile != null) {
+            JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
+            JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
+            List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldVersionFile, newVersionFile);
+            StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator();
+            String output = stdoutOutputGenerator.generate(oldVersionFile, newVersionFile, jApiClasses, new Options());
+            getLog().info(output);
+            if(projectBuildDir != null && projectBuildDir.exists()) {
+                try {
+                    File japiBuildDir = new File(projectBuildDir.getCanonicalPath() + File.separator + "japicmp");
+                    japiBuildDir.mkdirs();
+                    File diffOutputfile = new File(japiBuildDir.getCanonicalPath() + File.separator + "japicmp.diff");
+                    FileWriter fileWriter = null;
+                    try {
+                        fileWriter = new FileWriter(diffOutputfile);
+                        fileWriter.write(output);
+                    } catch(Exception e) {
+                        throw new MojoFailureException(String.format("Failed to write diff file: %s", e.getMessage()), e);
+                    } finally {
+                        if(fileWriter != null) {
+                            fileWriter.close();
+                        }
+                    }
+                } catch (IOException e) {
+                    throw new MojoFailureException(String.format("Failed to construct output directory: %s", e.getMessage()), e);
+                }
+            }
+        } else {
+            throw new MojoFailureException(String.format("At least one required parameter is missing."));
+        }
+    }
+
+    private File resolveArtifact(String descriptor) throws MojoFailureException {
+        try {
+            ArtifactRequest request = new ArtifactRequest();
+            request.setArtifact(new DefaultArtifact(descriptor));
+            request.setRepositories(remoteRepos);
+            ArtifactResult result = repoSystem.resolveArtifact(newSession(repoSystem), request);
+            File file = result.getArtifact().getFile();
+            getLog().info("Resolved artifact " + result + " to " + file + " from " + result.getRepository());
+            return file;
+        } catch (Exception e) {
+            throw new MojoFailureException(String.format("Failed to load artifact from repository: %s", e.getMessage()), e);
+        }
+    }
+
+    private static RepositorySystemSession newSession(RepositorySystem system) {
+        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
+        LocalRepository localRepo = new LocalRepository(new File(System.getProperty("user.home") + "/.m2/repository"));
+        session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
+        return session;
+    }
+}
diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java
new file mode 100644
index 0000000..3be2982
--- /dev/null
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/Version.java
@@ -0,0 +1,13 @@
+package japicmp.maven;
+
+public class Version {
+    private Dependency dependency;
+
+    public Dependency getDependency() {
+        return dependency;
+    }
+
+    public void setDependency(Dependency dependency) {
+        this.dependency = dependency;
+    }
+}
diff --git a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
new file mode 100644
index 0000000..1cdc6e7
--- /dev/null
+++ b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>japicmp-testbase</artifactId>
+        <groupId>japicmp</groupId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>japicmp-test-maven-plugin</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp-maven-plugin</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>japicmp</groupId>
+                <artifactId>japicmp-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <oldVersion>
+                        <dependency>
+                            <groupId>japicmp</groupId>
+                            <artifactId>japicmp-test-v1</artifactId>
+                            <version>${project.version}</version>
+                        </dependency>
+                    </oldVersion>
+                    <newVersion>
+                        <dependency>
+                            <groupId>japicmp</groupId>
+                            <artifactId>japicmp-test-v2</artifactId>
+                            <version>${project.version}</version>
+                        </dependency>
+                    </newVersion>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>cmp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/japicmp-testbase/pom.xml b/japicmp-testbase/pom.xml
index 3ade9b0..e3c9c93 100644
--- a/japicmp-testbase/pom.xml
+++ b/japicmp-testbase/pom.xml
@@ -14,5 +14,6 @@
 		<module>japicmp-test-v1</module>
 		<module>japicmp-test-v2</module>
 		<module>japicmp-test</module>
-	</modules>
+        <module>japicmp-test-maven-plugin</module>
+    </modules>
 </project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9406c2b..5c6f160 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>japicmp</groupId>
@@ -16,6 +17,7 @@
     <modules>
         <module>japicmp</module>
         <module>japicmp-testbase</module>
+        <module>japicmp-maven-plugin</module>
     </modules>
 
     <dependencies>
@@ -53,6 +55,9 @@
                         <goals>
                             <goal>jar</goal>
                         </goals>
+                        <configuration>
+                            <additionalparam>-Xdoclint:none</additionalparam>
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>


[commons-vfs] 07/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 5ec9e0c8fc1b1cd6849843b5f0238924031b6c61
Author: siom79 <ma...@googlemail.com>
AuthorDate: Thu May 22 23:32:58 2014 +0200

    Updated README.md
---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index f8377bf..e7b4d6f 100644
--- a/README.md
+++ b/README.md
@@ -92,13 +92,13 @@ The differences between the two Java APIs are also printed on the command line f
 
 The following releases are available:
 
-* [Version 0.0.2](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.2/japicmp-0.0.2.jar)
+* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
     * Changes:
         * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
         * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
         * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
         * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
-* [Version 0.0.1](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.1/japicmp-0.0.1.jar)
+* [Version 0.0.1](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.1)
 
 The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
 
@@ -106,4 +106,4 @@ The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://re
 
 * [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
 * [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
-* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
\ No newline at end of file
+* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)


[commons-vfs] 03/20: updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 83770b8cdde26bacca0158e77970681c7f827f62
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Oct 6 11:53:15 2013 +0200

    updated README.md
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 56b9129..f8377bf 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ japicmp
 
 japicmp is a tool to compare two versions of a jar archive:
 
-    java -jar japicmp-0.0.1.jar -n new-version.jar -o old-version.jar
+    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
 
 It can also be used as a library:
 


[commons-vfs] 05/20: Update download links for releases

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit c3f510cb27e582e9cf5aaa64fc5579b168d58a36
Author: Martin Mois <ma...@googlemail.com>
AuthorDate: Thu May 22 23:24:50 2014 +0200

    Update download links for releases
---
 README.md | 218 +++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 109 insertions(+), 109 deletions(-)

diff --git a/README.md b/README.md
index f8377bf..b4f7b89 100644
--- a/README.md
+++ b/README.md
@@ -1,109 +1,109 @@
-japicmp
-=======
-
-japicmp is a tool to compare two versions of a jar archive:
-
-    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
-
-It can also be used as a library:
-
-	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
-    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
-
-##Motivation##
-
-Every time you make a new release of a library or a product, you have to tell your clients or customers what
-has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
-This tool/library helps you to determine the differences between the java class files that are contained in the two
-jar archives.
-In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
-the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
-investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
-can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
-library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
-
-##Features##
-
-* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
-* Differences are printed on the command line in a simple diff format.
-* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
-* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
-  compared can be set to package, protected or private.
-* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
-
-##Usage##
-
-The tool has a set of CLI parameters that are described in the following:
-
-    -h                        Prints this help.
-    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
-    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
-    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
-    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
-    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
-    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
-    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
-	
-###Example###
-
-In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
-
-    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
-            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
-        </class>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
-        </class>
-        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
-                <parameter type="java.lang.String"/>
-            </method>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
-        </class>
-		...
-
-The differences between the two Java APIs are also printed on the command line for a quick overview:
-
-    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
-        --- REMOVED METHOD value()
-    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
-    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
-    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
-    === UNCHANGED CLASS org.apache.http.auth.AUTH
-    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
-    +++ NEW CLASS org.apache.http.auth.AuthOption
-        +++ NEW METHOD getAuthScheme()
-        +++ NEW METHOD getCredentials()
-        +++ NEW METHOD toString()
-    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
-        +++ NEW METHOD valueOf(java.lang.String)
-        +++ NEW METHOD values()
-
-##Downloads##
-
-The following releases are available:
-
-* [Version 0.0.2](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.2/japicmp-0.0.2.jar)
-    * Changes:
-        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
-        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
-        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
-        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
-* [Version 0.0.1](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.1/japicmp-0.0.1.jar)
-
-The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
-
-##Development##
-
-* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
-* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
-* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
\ No newline at end of file
+japicmp
+=======
+
+japicmp is a tool to compare two versions of a jar archive:
+
+    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
+
+It can also be used as a library:
+
+	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
+    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
+
+##Motivation##
+
+Every time you make a new release of a library or a product, you have to tell your clients or customers what
+has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
+This tool/library helps you to determine the differences between the java class files that are contained in the two
+jar archives.
+In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
+the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
+investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
+can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
+library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
+
+##Features##
+
+* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
+* Differences are printed on the command line in a simple diff format.
+* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
+* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
+  compared can be set to package, protected or private.
+* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
+
+##Usage##
+
+The tool has a set of CLI parameters that are described in the following:
+
+    -h                        Prints this help.
+    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
+    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
+    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
+    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
+    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
+    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
+    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
+	
+###Example###
+
+In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
+
+    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
+            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
+        </class>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
+        </class>
+        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
+                <parameter type="java.lang.String"/>
+            </method>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
+        </class>
+		...
+
+The differences between the two Java APIs are also printed on the command line for a quick overview:
+
+    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
+        --- REMOVED METHOD value()
+    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
+    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
+    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
+    === UNCHANGED CLASS org.apache.http.auth.AUTH
+    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
+    +++ NEW CLASS org.apache.http.auth.AuthOption
+        +++ NEW METHOD getAuthScheme()
+        +++ NEW METHOD getCredentials()
+        +++ NEW METHOD toString()
+    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
+        +++ NEW METHOD valueOf(java.lang.String)
+        +++ NEW METHOD values()
+
+##Downloads##
+
+The following releases are available:
+
+* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
+    * Changes:
+        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
+        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
+        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
+        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
+* [Version 0.0.1](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.1)
+
+The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
+
+##Development##
+
+* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
+* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
+* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)


[commons-vfs] 12/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 409f2df38b99d074933b1a0d38cd06b7a1885eb9
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:44:11 2014 +0200

    Updated README.md
---
 README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 60 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index b4f7b89..8d5782a 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,12 @@ japicmp
 
 japicmp is a tool to compare two versions of a jar archive:
 
-    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
+    java -jar japicmp-0.0.3.jar -n new-version.jar -o old-version.jar
 
 It can also be used as a library:
 
-	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
+    JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
+	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
     List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
 
 ##Motivation##
@@ -30,8 +31,9 @@ library to inspect the class files. This way you only have to provide the two ja
 * Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
   compared can be set to package, protected or private.
 * Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
+* A maven plugin is available that allows you to compare the current artifact version with some older version from the repository.
 
-##Usage##
+##Usage CLI tool##
 
 The tool has a set of CLI parameters that are described in the following:
 
@@ -43,6 +45,61 @@ The tool has a set of CLI parameters that are described in the following:
     -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
     -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
     -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
+    
+##Usage maven plugin##
+
+The maven plugin can be included in the pom.xml file of your artificat in the following way:
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>japicmp</groupId>
+                <artifactId>japicmp-maven-plugin</artifactId>
+                <version>0.0.3</version>
+                <configuration>
+                    <oldVersion>
+                        <dependency>
+                            <groupId>japicmp</groupId>
+                            <artifactId>japicmp-test-v1</artifactId>
+                            <version>${project.version}</version>
+                        </dependency>
+                    </oldVersion>
+                    <newVersion>
+                        <file>
+                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
+                        </file>
+                    </newVersion>
+                    <parameter>
+                        <onlyModified>true</onlyModified>
+                        <packagesToInclude>*</packagesToInclude>
+                        <packagesToExclude>*</packagesToExclude>
+                        <accessModifier>public</accessModifier>
+                        <breakBuildOnModifications>false</breakBuildOnModifications>
+                    </parameter>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>cmp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    
+The elements <oldVersion> and <newVersion> elements let you specify which version you want to compare. Both elements
+ support either a <dependency> or a <file> element. Through the <parameter> element you can provide the following options:
+  
+* onlyModified: Outputs only modified classes/methods. If not set to true, all classes and methods are printed.
+* packagesToInclude: Comma separated list of package names to include, * can be used as wildcard.
+* packagesToExclude: Comma separated list of package names to exclude, * can be used as wildcard.
+* accessModifier: Sets the access modifier level (public, package, protected, private).
+* breakBuildOnModifications: When set to true, the build breaks in case a modification has been detected.
+
+The maven plugin produces the two files japicmp.diff and japicmp.xml within the directory ${project.build.directory}/japicmp
+of your artifact.
 	
 ###Example###
 


[commons-vfs] 13/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 09ba26ab7466611592b55b618ec2d1d79f79be90
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:46:08 2014 +0200

    Updated README.md
---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 8d5782a..f9bf82c 100644
--- a/README.md
+++ b/README.md
@@ -89,8 +89,8 @@ The maven plugin can be included in the pom.xml file of your artificat in the fo
         </plugins>
     </build>
     
-The elements <oldVersion> and <newVersion> elements let you specify which version you want to compare. Both elements
- support either a <dependency> or a <file> element. Through the <parameter> element you can provide the following options:
+The elements &lt;oldVersion&gt; and &lt;newVersion&gt; elements let you specify which version you want to compare. Both elements
+ support either a &lt;dependency&gt; or a &lt;file&gt; element. Through the &lt;parameter&gt; element you can provide the following options:
   
 * onlyModified: Outputs only modified classes/methods. If not set to true, all classes and methods are printed.
 * packagesToInclude: Comma separated list of package names to include, * can be used as wildcard.


[commons-vfs] 16/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 037b94e44cf74845ab1551f554621a60433832b0
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:53:24 2014 +0200

    Updated README.md
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index beb5b93..391cec5 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ The tool has a set of CLI parameters that are described in the following:
     
 ##Usage maven plugin##
 
-The maven plugin can be included in the pom.xml file of your artificat in the following way:
+The maven plugin can be included in the pom.xml file of your artifact in the following way:
 
     <build>
         <plugins>


[commons-vfs] 15/20: removed unnecessary files

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 568f877e7fdc59f0bab49dc67ded994e9fa1f82e
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:49:57 2014 +0200

    removed unnecessary files
---
 .gitignore            |  17 +--
 README.md~            | 109 --------------------
 structure101.java.hsp | 281 --------------------------------------------------
 3 files changed, 9 insertions(+), 398 deletions(-)

diff --git a/.gitignore b/.gitignore
index 069d52e..04492ff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,9 @@
-target
-.idea
-httpclient*.jar
-*.iml
-test.xml
-output.xml
-japicmp/guava-10.0.1.jar
-japicmp/guava-14.0.1.jar
+target
+.idea
+httpclient*.jar
+*.iml
+test.xml
+output.xml
+japicmp/guava-10.0.1.jar
+japicmp/guava-14.0.1.jar
+*~
diff --git a/README.md~ b/README.md~
deleted file mode 100644
index 422f899..0000000
--- a/README.md~
+++ /dev/null
@@ -1,109 +0,0 @@
-japicmp
-=======
-
-japicmp is a tool to compare two versions of a jar archive:
-
-    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
-
-It can also be used as a library:
-
-	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
-    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
-
-##Motivation##
-
-Every time you make a new release of a library or a product, you have to tell your clients or customers what
-has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
-This tool/library helps you to determine the differences between the java class files that are contained in the two
-jar archives.
-In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
-the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
-investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
-can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
-library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
-
-##Features##
-
-* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
-* Differences are printed on the command line in a simple diff format.
-* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
-* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
-  compared can be set to package, protected or private.
-* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
-
-##Usage##
-
-The tool has a set of CLI parameters that are described in the following:
-
-    -h                        Prints this help.
-    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
-    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
-    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
-    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
-    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
-    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
-    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
-	
-###Example###
-
-In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
-
-    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
-            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
-        </class>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
-        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
-        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
-        </class>
-        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
-                <parameter type="java.lang.String"/>
-            </method>
-            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
-        </class>
-		...
-
-The differences between the two Java APIs are also printed on the command line for a quick overview:
-
-    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
-        --- REMOVED METHOD value()
-    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
-    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
-    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
-    === UNCHANGED CLASS org.apache.http.auth.AUTH
-    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
-    +++ NEW CLASS org.apache.http.auth.AuthOption
-        +++ NEW METHOD getAuthScheme()
-        +++ NEW METHOD getCredentials()
-        +++ NEW METHOD toString()
-    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
-        +++ NEW METHOD valueOf(java.lang.String)
-        +++ NEW METHOD values()
-
-##Downloads##
-
-The following releases are available:
-
-* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
-    * Changes:
-        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
-        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
-        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
-        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
-* [Version 0.0.1](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.1/japicmp-0.0.1.jar)
-
-The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
-
-##Development##
-
-* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
-* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
-* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
diff --git a/structure101.java.hsp b/structure101.java.hsp
deleted file mode 100644
index a6615d5..0000000
--- a/structure101.java.hsp
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<local-project language="java" version="4.0.5155" xml-version="3" flavor="j2se">
-  <property name="hide-externals" value="true" />
-  <property name="show-needs-to-compile" value="false" />
-  <property name="detail-mode" value="true" />
-  <property name="include-injected-dependency" value="true" />
-  <property name="project-type" value="maven" />
-  <property name="action-set-mod" value="10" />
-  <property name="hide-deprecated" value="false" />
-  <property name="parse-archive-in-archive" value="false" />
-  <classpath relativeto="D:\Programmierung\japicmp\github\japicmp">
-    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test-v1\target\japicmp-test-v1-0.0.3-SNAPSHOT.jar" />
-    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test\target\japicmp-test-0.0.3-SNAPSHOT.jar" />
-    <classpathentry kind="lib" path="japicmp\target\japicmp-0.0.3-SNAPSHOT.jar" />
-    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test-v2\target\japicmp-test-v2-0.0.3-SNAPSHOT.jar" />
-  </classpath>
-  <pom-root-files>
-    <pom path="D:\Programmierung\japicmp\github\japicmp\pom.xml" />
-  </pom-root-files>
-  <transformations>
-    <transformation in="*" out="{jar}.*" />
-  </transformations>
-  <restructuring>
-    <set version="3" name="Model 1" hiview="Codemap" active="true" todo="false" list="0">
-      <hide>
-        <item-fqn fqn="japicmp-base.japicmp.japicmp.javassist" type="package">
-          <node name="japicmp-base" type="pom" />
-          <node name="japicmp" type="pom" />
-          <node name="japicmp" type="jar" />
-          <node name="javassist" type="package" />
-        </item-fqn>
-      </hide>
-      <hide>
-        <item-fqn fqn="japicmp-base.japicmp.japicmp.org" type="package">
-          <node name="japicmp-base" type="pom" />
-          <node name="japicmp" type="pom" />
-          <node name="japicmp" type="jar" />
-          <node name="org" type="package" />
-        </item-fqn>
-      </hide>
-      <hide>
-        <item-fqn fqn="japicmp-base.japicmp.japicmp.com" type="package">
-          <node name="japicmp-base" type="pom" />
-          <node name="japicmp" type="pom" />
-          <node name="japicmp" type="jar" />
-          <node name="com" type="package" />
-        </item-fqn>
-      </hide>
-    </set>
-  </restructuring>
-  <sourcepaths>
-    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp-testbase\japicmp-test-v1\src\main\java" />
-    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp\src\main\java" />
-    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp-testbase\japicmp-test-v2\src\main\java" />
-  </sourcepaths>
-  <grid-set sep="." version="4.0.5155">
-    <grid name="Diagram 2" enforce="true" locked="true" strict="false">
-      <row>
-        <cell name="japicmp" pattern="japicmp-base.japicmp.*" vexpanded="true" visibility="public" drill="false">
-          <grid>
-            <row>
-              <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.*" vexpanded="true" visibility="public" drill="false">
-                <grid>
-                  <row>
-                    <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.japicmp.*" vexpanded="true" visibility="public" drill="false">
-                      <grid>
-                        <row>
-                          <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.japicmp.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="JApiCmp" pattern="japicmp-base.japicmp.japicmp.japicmp.JApiCmp" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                        <row>
-                          <cell name="cli" pattern="japicmp-base.japicmp.japicmp.japicmp.cli.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="CliParser" pattern="japicmp-base.japicmp.japicmp.japicmp.cli.CliParser" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                          <cell name="output" pattern="japicmp-base.japicmp.japicmp.japicmp.output.*" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="stdout" pattern="japicmp-base.japicmp.japicmp.japicmp.output.stdout.?" vexpanded="true" visibility="public" drill="false">
-                                  <grid>
-                                    <row>
-                                      <cell name="StdoutOutputGenerator" pattern="japicmp-base.japicmp.japicmp.japicmp.output.stdout.StdoutOutputGenerator" vexpanded="false" visibility="public" drill="false" />
-                                    </row>
-                                  </grid>
-                                </cell>
-                                <cell name="xml" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.*" vexpanded="true" visibility="public" drill="false">
-                                  <grid>
-                                    <row>
-                                      <cell name="xml" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.?" vexpanded="true" visibility="public" drill="false">
-                                        <grid>
-                                          <row>
-                                            <cell name="XmlOutputGenerator" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.XmlOutputGenerator" vexpanded="false" visibility="public" drill="false" />
-                                          </row>
-                                        </grid>
-                                      </cell>
-                                    </row>
-                                    <row>
-                                      <cell name="model" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.model.?" vexpanded="true" visibility="public" drill="false">
-                                        <grid>
-                                          <row>
-                                            <cell name="JApiCmpXmlRoot" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.model.JApiCmpXmlRoot" vexpanded="false" visibility="public" drill="false" />
-                                          </row>
-                                        </grid>
-                                      </cell>
-                                    </row>
-                                  </grid>
-                                </cell>
-                              </row>
-                              <row>
-                                <cell name="output" pattern="japicmp-base.japicmp.japicmp.japicmp.output.?" vexpanded="true" visibility="public" drill="false">
-                                  <grid>
-                                    <row>
-                                      <cell name="OutputTransformer" pattern="japicmp-base.japicmp.japicmp.japicmp.output.OutputTransformer" vexpanded="false" visibility="public" drill="false" />
-                                    </row>
-                                  </grid>
-                                </cell>
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                        <row>
-                          <cell name="config" pattern="japicmp-base.japicmp.japicmp.japicmp.config.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="Options" pattern="japicmp-base.japicmp.japicmp.japicmp.config.Options" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                        <row>
-                          <cell name="cmp" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="JarArchiveComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.JarArchiveComparator" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                              <row>
-                                <cell name="ClassComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.ClassComparator" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                              <row>
-                                <cell name="ClassesComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.ClassesComparator" vexpanded="false" visibility="public" drill="false" />
-                                <cell name="JarArchiveComparatorOptions" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.JarArchiveComparatorOptions" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                              <row>
-                                <cell name="AccessModifier" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.AccessModifier" vexpanded="false" visibility="public" drill="false" />
-                                <cell name="PackageFilter" pattern="japicmp-base.japicmp.japicmp.japicmp.config.PackageFilter" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                        <row>
-                          <cell name="exception" pattern="japicmp-base.japicmp.japicmp.japicmp.exception.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="JApiCmpException" pattern="japicmp-base.japicmp.japicmp.japicmp.exception.JApiCmpException" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                          <cell name="model" pattern="japicmp-base.japicmp.japicmp.japicmp.model.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="JApiClass" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiClass" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                              <row>
-                                <cell name="JApiMethod" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiMethod" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                              <row>
-                                <cell name="JApiChangeStatus" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiChangeStatus" vexpanded="false" visibility="public" drill="false" />
-                                <cell name="JApiParameter" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiParameter" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                          <cell name="util" pattern="japicmp-base.japicmp.japicmp.japicmp.util.?" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="ModifierHelper" pattern="japicmp-base.japicmp.japicmp.japicmp.util.ModifierHelper" vexpanded="false" visibility="public" drill="false" />
-                                <cell name="SignatureParser" pattern="japicmp-base.japicmp.japicmp.japicmp.util.SignatureParser" vexpanded="false" visibility="public" drill="false" />
-                                <cell name="StringArrayEnumeration" pattern="japicmp-base.japicmp.japicmp.japicmp.util.StringArrayEnumeration" vexpanded="false" visibility="public" drill="false" />
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                      </grid>
-                    </cell>
-                  </row>
-                </grid>
-              </cell>
-            </row>
-          </grid>
-        </cell>
-        <cell name="japicmp-testbase" pattern="japicmp-base.japicmp-testbase.*" vexpanded="true" visibility="public" drill="false">
-          <grid>
-            <row>
-              <cell name="japicmp-test-v1" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.*" vexpanded="true" visibility="public" drill="false">
-                <grid>
-                  <row>
-                    <cell name="japicmp-test-v1" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.*" vexpanded="true" visibility="public" drill="false">
-                      <grid>
-                        <row>
-                          <cell name="japicmp" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.*" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.*" vexpanded="true" visibility="public" drill="false">
-                                  <grid>
-                                    <row>
-                                      <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.?" vexpanded="true" visibility="public" drill="false">
-                                        <grid>
-                                          <row>
-                                            <cell name="Modifier" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Modifier" vexpanded="false" visibility="public" drill="false" />
-                                            <cell name="Removed" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Removed" vexpanded="false" visibility="public" drill="false" />
-                                            <cell name="Unchanged" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Unchanged" vexpanded="false" visibility="public" drill="false" />
-                                          </row>
-                                        </grid>
-                                      </cell>
-                                      <cell name="packageOne" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageOne.?" vexpanded="true" visibility="public" drill="false">
-                                        <grid>
-                                          <row>
-                                            <cell name="PackageOne" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageOne.PackageOne" vexpanded="false" visibility="public" drill="false" />
-                                          </row>
-                                        </grid>
-                                      </cell>
-                                      <cell name="packageTwo" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageTwo.?" vexpanded="true" visibility="public" drill="false">
-                                        <grid>
-                                          <row>
-                                            <cell name="PackageTwo" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageTwo.PackageTwo" vexpanded="false" visibility="public" drill="false" />
-                                          </row>
-                                        </grid>
-                                      </cell>
-                                    </row>
-                                  </grid>
-                                </cell>
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                      </grid>
-                    </cell>
-                  </row>
-                </grid>
-              </cell>
-              <cell name="japicmp-test-v2" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.*" vexpanded="true" visibility="public" drill="false">
-                <grid>
-                  <row>
-                    <cell name="japicmp-test-v2" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.*" vexpanded="true" visibility="public" drill="false">
-                      <grid>
-                        <row>
-                          <cell name="japicmp" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.*" vexpanded="true" visibility="public" drill="false">
-                            <grid>
-                              <row>
-                                <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.test.?" vexpanded="true" visibility="public" drill="false">
-                                  <grid>
-                                    <row>
-                                      <cell name="Added" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.test.Added" vexpanded="false" visibility="public" drill="false" />
-                                    </row>
-                                  </grid>
-                                </cell>
-                              </row>
-                            </grid>
-                          </cell>
-                        </row>
-                      </grid>
-                    </cell>
-                  </row>
-                </grid>
-              </cell>
-            </row>
-          </grid>
-        </cell>
-      </row>
-      <description>Top-level breakout (depth=2147483647)</description>
-    </grid>
-  </grid-set>
-</local-project>
-


[commons-vfs] 02/20: updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 101d281bc968a80e5e0eef93b1a74ba05e4ad81a
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Oct 6 11:52:12 2013 +0200

    updated README.md
---
 README.md | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/README.md b/README.md
index b790969..56b9129 100644
--- a/README.md
+++ b/README.md
@@ -92,6 +92,12 @@ The differences between the two Java APIs are also printed on the command line f
 
 The following releases are available:
 
+* [Version 0.0.2](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.2/japicmp-0.0.2.jar)
+    * Changes:
+        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
+        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
+        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
+        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
 * [Version 0.0.1](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.1/japicmp-0.0.1.jar)
 
 The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)


[commons-vfs] 19/20: added @phase to maven-plugin

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 0f0dd7497f66d647b927662ecd720c08806c6c38
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Jun 22 00:32:02 2014 +0200

    added @phase to maven-plugin
---
 japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
index e8b8c46..13e1525 100644
--- a/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
+++ b/japicmp-maven-plugin/src/main/java/japicmp/maven/JApiCmpMojo.java
@@ -30,6 +30,7 @@ import java.util.List;
 
 /**
  * @goal cmp
+ * @phase verify
  */
 public class JApiCmpMojo extends AbstractMojo {
     /**


[commons-vfs] 04/20: moved PackageFilter to config package, moved AccessModifier to model package

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 414ccbb864c2ad3911ee924ef80c2254d1a0e424
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Nov 16 17:40:19 2013 +0100

    moved PackageFilter to config package, moved AccessModifier to model package
---
 .../japicmp-test/src/test/java/japicmp/test/ModifierTest.java        | 2 +-
 .../japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java   | 2 +-
 japicmp/src/main/java/japicmp/cli/CliParser.java                     | 4 ++--
 japicmp/src/main/java/japicmp/cmp/ClassComparator.java               | 5 +----
 japicmp/src/main/java/japicmp/cmp/ClassesComparator.java             | 1 +
 japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java          | 1 +
 japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java   | 3 +++
 japicmp/src/main/java/japicmp/config/Options.java                    | 3 +--
 japicmp/src/main/java/japicmp/{cmp => config}/PackageFilter.java     | 2 +-
 japicmp/src/main/java/japicmp/{cmp => model}/AccessModifier.java     | 2 +-
 japicmp/src/main/java/japicmp/model/JApiClass.java                   | 1 -
 japicmp/src/main/java/japicmp/model/JApiMethod.java                  | 1 -
 japicmp/src/main/java/japicmp/util/ModifierHelper.java               | 2 +-
 japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java             | 1 +
 japicmp/src/test/java/japicmp/util/ModifierHelperTest.java           | 2 +-
 15 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
index f939228..2cd6a5e 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
@@ -1,6 +1,6 @@
 package japicmp.test;
 
-import japicmp.cmp.AccessModifier;
+import japicmp.model.AccessModifier;
 import japicmp.cmp.JarArchiveComparator;
 import japicmp.cmp.JarArchiveComparatorOptions;
 import japicmp.model.JApiChangeStatus;
diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
index 7ee3c80..f86f856 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
@@ -2,7 +2,7 @@ package japicmp.test;
 
 import japicmp.cmp.JarArchiveComparator;
 import japicmp.cmp.JarArchiveComparatorOptions;
-import japicmp.cmp.PackageFilter;
+import japicmp.config.PackageFilter;
 import japicmp.model.JApiClass;
 import japicmp.test.packageOne.PackageOne;
 import japicmp.test.packageTwo.PackageTwo;
diff --git a/japicmp/src/main/java/japicmp/cli/CliParser.java b/japicmp/src/main/java/japicmp/cli/CliParser.java
index 83ae01e..17c9889 100644
--- a/japicmp/src/main/java/japicmp/cli/CliParser.java
+++ b/japicmp/src/main/java/japicmp/cli/CliParser.java
@@ -1,8 +1,8 @@
 package japicmp.cli;
 
 import com.google.common.base.Optional;
-import japicmp.cmp.AccessModifier;
-import japicmp.cmp.PackageFilter;
+import japicmp.model.AccessModifier;
+import japicmp.config.PackageFilter;
 import japicmp.config.Options;
 import japicmp.exception.JApiCmpException;
 import japicmp.util.StringArrayEnumeration;
diff --git a/japicmp/src/main/java/japicmp/cmp/ClassComparator.java b/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
index 0bcb783..b600b13 100644
--- a/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
@@ -1,10 +1,7 @@
 package japicmp.cmp;
 
 import com.google.common.base.Optional;
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import japicmp.model.JApiMethod;
-import japicmp.model.JApiParameter;
+import japicmp.model.*;
 import japicmp.util.ModifierHelper;
 import japicmp.util.SignatureParser;
 import javassist.CtClass;
diff --git a/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java b/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
index b8e2b48..bae4f86 100644
--- a/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
@@ -1,6 +1,7 @@
 package japicmp.cmp;
 
 import com.google.common.base.Optional;
+import japicmp.model.AccessModifier;
 import japicmp.model.JApiChangeStatus;
 import japicmp.model.JApiClass;
 import japicmp.util.ModifierHelper;
diff --git a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
index af1a0e0..1ac2478 100644
--- a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
@@ -1,5 +1,6 @@
 package japicmp.cmp;
 
+import japicmp.config.PackageFilter;
 import japicmp.model.JApiClass;
 import japicmp.util.ModifierHelper;
 import javassist.ClassPool;
diff --git a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
index d30d03e..ff69634 100644
--- a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
+++ b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
@@ -1,5 +1,8 @@
 package japicmp.cmp;
 
+import japicmp.config.PackageFilter;
+import japicmp.model.AccessModifier;
+
 import java.util.LinkedList;
 import java.util.List;
 
diff --git a/japicmp/src/main/java/japicmp/config/Options.java b/japicmp/src/main/java/japicmp/config/Options.java
index b4e46b8..09414e6 100644
--- a/japicmp/src/main/java/japicmp/config/Options.java
+++ b/japicmp/src/main/java/japicmp/config/Options.java
@@ -1,8 +1,7 @@
 package japicmp.config;
 
 import com.google.common.base.Optional;
-import japicmp.cmp.AccessModifier;
-import japicmp.cmp.PackageFilter;
+import japicmp.model.AccessModifier;
 
 import java.util.LinkedList;
 import java.util.List;
diff --git a/japicmp/src/main/java/japicmp/cmp/PackageFilter.java b/japicmp/src/main/java/japicmp/config/PackageFilter.java
similarity index 94%
rename from japicmp/src/main/java/japicmp/cmp/PackageFilter.java
rename to japicmp/src/main/java/japicmp/config/PackageFilter.java
index 0045c22..add49b2 100644
--- a/japicmp/src/main/java/japicmp/cmp/PackageFilter.java
+++ b/japicmp/src/main/java/japicmp/config/PackageFilter.java
@@ -1,4 +1,4 @@
-package japicmp.cmp;
+package japicmp.config;
 
 import java.util.regex.Pattern;
 
diff --git a/japicmp/src/main/java/japicmp/cmp/AccessModifier.java b/japicmp/src/main/java/japicmp/model/AccessModifier.java
similarity index 91%
rename from japicmp/src/main/java/japicmp/cmp/AccessModifier.java
rename to japicmp/src/main/java/japicmp/model/AccessModifier.java
index 8f9ffec..0e7fc64 100644
--- a/japicmp/src/main/java/japicmp/cmp/AccessModifier.java
+++ b/japicmp/src/main/java/japicmp/model/AccessModifier.java
@@ -1,4 +1,4 @@
-package japicmp.cmp;
+package japicmp.model;
 
 public enum AccessModifier {
     PUBLIC(3), PACKAGE(2), PROTECTED(1), PRIVATE(0);
diff --git a/japicmp/src/main/java/japicmp/model/JApiClass.java b/japicmp/src/main/java/japicmp/model/JApiClass.java
index 242b6c3..46c2eaf 100644
--- a/japicmp/src/main/java/japicmp/model/JApiClass.java
+++ b/japicmp/src/main/java/japicmp/model/JApiClass.java
@@ -1,7 +1,6 @@
 package japicmp.model;
 
 import com.google.common.base.Optional;
-import japicmp.cmp.AccessModifier;
 import javassist.CtClass;
 
 import javax.xml.bind.annotation.XmlAttribute;
diff --git a/japicmp/src/main/java/japicmp/model/JApiMethod.java b/japicmp/src/main/java/japicmp/model/JApiMethod.java
index b23c44a..eff5662 100644
--- a/japicmp/src/main/java/japicmp/model/JApiMethod.java
+++ b/japicmp/src/main/java/japicmp/model/JApiMethod.java
@@ -1,7 +1,6 @@
 package japicmp.model;
 
 import com.google.common.base.Optional;
-import japicmp.cmp.AccessModifier;
 import javassist.CtMethod;
 
 import javax.xml.bind.annotation.XmlAttribute;
diff --git a/japicmp/src/main/java/japicmp/util/ModifierHelper.java b/japicmp/src/main/java/japicmp/util/ModifierHelper.java
index 416888e..d3f8e66 100644
--- a/japicmp/src/main/java/japicmp/util/ModifierHelper.java
+++ b/japicmp/src/main/java/japicmp/util/ModifierHelper.java
@@ -1,6 +1,6 @@
 package japicmp.util;
 
-import japicmp.cmp.AccessModifier;
+import japicmp.model.AccessModifier;
 
 import java.lang.reflect.Modifier;
 
diff --git a/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java b/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
index 8bffab9..916bcb2 100644
--- a/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
+++ b/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
@@ -1,5 +1,6 @@
 package japicmp.cmp;
 
+import japicmp.config.PackageFilter;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.is;
diff --git a/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java b/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
index 4f0b95f..6f666a2 100644
--- a/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
+++ b/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
@@ -1,6 +1,6 @@
 package japicmp.util;
 
-import japicmp.cmp.AccessModifier;
+import japicmp.model.AccessModifier;
 import javassist.Modifier;
 import org.junit.Test;
 


[commons-vfs] 14/20: Updated README.md

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit ab1d0b0af51866edf33f257730bf0916fcb88af2
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sat Jun 21 19:47:33 2014 +0200

    Updated README.md
---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index f9bf82c..beb5b93 100644
--- a/README.md
+++ b/README.md
@@ -71,8 +71,8 @@ The maven plugin can be included in the pom.xml file of your artificat in the fo
                     </newVersion>
                     <parameter>
                         <onlyModified>true</onlyModified>
-                        <packagesToInclude>*</packagesToInclude>
-                        <packagesToExclude>*</packagesToExclude>
+                        <packagesToInclude>example</packagesToInclude>
+                        <packagesToExclude>excludeMe</packagesToExclude>
                         <accessModifier>public</accessModifier>
                         <breakBuildOnModifications>false</breakBuildOnModifications>
                     </parameter>


[commons-vfs] 18/20: Merged development branch to master

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 761f276fca683df8e42e0e0670310940331fdc29
Merge: 3111346 2f3b431
Author: siom79 <ma...@googlemail.com>
AuthorDate: Sun Jun 22 00:26:03 2014 +0200

    Merged development branch to master

 .gitignore                                         |   1 +
 LICENSE                                            | 382 ++++++++++-----------
 README.md                                          |  67 +++-
 japicmp-maven-plugin/pom.xml                       |  87 +++++
 .../main/java/japicmp/maven/ConfigurationFile.java |  13 +
 .../src/main/java/japicmp/maven/Dependency.java    |  31 ++
 .../src/main/java/japicmp/maven/JApiCmpMojo.java   | 259 ++++++++++++++
 .../src/main/java/japicmp/maven/Parameter.java     |  49 +++
 .../src/main/java/japicmp/maven/Version.java       |  22 ++
 japicmp-testbase/japicmp-test-maven-plugin/pom.xml |  62 ++++
 japicmp-testbase/japicmp-test-v1/pom.xml           |  20 +-
 .../src/main/java/japicmp/test/Modifier.java       |  24 +-
 .../src/main/java/japicmp/test/Removed.java        |   8 +-
 .../src/main/java/japicmp/test/Unchanged.java      |  16 +-
 .../java/japicmp/test/packageOne/PackageOne.java   |   8 +-
 .../java/japicmp/test/packageTwo/PackageTwo.java   |   8 +-
 japicmp-testbase/japicmp-test-v2/pom.xml           |  52 ++-
 .../src/main/java/japicmp/test/Added.java          |   8 +-
 .../src/main/java/japicmp/test/Modifier.java       |  24 +-
 .../src/main/java/japicmp/test/Unchanged.java      |  16 +-
 .../java/japicmp/test/packageOne/PackageOne.java   |   8 +-
 .../java/japicmp/test/packageTwo/PackageTwo.java   |   8 +-
 japicmp-testbase/japicmp-test/pom.xml              | 144 ++++----
 .../src/test/java/japicmp/test/BasicTest.java      |  72 ++--
 .../src/test/java/japicmp/test/ModifierTest.java   |  88 ++---
 .../test/java/japicmp/test/PackageFilterTest.java  | 192 +++++------
 .../src/test/java/japicmp/test/util/Helper.java    |  64 ++--
 japicmp-testbase/pom.xml                           |  35 +-
 japicmp/pom.xml                                    | 148 ++++----
 japicmp/src/main/java/japicmp/JApiCmp.java         | 200 +++++------
 japicmp/src/main/java/japicmp/cli/CliParser.java   | 208 +++++------
 .../src/main/java/japicmp/cmp/AccessModifier.java  |  15 -
 .../src/main/java/japicmp/cmp/ClassComparator.java | 157 +++++----
 .../main/java/japicmp/cmp/ClassesComparator.java   | 129 +++----
 .../java/japicmp/cmp/JarArchiveComparator.java     | 221 ++++++------
 .../japicmp/cmp/JarArchiveComparatorOptions.java   |  55 +--
 japicmp/src/main/java/japicmp/config/Options.java  | 155 +++++----
 .../japicmp/{cmp => config}/PackageFilter.java     |  36 +-
 .../java/japicmp/exception/JApiCmpException.java   |  44 +--
 .../main/java/japicmp/model/AccessModifier.java    |  28 ++
 .../main/java/japicmp/model/JApiChangeStatus.java  |  10 +-
 japicmp/src/main/java/japicmp/model/JApiClass.java | 207 ++++++-----
 .../src/main/java/japicmp/model/JApiMethod.java    | 163 +++++----
 .../src/main/java/japicmp/model/JApiParameter.java |  32 +-
 .../java/japicmp/output/OutputTransformer.java     | 110 +++---
 .../output/stdout/StdoutOutputGenerator.java       | 142 ++++----
 .../japicmp/output/xml/XmlOutputGenerator.java     |  48 +--
 .../japicmp/output/xml/model/JApiCmpXmlRoot.java   |  86 ++---
 .../src/main/java/japicmp/util/ModifierHelper.java |  58 ++--
 .../main/java/japicmp/util/SignatureParser.java    | 206 +++++------
 .../java/japicmp/util/StringArrayEnumeration.java  |  54 +--
 japicmp/src/main/resources/log4j.properties        |  14 +-
 .../src/test/java/japicmp/cli/CliParserTest.java   |  80 ++---
 .../test/java/japicmp/cmp/PackageFilterTest.java   |  89 ++---
 .../test/java/japicmp/util/ModifierHelperTest.java |  82 ++---
 .../java/japicmp/util/SignatureParserTest.java     | 198 +++++------
 .../japicmp/util/StringArrayEnumerationTest.java   |  74 ++--
 pom.xml                                            | 324 ++++++++---------
 58 files changed, 2888 insertions(+), 2253 deletions(-)

diff --cc README.md
index 04469f1,391cec5..85b40fa
--- a/README.md
+++ b/README.md
@@@ -1,107 -1,166 +1,166 @@@
 -japicmp
 -=======
 -
 -japicmp is a tool to compare two versions of a jar archive:
 -
 -    java -jar japicmp-0.0.3.jar -n new-version.jar -o old-version.jar
 -
 -It can also be used as a library:
 -
 -    JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
 -	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
 -    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
 -
 -##Motivation##
 -
 -Every time you make a new release of a library or a product, you have to tell your clients or customers what
 -has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
 -This tool/library helps you to determine the differences between the java class files that are contained in the two
 -jar archives.
 -In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
 -the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
 -investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
 -can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
 -library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
 -
 -##Features##
 -
 -* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
 -* Differences are printed on the command line in a simple diff format.
 -* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
 -* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
 -  compared can be set to package, protected or private.
 -* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
 -* A maven plugin is available that allows you to compare the current artifact version with some older version from the repository.
 -
 -##Usage CLI tool##
 -
 -The tool has a set of CLI parameters that are described in the following:
 -
 -    -h                        Prints this help.
 -    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
 -    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
 -    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
 -    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
 -    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
 -    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
 -    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
 -    
 -##Usage maven plugin##
 -
 -The maven plugin can be included in the pom.xml file of your artifact in the following way:
 -
 -    <build>
 -        <plugins>
 -            <plugin>
 -                <groupId>japicmp</groupId>
 -                <artifactId>japicmp-maven-plugin</artifactId>
 -                <version>0.0.3</version>
 -                <configuration>
 -                    <oldVersion>
 -                        <dependency>
 -                            <groupId>japicmp</groupId>
 -                            <artifactId>japicmp-test-v1</artifactId>
 -                            <version>${project.version}</version>
 -                        </dependency>
 -                    </oldVersion>
 -                    <newVersion>
 -                        <file>
 -                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
 -                        </file>
 -                    </newVersion>
 -                    <parameter>
 -                        <onlyModified>true</onlyModified>
 -                        <packagesToInclude>example</packagesToInclude>
 -                        <packagesToExclude>excludeMe</packagesToExclude>
 -                        <accessModifier>public</accessModifier>
 -                        <breakBuildOnModifications>false</breakBuildOnModifications>
 -                    </parameter>
 -                </configuration>
 -                <executions>
 -                    <execution>
 -                        <phase>verify</phase>
 -                        <goals>
 -                            <goal>cmp</goal>
 -                        </goals>
 -                    </execution>
 -                </executions>
 -            </plugin>
 -        </plugins>
 -    </build>
 -    
 -The elements &lt;oldVersion&gt; and &lt;newVersion&gt; elements let you specify which version you want to compare. Both elements
 - support either a &lt;dependency&gt; or a &lt;file&gt; element. Through the &lt;parameter&gt; element you can provide the following options:
 -  
 -* onlyModified: Outputs only modified classes/methods. If not set to true, all classes and methods are printed.
 -* packagesToInclude: Comma separated list of package names to include, * can be used as wildcard.
 -* packagesToExclude: Comma separated list of package names to exclude, * can be used as wildcard.
 -* accessModifier: Sets the access modifier level (public, package, protected, private).
 -* breakBuildOnModifications: When set to true, the build breaks in case a modification has been detected.
 -
 -The maven plugin produces the two files japicmp.diff and japicmp.xml within the directory ${project.build.directory}/japicmp
 -of your artifact.
 -	
 -###Example###
 -
 -In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
 -
 -    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 -    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
 -        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
 -            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
 -        </class>
 -        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
 -        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
 -        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
 -        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
 -        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
 -        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
 -            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
 -            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
 -            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
 -        </class>
 -        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
 -            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
 -                <parameter type="java.lang.String"/>
 -            </method>
 -            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
 -        </class>
 -		...
 -
 -The differences between the two Java APIs are also printed on the command line for a quick overview:
 -
 -    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
 -        --- REMOVED METHOD value()
 -    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
 -    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
 -    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
 -    === UNCHANGED CLASS org.apache.http.auth.AUTH
 -    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
 -    +++ NEW CLASS org.apache.http.auth.AuthOption
 -        +++ NEW METHOD getAuthScheme()
 -        +++ NEW METHOD getCredentials()
 -        +++ NEW METHOD toString()
 -    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
 -        +++ NEW METHOD valueOf(java.lang.String)
 -        +++ NEW METHOD values()
 -
 -##Downloads##
 -
 -The following releases are available:
 -
 -* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
 -    * Changes:
 -        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
 -        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
 -        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
 -        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
 -* [Version 0.0.1](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.1)
 -
 -The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
 -
 -##Development##
 -
 -* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
 -* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
 -* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
 +japicmp
 +=======
 +
 +japicmp is a tool to compare two versions of a jar archive:
 +
-     java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
++    java -jar japicmp-0.0.3.jar -n new-version.jar -o old-version.jar
 +
 +It can also be used as a library:
 +
- 	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
++    JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
++	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
 +    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
 +
 +##Motivation##
 +
 +Every time you make a new release of a library or a product, you have to tell your clients or customers what
 +has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
 +This tool/library helps you to determine the differences between the java class files that are contained in the two
 +jar archives.
 +In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
 +the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
 +investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
 +can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
 +library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
 +
 +##Features##
 +
 +* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
 +* Differences are printed on the command line in a simple diff format.
 +* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
 +* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
 +  compared can be set to package, protected or private.
 +* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
++* A maven plugin is available that allows you to compare the current artifact version with some older version from the repository.
 +
- ##Usage##
++##Usage CLI tool##
 +
 +The tool has a set of CLI parameters that are described in the following:
 +
 +    -h                        Prints this help.
 +    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
 +    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
 +    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
 +    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
 +    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
 +    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
 +    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
++    
++##Usage maven plugin##
++
++The maven plugin can be included in the pom.xml file of your artifact in the following way:
++
++    <build>
++        <plugins>
++            <plugin>
++                <groupId>japicmp</groupId>
++                <artifactId>japicmp-maven-plugin</artifactId>
++                <version>0.0.3</version>
++                <configuration>
++                    <oldVersion>
++                        <dependency>
++                            <groupId>japicmp</groupId>
++                            <artifactId>japicmp-test-v1</artifactId>
++                            <version>${project.version}</version>
++                        </dependency>
++                    </oldVersion>
++                    <newVersion>
++                        <file>
++                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
++                        </file>
++                    </newVersion>
++                    <parameter>
++                        <onlyModified>true</onlyModified>
++                        <packagesToInclude>example</packagesToInclude>
++                        <packagesToExclude>excludeMe</packagesToExclude>
++                        <accessModifier>public</accessModifier>
++                        <breakBuildOnModifications>false</breakBuildOnModifications>
++                    </parameter>
++                </configuration>
++                <executions>
++                    <execution>
++                        <phase>verify</phase>
++                        <goals>
++                            <goal>cmp</goal>
++                        </goals>
++                    </execution>
++                </executions>
++            </plugin>
++        </plugins>
++    </build>
++    
++The elements &lt;oldVersion&gt; and &lt;newVersion&gt; elements let you specify which version you want to compare. Both elements
++ support either a &lt;dependency&gt; or a &lt;file&gt; element. Through the &lt;parameter&gt; element you can provide the following options:
++  
++* onlyModified: Outputs only modified classes/methods. If not set to true, all classes and methods are printed.
++* packagesToInclude: Comma separated list of package names to include, * can be used as wildcard.
++* packagesToExclude: Comma separated list of package names to exclude, * can be used as wildcard.
++* accessModifier: Sets the access modifier level (public, package, protected, private).
++* breakBuildOnModifications: When set to true, the build breaks in case a modification has been detected.
++
++The maven plugin produces the two files japicmp.diff and japicmp.xml within the directory ${project.build.directory}/japicmp
++of your artifact.
 +	
 +###Example###
 +
 +In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
 +
 +    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 +    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
 +        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
 +            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
 +        </class>
 +        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
 +        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
 +        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
 +        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
 +        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
 +        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
 +            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
 +            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
 +            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
 +        </class>
 +        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
 +            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
 +                <parameter type="java.lang.String"/>
 +            </method>
 +            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
 +        </class>
 +		...
 +
 +The differences between the two Java APIs are also printed on the command line for a quick overview:
 +
 +    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
 +        --- REMOVED METHOD value()
 +    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
 +    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
 +    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
 +    === UNCHANGED CLASS org.apache.http.auth.AUTH
 +    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
 +    +++ NEW CLASS org.apache.http.auth.AuthOption
 +        +++ NEW METHOD getAuthScheme()
 +        +++ NEW METHOD getCredentials()
 +        +++ NEW METHOD toString()
 +    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
 +        +++ NEW METHOD valueOf(java.lang.String)
 +        +++ NEW METHOD values()
 +
 +##Downloads##
 +
 +The following releases are available:
 +
 +* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
 +    * Changes:
 +        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
 +        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
 +        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
 +        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
 +* [Version 0.0.1](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.1)
 +
++The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
++
 +##Development##
 +
 +* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
 +* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
- * [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
++* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)


[commons-vfs] 20/20: [maven-release-plugin] prepare release japicmp-base-0.1.0

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 29e29bcdb31dc01d09c2c8cb66fe5b06747a2682
Author: CloudBees DEV@Cloud <no...@cloudbees.com>
AuthorDate: Sat Jun 21 18:42:37 2014 -0400

    [maven-release-plugin] prepare release japicmp-base-0.1.0
---
 japicmp-maven-plugin/pom.xml                       |   6 +-
 japicmp-testbase/japicmp-test-maven-plugin/pom.xml |   6 +-
 japicmp-testbase/japicmp-test-v1/pom.xml           |  20 +-
 japicmp-testbase/japicmp-test-v2/pom.xml           |  84 +++---
 japicmp-testbase/japicmp-test/pom.xml              | 144 ++++-----
 japicmp-testbase/pom.xml                           |  36 +--
 japicmp/pom.xml                                    | 156 +++++-----
 pom.xml                                            | 327 ++++++++++-----------
 8 files changed, 387 insertions(+), 392 deletions(-)

diff --git a/japicmp-maven-plugin/pom.xml b/japicmp-maven-plugin/pom.xml
index f83a912..3582ddd 100644
--- a/japicmp-maven-plugin/pom.xml
+++ b/japicmp-maven-plugin/pom.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>japicmp-base</artifactId>
         <groupId>japicmp</groupId>
-        <version>0.0.3-SNAPSHOT</version>
+        <version>0.1.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
index 553ed80..f8dfbce 100644
--- a/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
+++ b/japicmp-testbase/japicmp-test-maven-plugin/pom.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>japicmp-testbase</artifactId>
         <groupId>japicmp</groupId>
-        <version>0.0.3-SNAPSHOT</version>
+        <version>0.1.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/japicmp-testbase/japicmp-test-v1/pom.xml b/japicmp-testbase/japicmp-test-v1/pom.xml
index 029fe36..2a85ca2 100644
--- a/japicmp-testbase/japicmp-test-v1/pom.xml
+++ b/japicmp-testbase/japicmp-test-v1/pom.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test-v1</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.1.0</version>
+    </parent>
+
+    <artifactId>japicmp-test-v1</artifactId>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml
index db78d5b..2528e36 100644
--- a/japicmp-testbase/japicmp-test-v2/pom.xml
+++ b/japicmp-testbase/japicmp-test-v2/pom.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test-v2</artifactId>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>japicmp</groupId>
-                <artifactId>japicmp-maven-plugin</artifactId>
-                <version>${project.version}</version>
-                <configuration>
-                    <oldVersion>
-                        <dependency>
-                            <groupId>japicmp</groupId>
-                            <artifactId>japicmp-test-v1</artifactId>
-                            <version>${project.version}</version>
-                        </dependency>
-                    </oldVersion>
-                    <newVersion>
-                        <file>
-                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
-                        </file>
-                    </newVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>cmp</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.1.0</version>
+    </parent>
+
+    <artifactId>japicmp-test-v2</artifactId>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>japicmp</groupId>
+                <artifactId>japicmp-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <oldVersion>
+                        <dependency>
+                            <groupId>japicmp</groupId>
+                            <artifactId>japicmp-test-v1</artifactId>
+                            <version>${project.version}</version>
+                        </dependency>
+                    </oldVersion>
+                    <newVersion>
+                        <file>
+                            <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
+                        </file>
+                    </newVersion>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>cmp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/japicmp-test/pom.xml b/japicmp-testbase/japicmp-test/pom.xml
index 6272d52..63383c7 100644
--- a/japicmp-testbase/japicmp-test/pom.xml
+++ b/japicmp-testbase/japicmp-test/pom.xml
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp-test-v1</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp-test-v2</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>2.8</version>
-                <executions>
-                    <execution>
-                        <id>copy</id>
-                        <phase>process-test-resources</phase>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>japicmp</groupId>
-                                    <artifactId>japicmp-test-v1</artifactId>
-                                    <version>${project.version}</version>
-                                    <overWrite>true</overWrite>
-                                    <outputDirectory>${project.build.directory}</outputDirectory>
-                                    <destFileName>japicmp-test-v1.jar</destFileName>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>japicmp</groupId>
-                                    <artifactId>japicmp-test-v2</artifactId>
-                                    <version>${project.version}</version>
-                                    <overWrite>true</overWrite>
-                                    <outputDirectory>${project.build.directory}</outputDirectory>
-                                    <destFileName>japicmp-test-v2.jar</destFileName>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.1.0</version>
+    </parent>
+
+    <artifactId>japicmp-test</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp-test-v1</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp-test-v2</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>process-test-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>japicmp</groupId>
+                                    <artifactId>japicmp-test-v1</artifactId>
+                                    <version>${project.version}</version>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}</outputDirectory>
+                                    <destFileName>japicmp-test-v1.jar</destFileName>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>japicmp</groupId>
+                                    <artifactId>japicmp-test-v2</artifactId>
+                                    <version>${project.version}</version>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}</outputDirectory>
+                                    <destFileName>japicmp-test-v2.jar</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/pom.xml b/japicmp-testbase/pom.xml
index e3c9c93..660f261 100644
--- a/japicmp-testbase/pom.xml
+++ b/japicmp-testbase/pom.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-base</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-testbase</artifactId>
-	<packaging>pom</packaging>
-
-    <modules>
-		<module>japicmp-test-v1</module>
-		<module>japicmp-test-v2</module>
-		<module>japicmp-test</module>
-        <module>japicmp-test-maven-plugin</module>
-    </modules>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-base</artifactId>
+        <version>0.1.0</version>
+    </parent>
+
+    <artifactId>japicmp-testbase</artifactId>
+	<packaging>pom</packaging>
+
+    <modules>
+		<module>japicmp-test-v1</module>
+		<module>japicmp-test-v2</module>
+		<module>japicmp-test</module>
+        <module>japicmp-test-maven-plugin</module>
+    </modules>
 </project>
\ No newline at end of file
diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index 0dda364..0f1d4ae 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -1,79 +1,79 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-base</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>javassist</groupId>
-            <artifactId>javassist</artifactId>
-            <version>3.12.1.GA</version>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>14.0.1</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.17</version>
-                <configuration>
-                    <argLine>-XX:-UseSplitVerifier</argLine>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <mainClass>japicmp.JApiCmp</mainClass>
-                        </manifest>
-                    </archive>
-                    <descriptorRefs>
-                        <descriptorRef>jar-with-dependencies</descriptorRef>
-                    </descriptorRefs>
-                    <finalName>${project.artifactId}-${project.version}</finalName>
-                    <appendAssemblyId>false</appendAssemblyId>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>make-assembly</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>findbugs-maven-plugin</artifactId>
-                <version>2.5.2</version>
-                <configuration>
-                    <xmlOutput>true</xmlOutput>
-                    <xmlOutputDirectory>target/site</xmlOutputDirectory>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-base</artifactId>
+        <version>0.1.0</version>
+    </parent>
+
+    <artifactId>japicmp</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>javassist</groupId>
+            <artifactId>javassist</artifactId>
+            <version>3.12.1.GA</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>14.0.1</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.17</version>
+                <configuration>
+                    <argLine>-XX:-UseSplitVerifier</argLine>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>japicmp.JApiCmp</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <finalName>${project.artifactId}-${project.version}</finalName>
+                    <appendAssemblyId>false</appendAssemblyId>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>2.5.2</version>
+                <configuration>
+                    <xmlOutput>true</xmlOutput>
+                    <xmlOutputDirectory>target/site</xmlOutputDirectory>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d4f6967..0689497 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,165 +1,164 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>japicmp</groupId>
-    <artifactId>japicmp-base</artifactId>
-    <version>0.0.3-SNAPSHOT</version>
-    <packaging>pom</packaging>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <github.account>siom79</github.account>
-        <cloudbees.account>siom79</cloudbees.account>
-        <java.source>1.7</java.source>
-        <java.target>1.7</java.target>
-    </properties>
-
-    <modules>
-        <module>japicmp</module>
-        <module>japicmp-testbase</module>
-        <module>japicmp-maven-plugin</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>${java.source}</source>
-                    <target>${java.target}</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-release-plugin</artifactId>
-                <version>2.4.1</version>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-                <version>2.9.1</version>
-                <executions>
-                    <execution>
-                        <id>attach-javadocs</id>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-                <version>2.2.1</version>
-                <executions>
-                    <execution>
-                        <id>attach-sources</id>
-                        <goals>
-                            <goal>jar-no-fork</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <!-- explicitly define maven-deploy-plugin after other to force exec order -->
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-deploy-plugin</artifactId>
-                <version>2.7</version>
-                <executions>
-                    <execution>
-                        <id>deploy</id>
-                        <phase>deploy</phase>
-                        <goals>
-                            <goal>deploy</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-        <extensions>
-            <extension>
-                <groupId>org.apache.maven.wagon</groupId>
-                <artifactId>wagon-webdav-jackrabbit</artifactId>
-                <version>1.0-beta-7</version>
-            </extension>
-        </extensions>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>cobertura-maven-plugin</artifactId>
-                    <version>2.5.2</version>
-                    <configuration>
-                        <formats>
-                            <format>html</format>
-                            <format>xml</format>
-                        </formats>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <phase>verify</phase>
-                            <goals>
-                                <goal>clean</goal>
-                                <goal>cobertura</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
-    <scm>
-        <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection>
-        <developerConnection>scm:git:git@github.com:${github.account}/${project.groupId}.git</developerConnection>
-        <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url>
-        <tag>HEAD</tag>
-    </scm>
-
-    <distributionManagement>
-        <repository>
-            <id>cloudbees-public-release</id>
-            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/release</url>
-        </repository>
-        <snapshotRepository>
-            <id>cloudbees-public-snapshot</id>
-            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/snapshot</url>
-        </snapshotRepository>
-    </distributionManagement>
-
-    <repositories>
-        <repository>
-            <id>cloudbees-public-snapshot</id>
-            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-snapshot</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </repository>
-        <repository>
-            <id>cloudbees-public-release</id>
-            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-release</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>japicmp</groupId>
+    <artifactId>japicmp-base</artifactId>
+    <version>0.1.0</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <github.account>siom79</github.account>
+        <cloudbees.account>siom79</cloudbees.account>
+        <java.source>1.7</java.source>
+        <java.target>1.7</java.target>
+    </properties>
+
+    <modules>
+        <module>japicmp</module>
+        <module>japicmp-testbase</module>
+        <module>japicmp-maven-plugin</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>${java.source}</source>
+                    <target>${java.target}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <version>2.4.1</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.9.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <!-- explicitly define maven-deploy-plugin after other to force exec order -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <version>2.7</version>
+                <executions>
+                    <execution>
+                        <id>deploy</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>deploy</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-webdav-jackrabbit</artifactId>
+                <version>1.0-beta-7</version>
+            </extension>
+        </extensions>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>cobertura-maven-plugin</artifactId>
+                    <version>2.5.2</version>
+                    <configuration>
+                        <formats>
+                            <format>html</format>
+                            <format>xml</format>
+                        </formats>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>clean</goal>
+                                <goal>cobertura</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <scm>
+        <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection>
+        <developerConnection>scm:git:git@github.com:${github.account}/${project.groupId}.git</developerConnection>
+        <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url>
+        <tag>japicmp-base-0.1.0</tag>
+    </scm>
+
+    <distributionManagement>
+        <repository>
+            <id>cloudbees-public-release</id>
+            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/release</url>
+        </repository>
+        <snapshotRepository>
+            <id>cloudbees-public-snapshot</id>
+            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/snapshot</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>cloudbees-public-snapshot</id>
+            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-snapshot</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>cloudbees-public-release</id>
+            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-release</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
 </project>
\ No newline at end of file


[commons-vfs] 06/20: Local changes

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag japicmp-base-0.1.0
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit aeb5540b1be5b3ba367702754db8f08297883a34
Author: siom79 <ma...@googlemail.com>
AuthorDate: Thu May 22 23:32:08 2014 +0200

    Local changes
---
 .gitignore                                         |  16 +-
 LICENSE                                            | 382 ++++++++++-----------
 README.md~                                         | 109 ++++++
 japicmp-testbase/japicmp-test-v1/pom.xml           |  20 +-
 .../src/main/java/japicmp/test/Modifier.java       |  24 +-
 .../src/main/java/japicmp/test/Removed.java        |   8 +-
 .../src/main/java/japicmp/test/Unchanged.java      |  16 +-
 .../java/japicmp/test/packageOne/PackageOne.java   |   8 +-
 .../java/japicmp/test/packageTwo/PackageTwo.java   |   8 +-
 japicmp-testbase/japicmp-test-v2/pom.xml           |  20 +-
 .../src/main/java/japicmp/test/Added.java          |   8 +-
 .../src/main/java/japicmp/test/Modifier.java       |  24 +-
 .../src/main/java/japicmp/test/Unchanged.java      |  16 +-
 .../java/japicmp/test/packageOne/PackageOne.java   |   8 +-
 .../java/japicmp/test/packageTwo/PackageTwo.java   |   8 +-
 japicmp-testbase/japicmp-test/pom.xml              | 144 ++++----
 .../src/test/java/japicmp/test/BasicTest.java      |  72 ++--
 .../src/test/java/japicmp/test/ModifierTest.java   |  88 ++---
 .../test/java/japicmp/test/PackageFilterTest.java  | 192 +++++------
 .../src/test/java/japicmp/test/util/Helper.java    |  64 ++--
 japicmp-testbase/pom.xml                           |  34 +-
 japicmp/pom.xml                                    | 140 ++++----
 japicmp/src/main/java/japicmp/JApiCmp.java         | 200 +++++------
 japicmp/src/main/java/japicmp/cli/CliParser.java   | 238 ++++++-------
 .../src/main/java/japicmp/cmp/ClassComparator.java | 154 ++++-----
 .../main/java/japicmp/cmp/ClassesComparator.java   | 130 +++----
 .../java/japicmp/cmp/JarArchiveComparator.java     | 222 ++++++------
 .../japicmp/cmp/JarArchiveComparatorOptions.java   |  58 ++--
 japicmp/src/main/java/japicmp/config/Options.java  | 130 +++----
 .../main/java/japicmp/config/PackageFilter.java    |  36 +-
 .../java/japicmp/exception/JApiCmpException.java   |  44 +--
 .../main/java/japicmp/model/AccessModifier.java    |  30 +-
 .../main/java/japicmp/model/JApiChangeStatus.java  |  10 +-
 japicmp/src/main/java/japicmp/model/JApiClass.java | 206 +++++------
 .../src/main/java/japicmp/model/JApiMethod.java    | 162 ++++-----
 .../src/main/java/japicmp/model/JApiParameter.java |  32 +-
 .../java/japicmp/output/OutputTransformer.java     | 110 +++---
 .../output/stdout/StdoutOutputGenerator.java       | 142 ++++----
 .../japicmp/output/xml/XmlOutputGenerator.java     |  48 +--
 .../japicmp/output/xml/model/JApiCmpXmlRoot.java   |  86 ++---
 .../src/main/java/japicmp/util/ModifierHelper.java |  58 ++--
 .../main/java/japicmp/util/SignatureParser.java    | 206 +++++------
 .../java/japicmp/util/StringArrayEnumeration.java  |  54 +--
 japicmp/src/main/resources/log4j.properties        |  14 +-
 .../src/test/java/japicmp/cli/CliParserTest.java   |  80 ++---
 .../test/java/japicmp/cmp/PackageFilterTest.java   |  90 ++---
 .../test/java/japicmp/util/ModifierHelperTest.java |  82 ++---
 .../java/japicmp/util/SignatureParserTest.java     | 198 +++++------
 .../japicmp/util/StringArrayEnumerationTest.java   |  74 ++--
 pom.xml                                            | 320 ++++++++---------
 structure101.java.hsp                              | 281 +++++++++++++++
 51 files changed, 2647 insertions(+), 2257 deletions(-)

diff --git a/.gitignore b/.gitignore
index e2e9750..069d52e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,8 @@
-target
-.idea
-httpclient*.jar
-*.iml
-test.xml
-output.xml
-japicmp/guava-10.0.1.jar
-japicmp/guava-14.0.1.jar
+target
+.idea
+httpclient*.jar
+*.iml
+test.xml
+output.xml
+japicmp/guava-10.0.1.jar
+japicmp/guava-14.0.1.jar
diff --git a/LICENSE b/LICENSE
index 37ec93a..805e0da 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,191 +1,191 @@
-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:
-
-You must give any other recipients of the Work or Derivative Works a copy of
-this License; and
-You must cause any modified files to carry prominent notices stating that You
-changed the files; and
-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
-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.
+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:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+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
+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.
diff --git a/README.md~ b/README.md~
new file mode 100644
index 0000000..422f899
--- /dev/null
+++ b/README.md~
@@ -0,0 +1,109 @@
+japicmp
+=======
+
+japicmp is a tool to compare two versions of a jar archive:
+
+    java -jar japicmp-0.0.2.jar -n new-version.jar -o old-version.jar
+
+It can also be used as a library:
+
+	JarArchiveComparator jarArchiveComparator = new JarArchiveComparator();
+    List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
+
+##Motivation##
+
+Every time you make a new release of a library or a product, you have to tell your clients or customers what
+has changed in comparison to the last release. Without the appropriate tooling, this task is tedious and error-prone.
+This tool/library helps you to determine the differences between the java class files that are contained in the two
+jar archives.
+In contrast to other libraries/tools, this library does not use the Java Reflection API to compute
+the differences, as the usage of the Reflection API makes it necessary to include all classes the jar archive under
+investigation depends on are available on the classpath. To prevent the inclusion of all dependent libraries, which
+can be a lot of work for bigger applications, this library makes use of the [javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)
+library to inspect the class files. This way you only have to provide the two jar archives on the command line, that's it.
+
+##Features##
+
+* Comparison of two jar archives without the need to add all of their dependencies to the classpath.
+* Differences are printed on the command line in a simple diff format.
+* Differences can optionally be printed to an xml file. This can be transformed to an HTML file using XSLT.
+* Per default only public classes and class members are compared. If necessary, the access modifier of the classes and class members to be
+  compared can be set to package, protected or private.
+* Per default classes from all packages are compared. If necessary, certain packages can be excluded or only specific packages can be included.
+
+##Usage##
+
+The tool has a set of CLI parameters that are described in the following:
+
+    -h                        Prints this help.
+    -o <pathToOldVersionJar>  Provides the path to the old version of the jar.
+    -n <pathToNewVersionJar>  Provides the path to the new version of the jar.
+    -x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.
+    -a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.
+    -i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.
+    -e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.
+    -m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.
+	
+###Example###
+
+In the following you see the beginning of the xml output file after having computed the differences between the versions 4.0.1 and 4.2.3 of httpclient:
+
+    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+    <japicmp newJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.2.3.jar" oldJar="D:\Programmierung\japicmp\github\japicmp\japicmp\httpclient-4.0.1.jar">
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.GuardedBy" type="ANNOTATION">
+            <method accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" name="value" returnType="java.lang.String"/>
+        </class>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.Immutable" type="ANNOTATION"/>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.NotThreadSafe" type="ANNOTATION"/>
+        <class accessModifierNew="n.a." accessModifierOld="PUBLIC" changeStatus="REMOVED" fullyQualifiedName="org.apache.http.annotation.ThreadSafe" type="ANNOTATION"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AUTH" type="CLASS"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="PUBLIC" changeStatus="UNCHANGED" fullyQualifiedName="org.apache.http.auth.AuthenticationException" type="CLASS"/>
+        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthOption" type="CLASS">
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getAuthScheme" returnType="org.apache.http.auth.AuthScheme"/>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="getCredentials" returnType="org.apache.http.auth.Credentials"/>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="toString" returnType="java.lang.String"/>
+        </class>
+        <class accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" fullyQualifiedName="org.apache.http.auth.AuthProtocolState" type="ENUM">
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="valueOf" returnType="org.apache.http.auth.AuthProtocolState">
+                <parameter type="java.lang.String"/>
+            </method>
+            <method accessModifierNew="PUBLIC" accessModifierOld="n.a." changeStatus="NEW" name="values" returnType="org.apache.http.auth.AuthProtocolState[]"/>
+        </class>
+		...
+
+The differences between the two Java APIs are also printed on the command line for a quick overview:
+
+    --- REMOVED ANNOTATION org.apache.http.annotation.GuardedBy
+        --- REMOVED METHOD value()
+    --- REMOVED ANNOTATION org.apache.http.annotation.Immutable
+    --- REMOVED ANNOTATION org.apache.http.annotation.NotThreadSafe
+    --- REMOVED ANNOTATION org.apache.http.annotation.ThreadSafe
+    === UNCHANGED CLASS org.apache.http.auth.AUTH
+    === UNCHANGED CLASS org.apache.http.auth.AuthenticationException
+    +++ NEW CLASS org.apache.http.auth.AuthOption
+        +++ NEW METHOD getAuthScheme()
+        +++ NEW METHOD getCredentials()
+        +++ NEW METHOD toString()
+    +++ NEW ENUM org.apache.http.auth.AuthProtocolState
+        +++ NEW METHOD valueOf(java.lang.String)
+        +++ NEW METHOD values()
+
+##Downloads##
+
+The following releases are available:
+
+* [Version 0.0.2](https://github.com/siom79/japicmp/releases/tag/japicmp-base-0.0.2)
+    * Changes:
+        * [Command-line option to filter packages](https://github.com/siom79/japicmp/issues/1)
+        * [CLI option for comparing public, package, protected or private classes/class members](https://github.com/siom79/japicmp/issues/2)
+        * ["No differences" output when comparing the same file](https://github.com/siom79/japicmp/issues/4)
+        * [Giving a non-jar file as argument should not output "Comparing..."](https://github.com/siom79/japicmp/issues/5)
+* [Version 0.0.1](http://repository-siom79.forge.cloudbees.com/release/japicmp/japicmp/0.0.1/japicmp-0.0.1.jar)
+
+The latest snapshot version can be downloaded here: [japicmp-SNAPSHOT](http://repository-siom79.forge.cloudbees.com/snapshot/japicmp/japicmp/)
+
+##Development##
+
+* [Jenkins build server](https://siom79.ci.cloudbees.com/job/japicmp)
+* [Maven snapshot repository](https://repository-siom79.forge.cloudbees.com/snapshot)
+* [Maven release repository](https://repository-siom79.forge.cloudbees.com/release)
diff --git a/japicmp-testbase/japicmp-test-v1/pom.xml b/japicmp-testbase/japicmp-test-v1/pom.xml
index e0cab16..029fe36 100644
--- a/japicmp-testbase/japicmp-test-v1/pom.xml
+++ b/japicmp-testbase/japicmp-test-v1/pom.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test-v1</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>japicmp-test-v1</artifactId>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Modifier.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Modifier.java
index b53a7bf..0bd10f4 100644
--- a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Modifier.java
+++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Modifier.java
@@ -1,12 +1,12 @@
-package japicmp.test;
-
-public class Modifier {
-
-    public void publicToPrivateMethod() {
-
-    }
-
-    public static class ModifierPublicToProtected {
-
-    }
-}
+package japicmp.test;
+
+public class Modifier {
+
+    public void publicToPrivateMethod() {
+
+    }
+
+    public static class ModifierPublicToProtected {
+
+    }
+}
diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java
index 6ddead3..9ddd8da 100644
--- a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java
+++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java
@@ -1,4 +1,4 @@
-package japicmp.test;
-
-public class Removed {
-}
+package japicmp.test;
+
+public class Removed {
+}
diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Unchanged.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Unchanged.java
index d499de8..86d69a9 100644
--- a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Unchanged.java
+++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Unchanged.java
@@ -1,8 +1,8 @@
-package japicmp.test;
-
-public class Unchanged {
-
-    public void unchangedMethod(String str) {
-        System.out.println(str);
-    }
-}
+package japicmp.test;
+
+public class Unchanged {
+
+    public void unchangedMethod(String str) {
+        System.out.println(str);
+    }
+}
diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageOne/PackageOne.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageOne/PackageOne.java
index de59dc7..94e4eb3 100644
--- a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageOne/PackageOne.java
+++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageOne/PackageOne.java
@@ -1,4 +1,4 @@
-package japicmp.test.packageOne;
-
-public class PackageOne {
-}
+package japicmp.test.packageOne;
+
+public class PackageOne {
+}
diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageTwo/PackageTwo.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageTwo/PackageTwo.java
index 1ac7fef..372f19b 100644
--- a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageTwo/PackageTwo.java
+++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/packageTwo/PackageTwo.java
@@ -1,4 +1,4 @@
-package japicmp.test.packageTwo;
-
-public class PackageTwo {
-}
+package japicmp.test.packageTwo;
+
+public class PackageTwo {
+}
diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml
index 6e22b3c..c1c68f4 100644
--- a/japicmp-testbase/japicmp-test-v2/pom.xml
+++ b/japicmp-testbase/japicmp-test-v2/pom.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test-v2</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>japicmp-test-v2</artifactId>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java
index 7c0398c..6f72a8f 100644
--- a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java
+++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java
@@ -1,4 +1,4 @@
-package japicmp.test;
-
-public class Added {
-}
+package japicmp.test;
+
+public class Added {
+}
diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Modifier.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Modifier.java
index 65bf223..81b11d8 100644
--- a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Modifier.java
+++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Modifier.java
@@ -1,12 +1,12 @@
-package japicmp.test;
-
-public class Modifier {
-
-    private void publicToPrivateMethod() {
-
-    }
-
-    private static class ModifierPublicToProtected {
-
-    }
-}
+package japicmp.test;
+
+public class Modifier {
+
+    private void publicToPrivateMethod() {
+
+    }
+
+    private static class ModifierPublicToProtected {
+
+    }
+}
diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Unchanged.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Unchanged.java
index d499de8..86d69a9 100644
--- a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Unchanged.java
+++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Unchanged.java
@@ -1,8 +1,8 @@
-package japicmp.test;
-
-public class Unchanged {
-
-    public void unchangedMethod(String str) {
-        System.out.println(str);
-    }
-}
+package japicmp.test;
+
+public class Unchanged {
+
+    public void unchangedMethod(String str) {
+        System.out.println(str);
+    }
+}
diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageOne/PackageOne.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageOne/PackageOne.java
index de59dc7..94e4eb3 100644
--- a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageOne/PackageOne.java
+++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageOne/PackageOne.java
@@ -1,4 +1,4 @@
-package japicmp.test.packageOne;
-
-public class PackageOne {
-}
+package japicmp.test.packageOne;
+
+public class PackageOne {
+}
diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageTwo/PackageTwo.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageTwo/PackageTwo.java
index 1ac7fef..372f19b 100644
--- a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageTwo/PackageTwo.java
+++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/packageTwo/PackageTwo.java
@@ -1,4 +1,4 @@
-package japicmp.test.packageTwo;
-
-public class PackageTwo {
-}
+package japicmp.test.packageTwo;
+
+public class PackageTwo {
+}
diff --git a/japicmp-testbase/japicmp-test/pom.xml b/japicmp-testbase/japicmp-test/pom.xml
index dcde855..6272d52 100644
--- a/japicmp-testbase/japicmp-test/pom.xml
+++ b/japicmp-testbase/japicmp-test/pom.xml
@@ -1,73 +1,73 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-testbase</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-test</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp-test-v1</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>japicmp</groupId>
-            <artifactId>japicmp-test-v2</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>2.8</version>
-                <executions>
-                    <execution>
-                        <id>copy</id>
-                        <phase>process-test-resources</phase>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>japicmp</groupId>
-                                    <artifactId>japicmp-test-v1</artifactId>
-                                    <version>${project.version}</version>
-                                    <overWrite>true</overWrite>
-                                    <outputDirectory>${project.build.directory}</outputDirectory>
-                                    <destFileName>japicmp-test-v1.jar</destFileName>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>japicmp</groupId>
-                                    <artifactId>japicmp-test-v2</artifactId>
-                                    <version>${project.version}</version>
-                                    <overWrite>true</overWrite>
-                                    <outputDirectory>${project.build.directory}</outputDirectory>
-                                    <destFileName>japicmp-test-v2.jar</destFileName>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-testbase</artifactId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>japicmp-test</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp-test-v1</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>japicmp</groupId>
+            <artifactId>japicmp-test-v2</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>process-test-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>japicmp</groupId>
+                                    <artifactId>japicmp-test-v1</artifactId>
+                                    <version>${project.version}</version>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}</outputDirectory>
+                                    <destFileName>japicmp-test-v1.jar</destFileName>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>japicmp</groupId>
+                                    <artifactId>japicmp-test-v2</artifactId>
+                                    <version>${project.version}</version>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}</outputDirectory>
+                                    <destFileName>japicmp-test-v2.jar</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java
index 11d69a3..36b056e 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java
@@ -1,36 +1,36 @@
-package japicmp.test;
-
-import japicmp.cmp.JarArchiveComparator;
-import japicmp.cmp.JarArchiveComparatorOptions;
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import org.junit.Test;
-
-import java.util.List;
-
-import static japicmp.test.util.Helper.getArchive;
-import static japicmp.test.util.Helper.getJApiClass;
-import static japicmp.test.util.Helper.getJApiMethod;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-public class BasicTest {
-
-    @Test
-    public void test() {
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(new JarArchiveComparatorOptions());
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        assertThat(jApiClasses.size(), is(7));
-        JApiClass jApiClassRemoved = getJApiClass(jApiClasses, Removed.class.getName());
-        JApiClass jApiClassAdded = getJApiClass(jApiClasses, Added.class.getName());
-        JApiClass jApiClassUnchanged = getJApiClass(jApiClasses, Unchanged.class.getName());
-        assertThat(jApiClassRemoved, is(notNullValue()));
-        assertThat(jApiClassAdded, is(notNullValue()));
-        assertThat(jApiClassUnchanged, is(notNullValue()));
-        assertThat(jApiClassRemoved.getChangeStatus(), is(JApiChangeStatus.REMOVED));
-        assertThat(jApiClassAdded.getChangeStatus(), is(JApiChangeStatus.NEW));
-        assertThat(jApiClassUnchanged.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
-        assertThat(getJApiMethod(jApiClassUnchanged.getMethods(), "unchangedMethod"), is(notNullValue()));
-    }
-}
+package japicmp.test;
+
+import japicmp.cmp.JarArchiveComparator;
+import japicmp.cmp.JarArchiveComparatorOptions;
+import japicmp.model.JApiChangeStatus;
+import japicmp.model.JApiClass;
+import org.junit.Test;
+
+import java.util.List;
+
+import static japicmp.test.util.Helper.getArchive;
+import static japicmp.test.util.Helper.getJApiClass;
+import static japicmp.test.util.Helper.getJApiMethod;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+public class BasicTest {
+
+    @Test
+    public void test() {
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(new JarArchiveComparatorOptions());
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        assertThat(jApiClasses.size(), is(7));
+        JApiClass jApiClassRemoved = getJApiClass(jApiClasses, Removed.class.getName());
+        JApiClass jApiClassAdded = getJApiClass(jApiClasses, Added.class.getName());
+        JApiClass jApiClassUnchanged = getJApiClass(jApiClasses, Unchanged.class.getName());
+        assertThat(jApiClassRemoved, is(notNullValue()));
+        assertThat(jApiClassAdded, is(notNullValue()));
+        assertThat(jApiClassUnchanged, is(notNullValue()));
+        assertThat(jApiClassRemoved.getChangeStatus(), is(JApiChangeStatus.REMOVED));
+        assertThat(jApiClassAdded.getChangeStatus(), is(JApiChangeStatus.NEW));
+        assertThat(jApiClassUnchanged.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
+        assertThat(getJApiMethod(jApiClassUnchanged.getMethods(), "unchangedMethod"), is(notNullValue()));
+    }
+}
diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
index 2cd6a5e..339cc7b 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/ModifierTest.java
@@ -1,44 +1,44 @@
-package japicmp.test;
-
-import japicmp.model.AccessModifier;
-import japicmp.cmp.JarArchiveComparator;
-import japicmp.cmp.JarArchiveComparatorOptions;
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import japicmp.test.util.Helper;
-import org.junit.Test;
-
-import java.util.List;
-
-import static japicmp.test.util.Helper.getArchive;
-import static japicmp.test.util.Helper.getJApiClass;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-public class ModifierTest {
-
-    @Test
-    public void testOptionPublicModifier() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.setModifierLevel(AccessModifier.PUBLIC);
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName());
-        JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName());
-        assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.REMOVED));
-        assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.REMOVED));
-    }
-
-    @Test
-    public void testOptionPrivateModifier() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.setModifierLevel(AccessModifier.PRIVATE);
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName());
-        JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName());
-        assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
-        assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
-    }
-}
+package japicmp.test;
+
+import japicmp.model.AccessModifier;
+import japicmp.cmp.JarArchiveComparator;
+import japicmp.cmp.JarArchiveComparatorOptions;
+import japicmp.model.JApiChangeStatus;
+import japicmp.model.JApiClass;
+import japicmp.test.util.Helper;
+import org.junit.Test;
+
+import java.util.List;
+
+import static japicmp.test.util.Helper.getArchive;
+import static japicmp.test.util.Helper.getJApiClass;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+public class ModifierTest {
+
+    @Test
+    public void testOptionPublicModifier() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.setModifierLevel(AccessModifier.PUBLIC);
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName());
+        JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName());
+        assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.REMOVED));
+        assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.REMOVED));
+    }
+
+    @Test
+    public void testOptionPrivateModifier() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.setModifierLevel(AccessModifier.PRIVATE);
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        JApiClass modifierInnerClass = getJApiClass(jApiClasses, Modifier.ModifierPublicToProtected.class.getName());
+        JApiClass modifierClass = getJApiClass(jApiClasses, Modifier.class.getName());
+        assertThat(modifierInnerClass.getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
+        assertThat(Helper.getJApiMethod(modifierClass.getMethods(), "publicToPrivateMethod").getChangeStatus(), is(JApiChangeStatus.UNCHANGED));
+    }
+}
diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
index f86f856..875f94d 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/PackageFilterTest.java
@@ -1,96 +1,96 @@
-package japicmp.test;
-
-import japicmp.cmp.JarArchiveComparator;
-import japicmp.cmp.JarArchiveComparatorOptions;
-import japicmp.config.PackageFilter;
-import japicmp.model.JApiClass;
-import japicmp.test.packageOne.PackageOne;
-import japicmp.test.packageTwo.PackageTwo;
-import org.junit.Test;
-
-import java.util.List;
-
-import static japicmp.test.util.Helper.getArchive;
-import static japicmp.test.util.Helper.getJApiClass;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-public class PackageFilterTest {
-
-    @Test
-    public void onlyIncludeOnePackage() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageOne"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        getJApiClass(jApiClasses, PackageOne.class.getName());
-        assertThat(jApiClasses.size(), is(1));
-    }
-
-    @Test
-    public void onlyIncludeTwoPackages() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageOne"));
-        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageTwo"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        getJApiClass(jApiClasses, PackageOne.class.getName());
-        getJApiClass(jApiClasses, PackageTwo.class.getName());
-        assertThat(jApiClasses.size(), is(2));
-    }
-
-    @Test
-    public void onlyExcludeOnePackage() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesExclude().add(new PackageFilter("japicmp.test.packageOne"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        assertThatExceptionIsThrown(new Callback() {
-            public void callback() {
-                getJApiClass(jApiClasses, PackageOne.class.getName());
-            }
-        });
-    }
-
-    @Test
-    public void excludePackageJapicmpTest() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesExclude().add(new PackageFilter("japicmp.test"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        assertThat(jApiClasses.size(), is(0));
-    }
-
-    @Test
-    public void includePackageJapicmpTest() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesInclude().add(new PackageFilter("japicmp.test"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue()));
-    }
-
-    @Test
-    public void includePackageOneWithWildcard() {
-        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
-        options.getPackagesInclude().add(new PackageFilter("japicmp.*.packageOne"));
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
-        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
-        assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue()));
-    }
-
-    private interface Callback {
-        void callback();
-    }
-
-    private void assertThatExceptionIsThrown(Callback callback) {
-        boolean exception = false;
-        try {
-            callback.callback();
-        } catch (Exception e) {
-            exception = true;
-        }
-        assertThat(exception, is(true));
-    }
-}
+package japicmp.test;
+
+import japicmp.cmp.JarArchiveComparator;
+import japicmp.cmp.JarArchiveComparatorOptions;
+import japicmp.config.PackageFilter;
+import japicmp.model.JApiClass;
+import japicmp.test.packageOne.PackageOne;
+import japicmp.test.packageTwo.PackageTwo;
+import org.junit.Test;
+
+import java.util.List;
+
+import static japicmp.test.util.Helper.getArchive;
+import static japicmp.test.util.Helper.getJApiClass;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+public class PackageFilterTest {
+
+    @Test
+    public void onlyIncludeOnePackage() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageOne"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        getJApiClass(jApiClasses, PackageOne.class.getName());
+        assertThat(jApiClasses.size(), is(1));
+    }
+
+    @Test
+    public void onlyIncludeTwoPackages() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageOne"));
+        options.getPackagesInclude().add(new PackageFilter("japicmp.test.packageTwo"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        getJApiClass(jApiClasses, PackageOne.class.getName());
+        getJApiClass(jApiClasses, PackageTwo.class.getName());
+        assertThat(jApiClasses.size(), is(2));
+    }
+
+    @Test
+    public void onlyExcludeOnePackage() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesExclude().add(new PackageFilter("japicmp.test.packageOne"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        assertThatExceptionIsThrown(new Callback() {
+            public void callback() {
+                getJApiClass(jApiClasses, PackageOne.class.getName());
+            }
+        });
+    }
+
+    @Test
+    public void excludePackageJapicmpTest() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesExclude().add(new PackageFilter("japicmp.test"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        assertThat(jApiClasses.size(), is(0));
+    }
+
+    @Test
+    public void includePackageJapicmpTest() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesInclude().add(new PackageFilter("japicmp.test"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue()));
+    }
+
+    @Test
+    public void includePackageOneWithWildcard() {
+        JarArchiveComparatorOptions options = new JarArchiveComparatorOptions();
+        options.getPackagesInclude().add(new PackageFilter("japicmp.*.packageOne"));
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
+        final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar"));
+        assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue()));
+    }
+
+    private interface Callback {
+        void callback();
+    }
+
+    private void assertThatExceptionIsThrown(Callback callback) {
+        boolean exception = false;
+        try {
+            callback.callback();
+        } catch (Exception e) {
+            exception = true;
+        }
+        assertThat(exception, is(true));
+    }
+}
diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/util/Helper.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/util/Helper.java
index c98da86..8206dd7 100644
--- a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/util/Helper.java
+++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/util/Helper.java
@@ -1,32 +1,32 @@
-package japicmp.test.util;
-
-import japicmp.model.JApiClass;
-import japicmp.model.JApiMethod;
-
-import java.io.File;
-import java.util.List;
-
-public class Helper {
-
-    public static File getArchive(String filename) {
-        return new File("target" + File.separator + filename);
-    }
-
-    public static JApiClass getJApiClass(List<JApiClass> jApiClasses, String fqn) {
-        for (JApiClass jApiClass : jApiClasses) {
-            if (jApiClass.getFullyQualifiedName().equals(fqn)) {
-                return jApiClass;
-            }
-        }
-        throw new IllegalArgumentException("No class found with name " + fqn + ".");
-    }
-
-    public static JApiMethod getJApiMethod(List<JApiMethod> jApiMethods, String name) {
-        for(JApiMethod jApiMethod : jApiMethods) {
-            if(jApiMethod.getName().equals(name)) {
-                return jApiMethod;
-            }
-        }
-        throw new IllegalArgumentException("No method found with name " + name + ".");
-    }
-}
+package japicmp.test.util;
+
+import japicmp.model.JApiClass;
+import japicmp.model.JApiMethod;
+
+import java.io.File;
+import java.util.List;
+
+public class Helper {
+
+    public static File getArchive(String filename) {
+        return new File("target" + File.separator + filename);
+    }
+
+    public static JApiClass getJApiClass(List<JApiClass> jApiClasses, String fqn) {
+        for (JApiClass jApiClass : jApiClasses) {
+            if (jApiClass.getFullyQualifiedName().equals(fqn)) {
+                return jApiClass;
+            }
+        }
+        throw new IllegalArgumentException("No class found with name " + fqn + ".");
+    }
+
+    public static JApiMethod getJApiMethod(List<JApiMethod> jApiMethods, String name) {
+        for(JApiMethod jApiMethod : jApiMethods) {
+            if(jApiMethod.getName().equals(name)) {
+                return jApiMethod;
+            }
+        }
+        throw new IllegalArgumentException("No method found with name " + name + ".");
+    }
+}
diff --git a/japicmp-testbase/pom.xml b/japicmp-testbase/pom.xml
index f983041..3ade9b0 100644
--- a/japicmp-testbase/pom.xml
+++ b/japicmp-testbase/pom.xml
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-base</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp-testbase</artifactId>
-	<packaging>pom</packaging>
-
-    <modules>
-		<module>japicmp-test-v1</module>
-		<module>japicmp-test-v2</module>
-		<module>japicmp-test</module>
-	</modules>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-base</artifactId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>japicmp-testbase</artifactId>
+	<packaging>pom</packaging>
+
+    <modules>
+		<module>japicmp-test-v1</module>
+		<module>japicmp-test-v2</module>
+		<module>japicmp-test</module>
+	</modules>
 </project>
\ No newline at end of file
diff --git a/japicmp/pom.xml b/japicmp/pom.xml
index 35c8867..0d78636 100644
--- a/japicmp/pom.xml
+++ b/japicmp/pom.xml
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>japicmp</groupId>
-        <artifactId>japicmp-base</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>japicmp</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>javassist</groupId>
-            <artifactId>javassist</artifactId>
-            <version>3.12.1.GA</version>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>14.0.1</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <mainClass>japicmp.JApiCmp</mainClass>
-                        </manifest>
-                    </archive>
-                    <descriptorRefs>
-                        <descriptorRef>jar-with-dependencies</descriptorRef>
-                    </descriptorRefs>
-                    <finalName>${project.artifactId}-${project.version}</finalName>
-                    <appendAssemblyId>false</appendAssemblyId>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>make-assembly</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>findbugs-maven-plugin</artifactId>
-                <version>2.5.2</version>
-                <configuration>
-                    <xmlOutput>true</xmlOutput>
-                    <xmlOutputDirectory>target/site</xmlOutputDirectory>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>japicmp</groupId>
+        <artifactId>japicmp-base</artifactId>
+        <version>0.0.3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>japicmp</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>javassist</groupId>
+            <artifactId>javassist</artifactId>
+            <version>3.12.1.GA</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>14.0.1</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>japicmp.JApiCmp</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <finalName>${project.artifactId}-${project.version}</finalName>
+                    <appendAssemblyId>false</appendAssemblyId>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>2.5.2</version>
+                <configuration>
+                    <xmlOutput>true</xmlOutput>
+                    <xmlOutputDirectory>target/site</xmlOutputDirectory>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/japicmp/src/main/java/japicmp/JApiCmp.java b/japicmp/src/main/java/japicmp/JApiCmp.java
index bcb684d..cf940eb 100644
--- a/japicmp/src/main/java/japicmp/JApiCmp.java
+++ b/japicmp/src/main/java/japicmp/JApiCmp.java
@@ -1,100 +1,100 @@
-package japicmp;
-
-import japicmp.cli.CliParser;
-import japicmp.cmp.JarArchiveComparator;
-import japicmp.cmp.JarArchiveComparatorOptions;
-import japicmp.config.Options;
-import japicmp.exception.JApiCmpException;
-import japicmp.model.JApiClass;
-import japicmp.output.OutputTransformer;
-import japicmp.output.stdout.StdoutOutputGenerator;
-import japicmp.output.xml.XmlOutputGenerator;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.jar.JarFile;
-
-public class JApiCmp {
-
-    public static void main(String[] args) {
-        try {
-            JApiCmp app = new JApiCmp();
-            app.run(args);
-        } catch (JApiCmpException e) {
-            if (e.getReason() != JApiCmpException.Reason.NormalTermination) {
-                System.err.println(e.getMessage());
-                System.exit(-1);
-            }
-        } catch (Exception e) {
-            System.err.println(String.format("Execution of %s failed: %s", JApiCmp.class.getSimpleName(), e.getMessage()));
-            System.exit(-2);
-        }
-    }
-
-    private void run(String[] args) {
-        Options options = parseCliOptions(args);
-        File oldArchive = new File(options.getOldArchive());
-        File newArchive = new File(options.getNewArchive());
-        verifyFiles(oldArchive, newArchive);
-        JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
-        copyOptions(options, comparatorOptions);
-        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
-        List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
-        generateOutput(options, oldArchive, newArchive, jApiClasses);
-    }
-
-    private void copyOptions(Options options, JarArchiveComparatorOptions comparatorOptions) {
-        comparatorOptions.setModifierLevel(options.getAccessModifier());
-        comparatorOptions.getPackagesInclude().addAll(options.getPackagesInclude());
-        comparatorOptions.getPackagesExclude().addAll(options.getPackagesExclude());
-    }
-
-    private void generateOutput(Options options, File oldArchive, File newArchive, List<JApiClass> jApiClasses) {
-        OutputTransformer.sortClassesAndMethods(jApiClasses);
-        if (options.getXmlOutputFile().isPresent()) {
-            XmlOutputGenerator xmlGenerator = new XmlOutputGenerator();
-            xmlGenerator.generate(oldArchive, newArchive, jApiClasses, options);
-        }
-        StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator();
-        String output = stdoutOutputGenerator.generate(oldArchive, newArchive, jApiClasses, options);
-        System.out.println(output);
-    }
-
-    private Options parseCliOptions(String[] args) {
-        try {
-            CliParser cliParser = new CliParser();
-            return cliParser.parse(args);
-        } catch (IllegalArgumentException e) {
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, e.getMessage());
-        } catch (Exception e) {
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, "Failed to parse command line options: " + e.getMessage());
-        }
-    }
-
-    private void verifyFiles(File oldArchive, File newArchive) {
-        if (!oldArchive.exists()) {
-            String msg = String.format("File '%s' does not exist.", oldArchive.getAbsolutePath());
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
-        }
-        if (!newArchive.exists()) {
-            String msg = String.format("File '%s' does not exist.", newArchive.getAbsolutePath());
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
-        }
-        if(oldArchive.equals(newArchive)) {
-            String msg = String.format("Files '%s' and '%s' are the same.", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath());
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
-        }
-        verifyJarArchive(oldArchive);
-        verifyJarArchive(newArchive);
-    }
-
-    private void verifyJarArchive(File file) {
-        try {
-            new JarFile(file);
-        } catch (IOException e) {
-            String msg = String.format("File '%s' could not be opened as a jar file: %s", file.getAbsolutePath(), e.getMessage());
-            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
-        }
-    }
-}
+package japicmp;
+
+import japicmp.cli.CliParser;
+import japicmp.cmp.JarArchiveComparator;
+import japicmp.cmp.JarArchiveComparatorOptions;
+import japicmp.config.Options;
+import japicmp.exception.JApiCmpException;
+import japicmp.model.JApiClass;
+import japicmp.output.OutputTransformer;
+import japicmp.output.stdout.StdoutOutputGenerator;
+import japicmp.output.xml.XmlOutputGenerator;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.jar.JarFile;
+
+public class JApiCmp {
+
+    public static void main(String[] args) {
+        try {
+            JApiCmp app = new JApiCmp();
+            app.run(args);
+        } catch (JApiCmpException e) {
+            if (e.getReason() != JApiCmpException.Reason.NormalTermination) {
+                System.err.println(e.getMessage());
+                System.exit(-1);
+            }
+        } catch (Exception e) {
+            System.err.println(String.format("Execution of %s failed: %s", JApiCmp.class.getSimpleName(), e.getMessage()));
+            System.exit(-2);
+        }
+    }
+
+    private void run(String[] args) {
+        Options options = parseCliOptions(args);
+        File oldArchive = new File(options.getOldArchive());
+        File newArchive = new File(options.getNewArchive());
+        verifyFiles(oldArchive, newArchive);
+        JarArchiveComparatorOptions comparatorOptions = new JarArchiveComparatorOptions();
+        copyOptions(options, comparatorOptions);
+        JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions);
+        List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive);
+        generateOutput(options, oldArchive, newArchive, jApiClasses);
+    }
+
+    private void copyOptions(Options options, JarArchiveComparatorOptions comparatorOptions) {
+        comparatorOptions.setModifierLevel(options.getAccessModifier());
+        comparatorOptions.getPackagesInclude().addAll(options.getPackagesInclude());
+        comparatorOptions.getPackagesExclude().addAll(options.getPackagesExclude());
+    }
+
+    private void generateOutput(Options options, File oldArchive, File newArchive, List<JApiClass> jApiClasses) {
+        OutputTransformer.sortClassesAndMethods(jApiClasses);
+        if (options.getXmlOutputFile().isPresent()) {
+            XmlOutputGenerator xmlGenerator = new XmlOutputGenerator();
+            xmlGenerator.generate(oldArchive, newArchive, jApiClasses, options);
+        }
+        StdoutOutputGenerator stdoutOutputGenerator = new StdoutOutputGenerator();
+        String output = stdoutOutputGenerator.generate(oldArchive, newArchive, jApiClasses, options);
+        System.out.println(output);
+    }
+
+    private Options parseCliOptions(String[] args) {
+        try {
+            CliParser cliParser = new CliParser();
+            return cliParser.parse(args);
+        } catch (IllegalArgumentException e) {
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, e.getMessage());
+        } catch (Exception e) {
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, "Failed to parse command line options: " + e.getMessage());
+        }
+    }
+
+    private void verifyFiles(File oldArchive, File newArchive) {
+        if (!oldArchive.exists()) {
+            String msg = String.format("File '%s' does not exist.", oldArchive.getAbsolutePath());
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
+        }
+        if (!newArchive.exists()) {
+            String msg = String.format("File '%s' does not exist.", newArchive.getAbsolutePath());
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
+        }
+        if(oldArchive.equals(newArchive)) {
+            String msg = String.format("Files '%s' and '%s' are the same.", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath());
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
+        }
+        verifyJarArchive(oldArchive);
+        verifyJarArchive(newArchive);
+    }
+
+    private void verifyJarArchive(File file) {
+        try {
+            new JarFile(file);
+        } catch (IOException e) {
+            String msg = String.format("File '%s' could not be opened as a jar file: %s", file.getAbsolutePath(), e.getMessage());
+            throw new JApiCmpException(JApiCmpException.Reason.IllegalArgument, msg);
+        }
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/cli/CliParser.java b/japicmp/src/main/java/japicmp/cli/CliParser.java
index 17c9889..e5f87e3 100644
--- a/japicmp/src/main/java/japicmp/cli/CliParser.java
+++ b/japicmp/src/main/java/japicmp/cli/CliParser.java
@@ -1,119 +1,119 @@
-package japicmp.cli;
-
-import com.google.common.base.Optional;
-import japicmp.model.AccessModifier;
-import japicmp.config.PackageFilter;
-import japicmp.config.Options;
-import japicmp.exception.JApiCmpException;
-import japicmp.util.StringArrayEnumeration;
-
-public class CliParser {
-
-    public Options parse(String[] args) throws IllegalArgumentException {
-        Options options = new Options();
-        StringArrayEnumeration sae = new StringArrayEnumeration(args);
-        while (sae.hasMoreElements()) {
-            String arg = sae.nextElement();
-            if ("-n".equals(arg)) {
-                String newArchive = getOptionWithArgument("-n", sae);
-                options.setNewArchive(newArchive);
-            }
-            if ("-o".equals(arg)) {
-                String oldArchive = getOptionWithArgument("-o", sae);
-                options.setOldArchive(oldArchive);
-            }
-            if ("-x".equals(arg)) {
-                String xmlOutputFile = getOptionWithArgument("-x", sae);
-                options.setXmlOutputFile(Optional.of(xmlOutputFile));
-            }
-            if ("-m".equals(arg)) {
-                options.setOutputOnlyModifications(true);
-            }
-            if ("-a".equals(arg)) {
-                String accessModifierArg = getOptionWithArgument("-a", sae);
-                try {
-                    AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase());
-                    options.setAccessModifier(accessModifier);
-                } catch (IllegalArgumentException e) {
-                    throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, listOfAccessModifiers()));
-                }
-            }
-            if ("-i".equals(arg)) {
-                String packagesIncludeArg = getOptionWithArgument("-i", sae);
-                String[] parts = packagesIncludeArg.split(",");
-                for (String part : parts) {
-                    part = part.trim();
-                    try {
-                        options.getPackagesInclude().add(new PackageFilter(part));
-                    } catch (Exception e) {
-                        throw new IllegalArgumentException(String.format("Wrong syntax for include option '%s': %s", part, e.getMessage()));
-                    }
-                }
-            }
-            if ("-e".equals(arg)) {
-                String packagesExcludeArg = getOptionWithArgument("-e", sae);
-                String[] parts = packagesExcludeArg.split(",");
-                for (String part : parts) {
-                    part = part.trim();
-                    try {
-                        options.getPackagesInclude().add(new PackageFilter(part));
-                    } catch (Exception e) {
-                        throw new IllegalArgumentException(String.format("Wrong syntax for exclude option '%s': %s", part, e.getMessage()));
-                    }
-                }
-            }
-            if ("-h".equals(arg)) {
-                printHelp();
-            }
-        }
-        checkForMandatoryOptions(options);
-        return options;
-    }
-
-    private void printHelp() {
-        System.out.println("Available parameters:");
-        System.out.println("-h                        Prints this help.");
-        System.out.println("-o <pathToOldVersionJar>  Provides the path to the old version of the jar.");
-        System.out.println("-n <pathToNewVersionJar>  Provides the path to the new version of the jar.");
-        System.out.println("-x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.");
-        System.out.println("-a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.");
-        System.out.println("-i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.");
-        System.out.println("-e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.");
-        System.out.println("-m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.");
-        throw new JApiCmpException(JApiCmpException.Reason.NormalTermination);
-    }
-
-    private void checkForMandatoryOptions(Options options) {
-        if (options.getOldArchive() == null || options.getOldArchive().length() == 0) {
-            throw new IllegalArgumentException("Missing option for old version: -o <pathToOldVersionJar>");
-        }
-        if (options.getNewArchive() == null || options.getNewArchive().length() == 0) {
-            throw new IllegalArgumentException("Missing option for new version: -n <pathToNewVersionJar>");
-        }
-    }
-
-    private String getOptionWithArgument(String option, StringArrayEnumeration sae) {
-        if (sae.hasMoreElements()) {
-            String value = sae.nextElement();
-            if (value.startsWith("-")) {
-                throw new IllegalArgumentException(String.format("Missing argument for option %s.", option));
-            }
-            return value;
-        } else {
-            throw new IllegalArgumentException(String.format("Missing argument for option %s.", option));
-        }
-    }
-
-    private String listOfAccessModifiers() {
-        StringBuilder sb = new StringBuilder();
-        int i = 0;
-        for (AccessModifier am : AccessModifier.values()) {
-            if (i > 0) {
-                sb.append(",");
-            }
-            sb.append(am.toString());
-            i++;
-        }
-        return sb.toString();
-    }
-}
+package japicmp.cli;
+
+import com.google.common.base.Optional;
+import japicmp.model.AccessModifier;
+import japicmp.config.PackageFilter;
+import japicmp.config.Options;
+import japicmp.exception.JApiCmpException;
+import japicmp.util.StringArrayEnumeration;
+
+public class CliParser {
+
+    public Options parse(String[] args) throws IllegalArgumentException {
+        Options options = new Options();
+        StringArrayEnumeration sae = new StringArrayEnumeration(args);
+        while (sae.hasMoreElements()) {
+            String arg = sae.nextElement();
+            if ("-n".equals(arg)) {
+                String newArchive = getOptionWithArgument("-n", sae);
+                options.setNewArchive(newArchive);
+            }
+            if ("-o".equals(arg)) {
+                String oldArchive = getOptionWithArgument("-o", sae);
+                options.setOldArchive(oldArchive);
+            }
+            if ("-x".equals(arg)) {
+                String xmlOutputFile = getOptionWithArgument("-x", sae);
+                options.setXmlOutputFile(Optional.of(xmlOutputFile));
+            }
+            if ("-m".equals(arg)) {
+                options.setOutputOnlyModifications(true);
+            }
+            if ("-a".equals(arg)) {
+                String accessModifierArg = getOptionWithArgument("-a", sae);
+                try {
+                    AccessModifier accessModifier = AccessModifier.valueOf(accessModifierArg.toUpperCase());
+                    options.setAccessModifier(accessModifier);
+                } catch (IllegalArgumentException e) {
+                    throw new IllegalArgumentException(String.format("Invalid value for option -a: %s. Possible values are: %s.", accessModifierArg, listOfAccessModifiers()));
+                }
+            }
+            if ("-i".equals(arg)) {
+                String packagesIncludeArg = getOptionWithArgument("-i", sae);
+                String[] parts = packagesIncludeArg.split(",");
+                for (String part : parts) {
+                    part = part.trim();
+                    try {
+                        options.getPackagesInclude().add(new PackageFilter(part));
+                    } catch (Exception e) {
+                        throw new IllegalArgumentException(String.format("Wrong syntax for include option '%s': %s", part, e.getMessage()));
+                    }
+                }
+            }
+            if ("-e".equals(arg)) {
+                String packagesExcludeArg = getOptionWithArgument("-e", sae);
+                String[] parts = packagesExcludeArg.split(",");
+                for (String part : parts) {
+                    part = part.trim();
+                    try {
+                        options.getPackagesInclude().add(new PackageFilter(part));
+                    } catch (Exception e) {
+                        throw new IllegalArgumentException(String.format("Wrong syntax for exclude option '%s': %s", part, e.getMessage()));
+                    }
+                }
+            }
+            if ("-h".equals(arg)) {
+                printHelp();
+            }
+        }
+        checkForMandatoryOptions(options);
+        return options;
+    }
+
+    private void printHelp() {
+        System.out.println("Available parameters:");
+        System.out.println("-h                        Prints this help.");
+        System.out.println("-o <pathToOldVersionJar>  Provides the path to the old version of the jar.");
+        System.out.println("-n <pathToNewVersionJar>  Provides the path to the new version of the jar.");
+        System.out.println("-x <pathToXmlOutputFile>  Provides the path to the xml output file. If not given, stdout is used.");
+        System.out.println("-a <accessModifier>       Sets the access modifier level (public, package, protected, private), which should be used.");
+        System.out.println("-i <packagesToInclude>    Comma separated list of package names to include, * can be used as wildcard.");
+        System.out.println("-e <packagesToExclude>    Comma separated list of package names to exclude, * can be used as wildcard.");
+        System.out.println("-m                        Outputs only modified classes/methods. If not given, all classes and methods are printed.");
+        throw new JApiCmpException(JApiCmpException.Reason.NormalTermination);
+    }
+
+    private void checkForMandatoryOptions(Options options) {
+        if (options.getOldArchive() == null || options.getOldArchive().length() == 0) {
+            throw new IllegalArgumentException("Missing option for old version: -o <pathToOldVersionJar>");
+        }
+        if (options.getNewArchive() == null || options.getNewArchive().length() == 0) {
+            throw new IllegalArgumentException("Missing option for new version: -n <pathToNewVersionJar>");
+        }
+    }
+
+    private String getOptionWithArgument(String option, StringArrayEnumeration sae) {
+        if (sae.hasMoreElements()) {
+            String value = sae.nextElement();
+            if (value.startsWith("-")) {
+                throw new IllegalArgumentException(String.format("Missing argument for option %s.", option));
+            }
+            return value;
+        } else {
+            throw new IllegalArgumentException(String.format("Missing argument for option %s.", option));
+        }
+    }
+
+    private String listOfAccessModifiers() {
+        StringBuilder sb = new StringBuilder();
+        int i = 0;
+        for (AccessModifier am : AccessModifier.values()) {
+            if (i > 0) {
+                sb.append(",");
+            }
+            sb.append(am.toString());
+            i++;
+        }
+        return sb.toString();
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/cmp/ClassComparator.java b/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
index b600b13..6e8693d 100644
--- a/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/ClassComparator.java
@@ -1,77 +1,77 @@
-package japicmp.cmp;
-
-import com.google.common.base.Optional;
-import japicmp.model.*;
-import japicmp.util.ModifierHelper;
-import japicmp.util.SignatureParser;
-import javassist.CtClass;
-import javassist.CtMethod;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ClassComparator {
-    private final JarArchiveComparatorOptions options;
-
-    public ClassComparator(JarArchiveComparatorOptions options) {
-        this.options = options;
-    }
-
-    public void compare(JApiClass jApiClass) {
-        Map<String, CtMethod> oldMethodsMap = createMethodMap(jApiClass.getOldClass());
-        Map<String, CtMethod> newMethodsMap = createMethodMap(jApiClass.getNewClass());
-        sortMethodsIntoLists(oldMethodsMap, newMethodsMap, jApiClass);
-    }
-
-    private void sortMethodsIntoLists(Map<String, CtMethod> oldMethodsMap, Map<String, CtMethod> newMethodsMap, JApiClass jApiClass) {
-        SignatureParser signatureParser = new SignatureParser();
-        for (CtMethod ctMethod : oldMethodsMap.values()) {
-            String longName = ctMethod.getLongName();
-            signatureParser.parse(ctMethod.getSignature());
-            CtMethod foundMethod = newMethodsMap.get(longName);
-            if (foundMethod == null) {
-                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.REMOVED, Optional.of(ctMethod), Optional.<CtMethod>absent(), signatureParser.getReturnType(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())), Optional.<AccessModifier>absent());
-                addParametersToMethod(signatureParser, jApiMethod);
-                jApiClass.addMethod(jApiMethod);
-                if(jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-                    jApiClass.setChangeStatus(JApiChangeStatus.MODIFIED);
-                }
-            } else {
-                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.UNCHANGED, Optional.of(ctMethod), Optional.of(foundMethod), signatureParser.getReturnType(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())), Optional.of(ModifierHelper.translateToModifierLevel(foundMethod.getModifiers())));
-                addParametersToMethod(signatureParser, jApiMethod);
-                jApiClass.addMethod(jApiMethod);
-            }
-        }
-        for (CtMethod ctMethod : newMethodsMap.values()) {
-            String longName = ctMethod.getLongName();
-            signatureParser.parse(ctMethod.getSignature());
-            CtMethod foundMethod = oldMethodsMap.get(longName);
-            if (foundMethod == null) {
-                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.NEW, Optional.<CtMethod>absent(), Optional.of(ctMethod), signatureParser.getReturnType(), Optional.<AccessModifier>absent(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())));
-                addParametersToMethod(signatureParser, jApiMethod);
-                jApiClass.addMethod(jApiMethod);
-                if(jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-                    jApiClass.setChangeStatus(JApiChangeStatus.MODIFIED);
-                }
-            }
-        }
-    }
-
-    private void addParametersToMethod(SignatureParser signatureParser, JApiMethod jApiMethod) {
-        for (String param : signatureParser.getParameters()) {
-            jApiMethod.addParameter(new JApiParameter(param));
-        }
-    }
-
-    private Map<String, CtMethod> createMethodMap(Optional<CtClass> ctClass) {
-        Map<String, CtMethod> methods = new HashMap<String, CtMethod>();
-        if (ctClass.isPresent()) {
-            for (CtMethod ctMethod : ctClass.get().getDeclaredMethods()) {
-                if(ModifierHelper.matchesModifierLevel(ctMethod.getModifiers(), options.getModifierLevel())) {
-                    methods.put(ctMethod.getLongName(), ctMethod);
-                }
-            }
-        }
-        return methods;
-    }
-}
+package japicmp.cmp;
+
+import com.google.common.base.Optional;
+import japicmp.model.*;
+import japicmp.util.ModifierHelper;
+import japicmp.util.SignatureParser;
+import javassist.CtClass;
+import javassist.CtMethod;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ClassComparator {
+    private final JarArchiveComparatorOptions options;
+
+    public ClassComparator(JarArchiveComparatorOptions options) {
+        this.options = options;
+    }
+
+    public void compare(JApiClass jApiClass) {
+        Map<String, CtMethod> oldMethodsMap = createMethodMap(jApiClass.getOldClass());
+        Map<String, CtMethod> newMethodsMap = createMethodMap(jApiClass.getNewClass());
+        sortMethodsIntoLists(oldMethodsMap, newMethodsMap, jApiClass);
+    }
+
+    private void sortMethodsIntoLists(Map<String, CtMethod> oldMethodsMap, Map<String, CtMethod> newMethodsMap, JApiClass jApiClass) {
+        SignatureParser signatureParser = new SignatureParser();
+        for (CtMethod ctMethod : oldMethodsMap.values()) {
+            String longName = ctMethod.getLongName();
+            signatureParser.parse(ctMethod.getSignature());
+            CtMethod foundMethod = newMethodsMap.get(longName);
+            if (foundMethod == null) {
+                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.REMOVED, Optional.of(ctMethod), Optional.<CtMethod>absent(), signatureParser.getReturnType(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())), Optional.<AccessModifier>absent());
+                addParametersToMethod(signatureParser, jApiMethod);
+                jApiClass.addMethod(jApiMethod);
+                if(jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+                    jApiClass.setChangeStatus(JApiChangeStatus.MODIFIED);
+                }
+            } else {
+                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.UNCHANGED, Optional.of(ctMethod), Optional.of(foundMethod), signatureParser.getReturnType(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())), Optional.of(ModifierHelper.translateToModifierLevel(foundMethod.getModifiers())));
+                addParametersToMethod(signatureParser, jApiMethod);
+                jApiClass.addMethod(jApiMethod);
+            }
+        }
+        for (CtMethod ctMethod : newMethodsMap.values()) {
+            String longName = ctMethod.getLongName();
+            signatureParser.parse(ctMethod.getSignature());
+            CtMethod foundMethod = oldMethodsMap.get(longName);
+            if (foundMethod == null) {
+                JApiMethod jApiMethod = new JApiMethod(ctMethod.getName(), JApiChangeStatus.NEW, Optional.<CtMethod>absent(), Optional.of(ctMethod), signatureParser.getReturnType(), Optional.<AccessModifier>absent(), Optional.of(ModifierHelper.translateToModifierLevel(ctMethod.getModifiers())));
+                addParametersToMethod(signatureParser, jApiMethod);
+                jApiClass.addMethod(jApiMethod);
+                if(jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+                    jApiClass.setChangeStatus(JApiChangeStatus.MODIFIED);
+                }
+            }
+        }
+    }
+
+    private void addParametersToMethod(SignatureParser signatureParser, JApiMethod jApiMethod) {
+        for (String param : signatureParser.getParameters()) {
+            jApiMethod.addParameter(new JApiParameter(param));
+        }
+    }
+
+    private Map<String, CtMethod> createMethodMap(Optional<CtClass> ctClass) {
+        Map<String, CtMethod> methods = new HashMap<String, CtMethod>();
+        if (ctClass.isPresent()) {
+            for (CtMethod ctMethod : ctClass.get().getDeclaredMethods()) {
+                if(ModifierHelper.matchesModifierLevel(ctMethod.getModifiers(), options.getModifierLevel())) {
+                    methods.put(ctMethod.getLongName(), ctMethod);
+                }
+            }
+        }
+        return methods;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java b/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
index bae4f86..188078f 100644
--- a/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/ClassesComparator.java
@@ -1,65 +1,65 @@
-package japicmp.cmp;
-
-import com.google.common.base.Optional;
-import japicmp.model.AccessModifier;
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import japicmp.util.ModifierHelper;
-import javassist.CtClass;
-
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-public class ClassesComparator {
-    private List<JApiClass> classes = new LinkedList<JApiClass>();
-
-    public void compare(List<CtClass> oldClassesArg, List<CtClass> newClassesArg) {
-        classes = new LinkedList<JApiClass>();
-        Map<String, CtClass> oldClassesMap = createClassMap(oldClassesArg);
-        Map<String, CtClass> newClassesMap = createClassMap(newClassesArg);
-        sortIntoLists(oldClassesMap, newClassesMap);
-    }
-
-    private void sortIntoLists(Map<String, CtClass> oldClassesMap, Map<String, CtClass> newClassesMap) {
-        for(CtClass ctClass : oldClassesMap.values()) {
-            CtClass foundClass = newClassesMap.get(ctClass.getName());
-            if(foundClass == null) {
-                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>of(ctClass), Optional.<CtClass>absent(), JApiChangeStatus.REMOVED, getType(ctClass), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers())), Optional.<AccessModifier>absent()));
-            } else {
-                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>of(ctClass), Optional.<CtClass>of(foundClass), JApiChangeStatus.UNCHANGED, getType(ctClass), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers())), Optional.of(ModifierHelper.translateToModifierLevel(foundClass.getModifiers()))));
-            }
-        }
-        for(CtClass ctClass : newClassesMap.values()) {
-            CtClass foundClass = oldClassesMap.get(ctClass.getName());
-            if(foundClass == null) {
-                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>absent(), Optional.<CtClass>of(ctClass), JApiChangeStatus.NEW, getType(ctClass), Optional.<AccessModifier>absent(), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers()))));
-            }
-        }
-    }
-
-    private JApiClass.Type getType(CtClass ctClass) {
-        if(ctClass.isAnnotation()) {
-            return JApiClass.Type.ANNOTATION;
-        } else if(ctClass.isEnum()) {
-            return JApiClass.Type.ENUM;
-        } else if(ctClass.isInterface()) {
-            return JApiClass.Type.INTERFACE;
-        } else {
-            return JApiClass.Type.CLASS;
-        }
-    }
-
-    private Map<String, CtClass> createClassMap(List<CtClass> oldClassesArg) {
-        Map<String, CtClass> oldClassesMap = new HashMap<String, CtClass>();
-        for(CtClass ctClass : oldClassesArg) {
-            oldClassesMap.put(ctClass.getName(), ctClass);
-        }
-        return oldClassesMap;
-    }
-
-    public List<JApiClass> getClasses() {
-        return classes;
-    }
-}
+package japicmp.cmp;
+
+import com.google.common.base.Optional;
+import japicmp.model.AccessModifier;
+import japicmp.model.JApiChangeStatus;
+import japicmp.model.JApiClass;
+import japicmp.util.ModifierHelper;
+import javassist.CtClass;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class ClassesComparator {
+    private List<JApiClass> classes = new LinkedList<JApiClass>();
+
+    public void compare(List<CtClass> oldClassesArg, List<CtClass> newClassesArg) {
+        classes = new LinkedList<JApiClass>();
+        Map<String, CtClass> oldClassesMap = createClassMap(oldClassesArg);
+        Map<String, CtClass> newClassesMap = createClassMap(newClassesArg);
+        sortIntoLists(oldClassesMap, newClassesMap);
+    }
+
+    private void sortIntoLists(Map<String, CtClass> oldClassesMap, Map<String, CtClass> newClassesMap) {
+        for(CtClass ctClass : oldClassesMap.values()) {
+            CtClass foundClass = newClassesMap.get(ctClass.getName());
+            if(foundClass == null) {
+                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>of(ctClass), Optional.<CtClass>absent(), JApiChangeStatus.REMOVED, getType(ctClass), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers())), Optional.<AccessModifier>absent()));
+            } else {
+                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>of(ctClass), Optional.<CtClass>of(foundClass), JApiChangeStatus.UNCHANGED, getType(ctClass), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers())), Optional.of(ModifierHelper.translateToModifierLevel(foundClass.getModifiers()))));
+            }
+        }
+        for(CtClass ctClass : newClassesMap.values()) {
+            CtClass foundClass = oldClassesMap.get(ctClass.getName());
+            if(foundClass == null) {
+                classes.add(new JApiClass(ctClass.getName(), Optional.<CtClass>absent(), Optional.<CtClass>of(ctClass), JApiChangeStatus.NEW, getType(ctClass), Optional.<AccessModifier>absent(), Optional.of(ModifierHelper.translateToModifierLevel(ctClass.getModifiers()))));
+            }
+        }
+    }
+
+    private JApiClass.Type getType(CtClass ctClass) {
+        if(ctClass.isAnnotation()) {
+            return JApiClass.Type.ANNOTATION;
+        } else if(ctClass.isEnum()) {
+            return JApiClass.Type.ENUM;
+        } else if(ctClass.isInterface()) {
+            return JApiClass.Type.INTERFACE;
+        } else {
+            return JApiClass.Type.CLASS;
+        }
+    }
+
+    private Map<String, CtClass> createClassMap(List<CtClass> oldClassesArg) {
+        Map<String, CtClass> oldClassesMap = new HashMap<String, CtClass>();
+        for(CtClass ctClass : oldClassesArg) {
+            oldClassesMap.put(ctClass.getName(), ctClass);
+        }
+        return oldClassesMap;
+    }
+
+    public List<JApiClass> getClasses() {
+        return classes;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
index 1ac2478..0149b75 100644
--- a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
+++ b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparator.java
@@ -1,111 +1,111 @@
-package japicmp.cmp;
-
-import japicmp.config.PackageFilter;
-import japicmp.model.JApiClass;
-import japicmp.util.ModifierHelper;
-import javassist.ClassPool;
-import javassist.CtClass;
-import org.apache.log4j.Logger;
-
-import java.io.File;
-import java.util.Enumeration;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-public class JarArchiveComparator {
-    private static final Logger logger = Logger.getLogger(JarArchiveComparator.class);
-    private JarArchiveComparatorOptions options;
-
-    public JarArchiveComparator(JarArchiveComparatorOptions options) {
-        this.options = options;
-    }
-
-    public List<JApiClass> compare(File oldArchive, File newArchive) {
-        ClassPool classPool = new ClassPool();
-        try {
-            ClassesComparator classesComparator = compareClassLists(oldArchive, newArchive, classPool, options);
-            List<JApiClass> classList = classesComparator.getClasses();
-            compareClasses(classList);
-            return classList;
-        } catch (Exception e) {
-            System.err.println(String.format("Processing jar files '%s' and '%s' failed: %s.", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath(), e.getMessage()));
-            return new LinkedList<JApiClass>();
-        }
-    }
-
-    private void compareClasses(List<JApiClass> classList) {
-        for (JApiClass jApiClass : classList) {
-            ClassComparator classComparator = new ClassComparator(options);
-            classComparator.compare(jApiClass);
-        }
-    }
-
-    private ClassesComparator compareClassLists(File oldArchive, File newArchive, ClassPool classPool, JarArchiveComparatorOptions options) throws Exception {
-        List<CtClass> oldClasses = createListOfCtClasses(oldArchive, classPool, options);
-        List<CtClass> newClasses = createListOfCtClasses(newArchive, classPool, options);
-        ClassesComparator classesComparator = new ClassesComparator();
-        classesComparator.compare(oldClasses, newClasses);
-        if (logger.isDebugEnabled()) {
-            for (JApiClass jApiClass : classesComparator.getClasses()) {
-                logger.debug(jApiClass);
-            }
-        }
-        return classesComparator;
-    }
-
-    private List<CtClass> createListOfCtClasses(File archive, ClassPool classPool, JarArchiveComparatorOptions options) throws Exception {
-        List<CtClass> classes = new LinkedList<CtClass>();
-        JarFile oldJar = null;
-        try {
-            oldJar = new JarFile(archive);
-            Enumeration<JarEntry> entryEnumeration = oldJar.entries();
-            while (entryEnumeration.hasMoreElements()) {
-                JarEntry jarEntry = entryEnumeration.nextElement();
-                String name = jarEntry.getName();
-                if (name.endsWith(".class")) {
-                    CtClass ctClass = null;
-                    try {
-                        ctClass = classPool.makeClass(oldJar.getInputStream(jarEntry));
-                    } catch (Exception e) {
-                        logger.error(String.format("Failed to load file from jar '%s' as class file: %s.", name, e.getMessage()));
-                        throw e;
-                    }
-                    if (ModifierHelper.matchesModifierLevel(ctClass.getModifiers(), options.getModifierLevel()) && packageMatches(options, ctClass)) {
-                        classes.add(ctClass);
-                    }
-                    if (logger.isDebugEnabled()) {
-                        logger.debug(String.format("Adding class '%s' with jar name '%s' to list.", ctClass.getName(), name));
-                    }
-                } else {
-                    logger.debug(String.format("Skipping file '%s' because filename does not end with '.class'.", name));
-                }
-            }
-        } finally {
-            if (oldJar != null) {
-                oldJar.close();
-            }
-        }
-        return classes;
-    }
-
-    private boolean packageMatches(JarArchiveComparatorOptions options, CtClass ctClass) {
-        String packageName = ctClass.getPackageName();
-        for (PackageFilter packageFilter : options.getPackagesInclude()) {
-            if (packageFilter.matches(packageName)) {
-                return true;
-            }
-        }
-        for (PackageFilter packageFilter : options.getPackagesExclude()) {
-            if (packageFilter.matches(packageName)) {
-                return false;
-            }
-        }
-        int noInclude = options.getPackagesInclude().size();
-        if (noInclude > 0) {
-            return false;
-        }
-        return true;
-    }
-}
+package japicmp.cmp;
+
+import japicmp.config.PackageFilter;
+import japicmp.model.JApiClass;
+import japicmp.util.ModifierHelper;
+import javassist.ClassPool;
+import javassist.CtClass;
+import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+public class JarArchiveComparator {
+    private static final Logger logger = Logger.getLogger(JarArchiveComparator.class);
+    private JarArchiveComparatorOptions options;
+
+    public JarArchiveComparator(JarArchiveComparatorOptions options) {
+        this.options = options;
+    }
+
+    public List<JApiClass> compare(File oldArchive, File newArchive) {
+        ClassPool classPool = new ClassPool();
+        try {
+            ClassesComparator classesComparator = compareClassLists(oldArchive, newArchive, classPool, options);
+            List<JApiClass> classList = classesComparator.getClasses();
+            compareClasses(classList);
+            return classList;
+        } catch (Exception e) {
+            System.err.println(String.format("Processing jar files '%s' and '%s' failed: %s.", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath(), e.getMessage()));
+            return new LinkedList<JApiClass>();
+        }
+    }
+
+    private void compareClasses(List<JApiClass> classList) {
+        for (JApiClass jApiClass : classList) {
+            ClassComparator classComparator = new ClassComparator(options);
+            classComparator.compare(jApiClass);
+        }
+    }
+
+    private ClassesComparator compareClassLists(File oldArchive, File newArchive, ClassPool classPool, JarArchiveComparatorOptions options) throws Exception {
+        List<CtClass> oldClasses = createListOfCtClasses(oldArchive, classPool, options);
+        List<CtClass> newClasses = createListOfCtClasses(newArchive, classPool, options);
+        ClassesComparator classesComparator = new ClassesComparator();
+        classesComparator.compare(oldClasses, newClasses);
+        if (logger.isDebugEnabled()) {
+            for (JApiClass jApiClass : classesComparator.getClasses()) {
+                logger.debug(jApiClass);
+            }
+        }
+        return classesComparator;
+    }
+
+    private List<CtClass> createListOfCtClasses(File archive, ClassPool classPool, JarArchiveComparatorOptions options) throws Exception {
+        List<CtClass> classes = new LinkedList<CtClass>();
+        JarFile oldJar = null;
+        try {
+            oldJar = new JarFile(archive);
+            Enumeration<JarEntry> entryEnumeration = oldJar.entries();
+            while (entryEnumeration.hasMoreElements()) {
+                JarEntry jarEntry = entryEnumeration.nextElement();
+                String name = jarEntry.getName();
+                if (name.endsWith(".class")) {
+                    CtClass ctClass = null;
+                    try {
+                        ctClass = classPool.makeClass(oldJar.getInputStream(jarEntry));
+                    } catch (Exception e) {
+                        logger.error(String.format("Failed to load file from jar '%s' as class file: %s.", name, e.getMessage()));
+                        throw e;
+                    }
+                    if (ModifierHelper.matchesModifierLevel(ctClass.getModifiers(), options.getModifierLevel()) && packageMatches(options, ctClass)) {
+                        classes.add(ctClass);
+                    }
+                    if (logger.isDebugEnabled()) {
+                        logger.debug(String.format("Adding class '%s' with jar name '%s' to list.", ctClass.getName(), name));
+                    }
+                } else {
+                    logger.debug(String.format("Skipping file '%s' because filename does not end with '.class'.", name));
+                }
+            }
+        } finally {
+            if (oldJar != null) {
+                oldJar.close();
+            }
+        }
+        return classes;
+    }
+
+    private boolean packageMatches(JarArchiveComparatorOptions options, CtClass ctClass) {
+        String packageName = ctClass.getPackageName();
+        for (PackageFilter packageFilter : options.getPackagesInclude()) {
+            if (packageFilter.matches(packageName)) {
+                return true;
+            }
+        }
+        for (PackageFilter packageFilter : options.getPackagesExclude()) {
+            if (packageFilter.matches(packageName)) {
+                return false;
+            }
+        }
+        int noInclude = options.getPackagesInclude().size();
+        if (noInclude > 0) {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
index ff69634..e1d656a 100644
--- a/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
+++ b/japicmp/src/main/java/japicmp/cmp/JarArchiveComparatorOptions.java
@@ -1,29 +1,29 @@
-package japicmp.cmp;
-
-import japicmp.config.PackageFilter;
-import japicmp.model.AccessModifier;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public class JarArchiveComparatorOptions {
-    private List<PackageFilter> packagesInclude = new LinkedList<PackageFilter>();
-    private List<PackageFilter> packagesExclude = new LinkedList<PackageFilter>();
-    private AccessModifier modifierLevel = AccessModifier.PUBLIC;
-
-    public List<PackageFilter> getPackagesExclude() {
-        return packagesExclude;
-    }
-
-    public List<PackageFilter> getPackagesInclude() {
-        return packagesInclude;
-    }
-
-    public AccessModifier getModifierLevel() {
-        return modifierLevel;
-    }
-
-    public void setModifierLevel(AccessModifier modifierLevel) {
-        this.modifierLevel = modifierLevel;
-    }
-}
+package japicmp.cmp;
+
+import japicmp.config.PackageFilter;
+import japicmp.model.AccessModifier;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class JarArchiveComparatorOptions {
+    private List<PackageFilter> packagesInclude = new LinkedList<PackageFilter>();
+    private List<PackageFilter> packagesExclude = new LinkedList<PackageFilter>();
+    private AccessModifier modifierLevel = AccessModifier.PUBLIC;
+
+    public List<PackageFilter> getPackagesExclude() {
+        return packagesExclude;
+    }
+
+    public List<PackageFilter> getPackagesInclude() {
+        return packagesInclude;
+    }
+
+    public AccessModifier getModifierLevel() {
+        return modifierLevel;
+    }
+
+    public void setModifierLevel(AccessModifier modifierLevel) {
+        this.modifierLevel = modifierLevel;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/config/Options.java b/japicmp/src/main/java/japicmp/config/Options.java
index 09414e6..8cfc975 100644
--- a/japicmp/src/main/java/japicmp/config/Options.java
+++ b/japicmp/src/main/java/japicmp/config/Options.java
@@ -1,65 +1,65 @@
-package japicmp.config;
-
-import com.google.common.base.Optional;
-import japicmp.model.AccessModifier;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public class Options {
-    private String oldArchive;
-    private String newArchive;
-    private boolean outputOnlyModifications = false;
-    private Optional<String> xmlOutputFile = Optional.<String>absent();
-    private AccessModifier accessModifier = AccessModifier.PUBLIC;
-    private List<PackageFilter> packagesInclude = new LinkedList<PackageFilter>();
-    private List<PackageFilter> packagesExclude = new LinkedList<PackageFilter>();
-
-    public String getNewArchive() {
-        return newArchive;
-    }
-
-    public void setNewArchive(String newArchive) {
-        this.newArchive = newArchive;
-    }
-
-    public String getOldArchive() {
-        return oldArchive;
-    }
-
-    public void setOldArchive(String oldArchive) {
-        this.oldArchive = oldArchive;
-    }
-
-    public boolean isOutputOnlyModifications() {
-        return outputOnlyModifications;
-    }
-
-    public void setOutputOnlyModifications(boolean outputOnlyModifications) {
-        this.outputOnlyModifications = outputOnlyModifications;
-    }
-
-    public Optional<String> getXmlOutputFile() {
-        return xmlOutputFile;
-    }
-
-    public void setXmlOutputFile(Optional<String> xmlOutputFile) {
-        this.xmlOutputFile = xmlOutputFile;
-    }
-
-    public void setAccessModifier(AccessModifier accessModifier) {
-        this.accessModifier = accessModifier;
-    }
-
-    public AccessModifier getAccessModifier() {
-        return accessModifier;
-    }
-
-    public List<PackageFilter> getPackagesInclude() {
-        return packagesInclude;
-    }
-
-    public List<PackageFilter> getPackagesExclude() {
-        return packagesExclude;
-    }
-}
+package japicmp.config;
+
+import com.google.common.base.Optional;
+import japicmp.model.AccessModifier;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class Options {
+    private String oldArchive;
+    private String newArchive;
+    private boolean outputOnlyModifications = false;
+    private Optional<String> xmlOutputFile = Optional.<String>absent();
+    private AccessModifier accessModifier = AccessModifier.PUBLIC;
+    private List<PackageFilter> packagesInclude = new LinkedList<PackageFilter>();
+    private List<PackageFilter> packagesExclude = new LinkedList<PackageFilter>();
+
+    public String getNewArchive() {
+        return newArchive;
+    }
+
+    public void setNewArchive(String newArchive) {
+        this.newArchive = newArchive;
+    }
+
+    public String getOldArchive() {
+        return oldArchive;
+    }
+
+    public void setOldArchive(String oldArchive) {
+        this.oldArchive = oldArchive;
+    }
+
+    public boolean isOutputOnlyModifications() {
+        return outputOnlyModifications;
+    }
+
+    public void setOutputOnlyModifications(boolean outputOnlyModifications) {
+        this.outputOnlyModifications = outputOnlyModifications;
+    }
+
+    public Optional<String> getXmlOutputFile() {
+        return xmlOutputFile;
+    }
+
+    public void setXmlOutputFile(Optional<String> xmlOutputFile) {
+        this.xmlOutputFile = xmlOutputFile;
+    }
+
+    public void setAccessModifier(AccessModifier accessModifier) {
+        this.accessModifier = accessModifier;
+    }
+
+    public AccessModifier getAccessModifier() {
+        return accessModifier;
+    }
+
+    public List<PackageFilter> getPackagesInclude() {
+        return packagesInclude;
+    }
+
+    public List<PackageFilter> getPackagesExclude() {
+        return packagesExclude;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/config/PackageFilter.java b/japicmp/src/main/java/japicmp/config/PackageFilter.java
index add49b2..63e39d3 100644
--- a/japicmp/src/main/java/japicmp/config/PackageFilter.java
+++ b/japicmp/src/main/java/japicmp/config/PackageFilter.java
@@ -1,18 +1,18 @@
-package japicmp.config;
-
-import java.util.regex.Pattern;
-
-public class PackageFilter {
-    private final Pattern pattern;
-
-    public PackageFilter(String packageName) {
-        String regEx = packageName.replace(".", "\\.");
-        regEx = regEx.replace("*", ".*");
-        regEx = regEx + "(\\.[^\\.]+)*";
-        pattern = Pattern.compile(regEx);
-    }
-
-    public boolean matches(String str) {
-        return pattern.matcher(str).matches();
-    }
-}
+package japicmp.config;
+
+import java.util.regex.Pattern;
+
+public class PackageFilter {
+    private final Pattern pattern;
+
+    public PackageFilter(String packageName) {
+        String regEx = packageName.replace(".", "\\.");
+        regEx = regEx.replace("*", ".*");
+        regEx = regEx + "(\\.[^\\.]+)*";
+        pattern = Pattern.compile(regEx);
+    }
+
+    public boolean matches(String str) {
+        return pattern.matcher(str).matches();
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/exception/JApiCmpException.java b/japicmp/src/main/java/japicmp/exception/JApiCmpException.java
index 4bc8ae8..4041608 100644
--- a/japicmp/src/main/java/japicmp/exception/JApiCmpException.java
+++ b/japicmp/src/main/java/japicmp/exception/JApiCmpException.java
@@ -1,22 +1,22 @@
-package japicmp.exception;
-
-public class JApiCmpException extends RuntimeException {
-    private final Reason reason;
-
-    public JApiCmpException(Reason reason) {
-        this.reason = reason;
-    }
-
-    public enum Reason {
-        IllegalArgument, NormalTermination
-    }
-
-    public JApiCmpException(Reason reason, String msg) {
-        super(msg);
-        this.reason = reason;
-    }
-
-    public Reason getReason() {
-        return reason;
-    }
-}
+package japicmp.exception;
+
+public class JApiCmpException extends RuntimeException {
+    private final Reason reason;
+
+    public JApiCmpException(Reason reason) {
+        this.reason = reason;
+    }
+
+    public enum Reason {
+        IllegalArgument, NormalTermination
+    }
+
+    public JApiCmpException(Reason reason, String msg) {
+        super(msg);
+        this.reason = reason;
+    }
+
+    public Reason getReason() {
+        return reason;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/model/AccessModifier.java b/japicmp/src/main/java/japicmp/model/AccessModifier.java
index 0e7fc64..d9422f2 100644
--- a/japicmp/src/main/java/japicmp/model/AccessModifier.java
+++ b/japicmp/src/main/java/japicmp/model/AccessModifier.java
@@ -1,15 +1,15 @@
-package japicmp.model;
-
-public enum AccessModifier {
-    PUBLIC(3), PACKAGE(2), PROTECTED(1), PRIVATE(0);
-
-    private int level;
-
-    AccessModifier(int level) {
-        this.level = level;
-    }
-
-    public int getLevel() {
-        return level;
-    }
-}
+package japicmp.model;
+
+public enum AccessModifier {
+    PUBLIC(3), PACKAGE(2), PROTECTED(1), PRIVATE(0);
+
+    private int level;
+
+    AccessModifier(int level) {
+        this.level = level;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/model/JApiChangeStatus.java b/japicmp/src/main/java/japicmp/model/JApiChangeStatus.java
index 8222e7c..7d031db 100644
--- a/japicmp/src/main/java/japicmp/model/JApiChangeStatus.java
+++ b/japicmp/src/main/java/japicmp/model/JApiChangeStatus.java
@@ -1,5 +1,5 @@
-package japicmp.model;
-
-public enum JApiChangeStatus {
-    NEW, REMOVED, UNCHANGED, MODIFIED;
-}
+package japicmp.model;
+
+public enum JApiChangeStatus {
+    NEW, REMOVED, UNCHANGED, MODIFIED;
+}
diff --git a/japicmp/src/main/java/japicmp/model/JApiClass.java b/japicmp/src/main/java/japicmp/model/JApiClass.java
index 46c2eaf..2554a55 100644
--- a/japicmp/src/main/java/japicmp/model/JApiClass.java
+++ b/japicmp/src/main/java/japicmp/model/JApiClass.java
@@ -1,103 +1,103 @@
-package japicmp.model;
-
-import com.google.common.base.Optional;
-import javassist.CtClass;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import java.util.LinkedList;
-import java.util.List;
-
-public class JApiClass {
-    private final String fullyQualifiedName;
-    private final Optional<CtClass> oldClass;
-    private final Optional<CtClass> newClass;
-    private List<JApiMethod> methods = new LinkedList<JApiMethod>();
-    private JApiChangeStatus changeStatus;
-    private final Type type;
-    private Optional<AccessModifier> accessModifierOld;
-    private Optional<AccessModifier> accessModifierNew;
-
-    public enum Type {
-        ANNOTATION, INTERFACE, CLASS, ENUM
-    }
-
-    public JApiClass(String fullyQualifiedName, Optional<CtClass> oldClass, Optional<CtClass> newClass, JApiChangeStatus changeStatus, Type type, Optional<AccessModifier> oldModifierLevel, Optional<AccessModifier> newModifierLevel) {
-        this.changeStatus = changeStatus;
-        this.fullyQualifiedName = fullyQualifiedName;
-        this.newClass = newClass;
-        this.oldClass = oldClass;
-        this.type = type;
-        this.accessModifierOld = oldModifierLevel;
-        this.accessModifierNew = newModifierLevel;
-    }
-
-    public void addMethod(JApiMethod jApiMethod) {
-        methods.add(jApiMethod);
-    }
-
-    @XmlAttribute
-    public JApiChangeStatus getChangeStatus() {
-        return changeStatus;
-    }
-
-    @XmlAttribute
-    public String getFullyQualifiedName() {
-        return fullyQualifiedName;
-    }
-
-    @XmlTransient
-    public Optional<CtClass> getNewClass() {
-        return newClass;
-    }
-
-    @XmlTransient
-    public Optional<CtClass> getOldClass() {
-        return oldClass;
-    }
-
-    public void setChangeStatus(JApiChangeStatus changeStatus) {
-        this.changeStatus = changeStatus;
-    }
-
-    @XmlElement(name = "method")
-    public List<JApiMethod> getMethods() {
-        return methods;
-    }
-
-    public void setMethods(List<JApiMethod> methods) {
-        this.methods = methods;
-    }
-
-    @XmlAttribute
-    public Type getType() {
-        return type;
-    }
-
-    @XmlAttribute(name = "accessModifierNew")
-    public String getAccessModifierNew() {
-        if(this.accessModifierNew.isPresent()) {
-            return this.accessModifierNew.get().toString();
-        }
-        return "n.a.";
-    }
-
-    @XmlAttribute(name = "accessModifierOld")
-    public String getAccessModifierOld() {
-        if(this.accessModifierOld.isPresent()) {
-            return this.accessModifierOld.get().toString();
-        }
-        return "n.a.";
-    }
-
-    @Override
-    public String toString() {
-        return "JApiClass{" +
-                "changeStatus=" + changeStatus +
-                ", fullyQualifiedName='" + fullyQualifiedName + '\'' +
-                ", oldClass=" + oldClass +
-                ", newClass=" + newClass +
-                '}';
-    }
-}
+package japicmp.model;
+
+import com.google.common.base.Optional;
+import javassist.CtClass;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import java.util.LinkedList;
+import java.util.List;
+
+public class JApiClass {
+    private final String fullyQualifiedName;
+    private final Optional<CtClass> oldClass;
+    private final Optional<CtClass> newClass;
+    private List<JApiMethod> methods = new LinkedList<JApiMethod>();
+    private JApiChangeStatus changeStatus;
+    private final Type type;
+    private Optional<AccessModifier> accessModifierOld;
+    private Optional<AccessModifier> accessModifierNew;
+
+    public enum Type {
+        ANNOTATION, INTERFACE, CLASS, ENUM
+    }
+
+    public JApiClass(String fullyQualifiedName, Optional<CtClass> oldClass, Optional<CtClass> newClass, JApiChangeStatus changeStatus, Type type, Optional<AccessModifier> oldModifierLevel, Optional<AccessModifier> newModifierLevel) {
+        this.changeStatus = changeStatus;
+        this.fullyQualifiedName = fullyQualifiedName;
+        this.newClass = newClass;
+        this.oldClass = oldClass;
+        this.type = type;
+        this.accessModifierOld = oldModifierLevel;
+        this.accessModifierNew = newModifierLevel;
+    }
+
+    public void addMethod(JApiMethod jApiMethod) {
+        methods.add(jApiMethod);
+    }
+
+    @XmlAttribute
+    public JApiChangeStatus getChangeStatus() {
+        return changeStatus;
+    }
+
+    @XmlAttribute
+    public String getFullyQualifiedName() {
+        return fullyQualifiedName;
+    }
+
+    @XmlTransient
+    public Optional<CtClass> getNewClass() {
+        return newClass;
+    }
+
+    @XmlTransient
+    public Optional<CtClass> getOldClass() {
+        return oldClass;
+    }
+
+    public void setChangeStatus(JApiChangeStatus changeStatus) {
+        this.changeStatus = changeStatus;
+    }
+
+    @XmlElement(name = "method")
+    public List<JApiMethod> getMethods() {
+        return methods;
+    }
+
+    public void setMethods(List<JApiMethod> methods) {
+        this.methods = methods;
+    }
+
+    @XmlAttribute
+    public Type getType() {
+        return type;
+    }
+
+    @XmlAttribute(name = "accessModifierNew")
+    public String getAccessModifierNew() {
+        if(this.accessModifierNew.isPresent()) {
+            return this.accessModifierNew.get().toString();
+        }
+        return "n.a.";
+    }
+
+    @XmlAttribute(name = "accessModifierOld")
+    public String getAccessModifierOld() {
+        if(this.accessModifierOld.isPresent()) {
+            return this.accessModifierOld.get().toString();
+        }
+        return "n.a.";
+    }
+
+    @Override
+    public String toString() {
+        return "JApiClass{" +
+                "changeStatus=" + changeStatus +
+                ", fullyQualifiedName='" + fullyQualifiedName + '\'' +
+                ", oldClass=" + oldClass +
+                ", newClass=" + newClass +
+                '}';
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/model/JApiMethod.java b/japicmp/src/main/java/japicmp/model/JApiMethod.java
index eff5662..9b87b69 100644
--- a/japicmp/src/main/java/japicmp/model/JApiMethod.java
+++ b/japicmp/src/main/java/japicmp/model/JApiMethod.java
@@ -1,81 +1,81 @@
-package japicmp.model;
-
-import com.google.common.base.Optional;
-import javassist.CtMethod;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import java.util.LinkedList;
-import java.util.List;
-
-public class JApiMethod {
-    private final String name;
-    private final JApiChangeStatus changeStatus;
-    private final Optional<CtMethod> oldMethod;
-    private final Optional<CtMethod> newMethod;
-    private final String returnType;
-    private Optional<AccessModifier> accessModifierOld;
-    private Optional<AccessModifier> accessModifierNew;
-    private final List<JApiParameter> parameters = new LinkedList<JApiParameter>();
-
-    public JApiMethod(String name, JApiChangeStatus changeStatus, Optional<CtMethod> oldClass, Optional<CtMethod> newClass, String returnType, Optional<AccessModifier> oldModifierLevel, Optional<AccessModifier> newModifierLevel) {
-        this.name = name;
-        this.changeStatus = changeStatus;
-        this.oldMethod = oldClass;
-        this.newMethod = newClass;
-        this.returnType = returnType;
-        this.accessModifierOld = oldModifierLevel;
-        this.accessModifierNew = newModifierLevel;
-    }
-
-    @XmlAttribute
-    public JApiChangeStatus getChangeStatus() {
-        return changeStatus;
-    }
-
-    @XmlAttribute
-    public String getName() {
-        return name;
-    }
-
-    @XmlTransient
-    public Optional<CtMethod> getNewMethod() {
-        return newMethod;
-    }
-
-    @XmlTransient
-    public Optional<CtMethod> getOldMethod() {
-        return oldMethod;
-    }
-
-    @XmlAttribute
-    public String getReturnType() {
-        return returnType;
-    }
-
-    @XmlElement(name = "parameter")
-    public List<JApiParameter> getParameters() {
-        return parameters;
-    }
-
-    public void addParameter(JApiParameter jApiParameter) {
-        parameters.add(jApiParameter);
-    }
-
-    @XmlAttribute(name = "accessModifierNew")
-    public String getAccessModifierNew() {
-        if(this.accessModifierNew.isPresent()) {
-            return this.accessModifierNew.get().toString();
-        }
-        return "n.a.";
-    }
-
-    @XmlAttribute(name = "accessModifierOld")
-    public String getAccessModifierOld() {
-        if(this.accessModifierOld.isPresent()) {
-            return this.accessModifierOld.get().toString();
-        }
-        return "n.a.";
-    }
-}
+package japicmp.model;
+
+import com.google.common.base.Optional;
+import javassist.CtMethod;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import java.util.LinkedList;
+import java.util.List;
+
+public class JApiMethod {
+    private final String name;
+    private final JApiChangeStatus changeStatus;
+    private final Optional<CtMethod> oldMethod;
+    private final Optional<CtMethod> newMethod;
+    private final String returnType;
+    private Optional<AccessModifier> accessModifierOld;
+    private Optional<AccessModifier> accessModifierNew;
+    private final List<JApiParameter> parameters = new LinkedList<JApiParameter>();
+
+    public JApiMethod(String name, JApiChangeStatus changeStatus, Optional<CtMethod> oldClass, Optional<CtMethod> newClass, String returnType, Optional<AccessModifier> oldModifierLevel, Optional<AccessModifier> newModifierLevel) {
+        this.name = name;
+        this.changeStatus = changeStatus;
+        this.oldMethod = oldClass;
+        this.newMethod = newClass;
+        this.returnType = returnType;
+        this.accessModifierOld = oldModifierLevel;
+        this.accessModifierNew = newModifierLevel;
+    }
+
+    @XmlAttribute
+    public JApiChangeStatus getChangeStatus() {
+        return changeStatus;
+    }
+
+    @XmlAttribute
+    public String getName() {
+        return name;
+    }
+
+    @XmlTransient
+    public Optional<CtMethod> getNewMethod() {
+        return newMethod;
+    }
+
+    @XmlTransient
+    public Optional<CtMethod> getOldMethod() {
+        return oldMethod;
+    }
+
+    @XmlAttribute
+    public String getReturnType() {
+        return returnType;
+    }
+
+    @XmlElement(name = "parameter")
+    public List<JApiParameter> getParameters() {
+        return parameters;
+    }
+
+    public void addParameter(JApiParameter jApiParameter) {
+        parameters.add(jApiParameter);
+    }
+
+    @XmlAttribute(name = "accessModifierNew")
+    public String getAccessModifierNew() {
+        if(this.accessModifierNew.isPresent()) {
+            return this.accessModifierNew.get().toString();
+        }
+        return "n.a.";
+    }
+
+    @XmlAttribute(name = "accessModifierOld")
+    public String getAccessModifierOld() {
+        if(this.accessModifierOld.isPresent()) {
+            return this.accessModifierOld.get().toString();
+        }
+        return "n.a.";
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/model/JApiParameter.java b/japicmp/src/main/java/japicmp/model/JApiParameter.java
index 56f2a81..81f6914 100644
--- a/japicmp/src/main/java/japicmp/model/JApiParameter.java
+++ b/japicmp/src/main/java/japicmp/model/JApiParameter.java
@@ -1,16 +1,16 @@
-package japicmp.model;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-public class JApiParameter {
-    private final String type;
-
-    public JApiParameter(String type) {
-        this.type = type;
-    }
-
-    @XmlAttribute
-    public String getType() {
-        return type;
-    }
-}
+package japicmp.model;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public class JApiParameter {
+    private final String type;
+
+    public JApiParameter(String type) {
+        this.type = type;
+    }
+
+    @XmlAttribute
+    public String getType() {
+        return type;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/output/OutputTransformer.java b/japicmp/src/main/java/japicmp/output/OutputTransformer.java
index 5b31b27..06d3c26 100644
--- a/japicmp/src/main/java/japicmp/output/OutputTransformer.java
+++ b/japicmp/src/main/java/japicmp/output/OutputTransformer.java
@@ -1,55 +1,55 @@
-package japicmp.output;
-
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import japicmp.model.JApiMethod;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-
-public class OutputTransformer {
-
-    private OutputTransformer() {
-
-    }
-
-    public static void removeUnchanged(List<JApiClass> jApiClasses) {
-        List<JApiClass> classesToRemove = new LinkedList<JApiClass>();
-        for (JApiClass jApiClass : jApiClasses) {
-            if (jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-                classesToRemove.add(jApiClass);
-            } else {
-                List<JApiMethod> methodsToRemove = new LinkedList<JApiMethod>();
-                List<JApiMethod> methods = jApiClass.getMethods();
-                for (JApiMethod jApiMethod : methods) {
-                    if (jApiMethod.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-                        methodsToRemove.add(jApiMethod);
-                    }
-                }
-                for (JApiMethod jApiMethod : methodsToRemove) {
-                    methods.remove(jApiMethod);
-                }
-            }
-        }
-        for (JApiClass jApiClass : classesToRemove) {
-            jApiClasses.remove(jApiClass);
-        }
-    }
-
-    public static void sortClassesAndMethods(List<JApiClass> jApiClasses) {
-        Collections.sort(jApiClasses, new Comparator<JApiClass>() {
-            public int compare(JApiClass o1, JApiClass o2) {
-                return o1.getFullyQualifiedName().compareToIgnoreCase(o2.getFullyQualifiedName());
-            }
-        });
-        for(JApiClass jApiClass : jApiClasses) {
-            Collections.sort(jApiClass.getMethods(), new Comparator<JApiMethod>() {
-                public int compare(JApiMethod o1, JApiMethod o2) {
-                    return o1.getName().compareToIgnoreCase(o2.getName());
-                }
-            });
-        }
-    }
-}
+package japicmp.output;
+
+import japicmp.model.JApiChangeStatus;
+import japicmp.model.JApiClass;
+import japicmp.model.JApiMethod;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+
+public class OutputTransformer {
+
+    private OutputTransformer() {
+
+    }
+
+    public static void removeUnchanged(List<JApiClass> jApiClasses) {
+        List<JApiClass> classesToRemove = new LinkedList<JApiClass>();
+        for (JApiClass jApiClass : jApiClasses) {
+            if (jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+                classesToRemove.add(jApiClass);
+            } else {
+                List<JApiMethod> methodsToRemove = new LinkedList<JApiMethod>();
+                List<JApiMethod> methods = jApiClass.getMethods();
+                for (JApiMethod jApiMethod : methods) {
+                    if (jApiMethod.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+                        methodsToRemove.add(jApiMethod);
+                    }
+                }
+                for (JApiMethod jApiMethod : methodsToRemove) {
+                    methods.remove(jApiMethod);
+                }
+            }
+        }
+        for (JApiClass jApiClass : classesToRemove) {
+            jApiClasses.remove(jApiClass);
+        }
+    }
+
+    public static void sortClassesAndMethods(List<JApiClass> jApiClasses) {
+        Collections.sort(jApiClasses, new Comparator<JApiClass>() {
+            public int compare(JApiClass o1, JApiClass o2) {
+                return o1.getFullyQualifiedName().compareToIgnoreCase(o2.getFullyQualifiedName());
+            }
+        });
+        for(JApiClass jApiClass : jApiClasses) {
+            Collections.sort(jApiClass.getMethods(), new Comparator<JApiMethod>() {
+                public int compare(JApiMethod o1, JApiMethod o2) {
+                    return o1.getName().compareToIgnoreCase(o2.getName());
+                }
+            });
+        }
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java b/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java
index b981804..253ee9a 100644
--- a/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java
+++ b/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java
@@ -1,71 +1,71 @@
-package japicmp.output.stdout;
-
-import japicmp.config.Options;
-import japicmp.model.JApiChangeStatus;
-import japicmp.model.JApiClass;
-import japicmp.model.JApiMethod;
-import japicmp.model.JApiParameter;
-import japicmp.output.OutputTransformer;
-
-import java.io.File;
-import java.util.List;
-
-public class StdoutOutputGenerator {
-
-    public String generate(File oldArchive, File newArchive, List<JApiClass> jApiClasses, Options options) {
-        if (options.isOutputOnlyModifications()) {
-            OutputTransformer.removeUnchanged(jApiClasses);
-        }
-        StringBuilder sb = new StringBuilder();
-        sb.append(String.format("Comparing %s with %s:%n", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath()));
-        for (JApiClass jApiClass : jApiClasses) {
-            processClass(sb, jApiClass);
-            processMethods(sb, jApiClass);
-        }
-        return sb.toString();
-    }
-
-    private void processMethods(StringBuilder sb, JApiClass jApiClass) {
-        List<JApiMethod> methods = jApiClass.getMethods();
-        for (JApiMethod jApiMethod : methods) {
-            if (jApiMethod.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-                appendMethod(sb, "===", jApiMethod);
-            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.NEW) {
-                appendMethod(sb, "+++", jApiMethod);
-            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.REMOVED) {
-                appendMethod(sb, "---", jApiMethod);
-            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.MODIFIED) {
-                appendMethod(sb, "***", jApiMethod);
-            }
-        }
-    }
-
-    private void processClass(StringBuilder sb, JApiClass jApiClass) {
-        if (jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
-            appendClass(sb, "===", jApiClass);
-        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.NEW) {
-            appendClass(sb, "+++", jApiClass);
-        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.REMOVED) {
-            appendClass(sb, "---", jApiClass);
-        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.MODIFIED) {
-            appendClass(sb, "***", jApiClass);
-        }
-    }
-
-    private void appendMethod(StringBuilder sb, String signs, JApiMethod jApiMethod) {
-        sb.append("\t" + signs + " " + jApiMethod.getChangeStatus() + " METHOD " + jApiMethod.getName() + "(");
-        int paramCount = 0;
-        for (JApiParameter jApiParameter : jApiMethod.getParameters()) {
-            if (paramCount > 0) {
-                sb.append(", ");
-            }
-            sb.append(jApiParameter.getType());
-            paramCount++;
-        }
-        sb.append(")\n");
-    }
-
-    private void appendClass(StringBuilder sb, String signs, JApiClass jApiClass) {
-        sb.append(signs + " " + jApiClass.getChangeStatus() + " " + jApiClass.getType() + " " + jApiClass.getFullyQualifiedName() + "\n");
-    }
-}
+package japicmp.output.stdout;
+
+import japicmp.config.Options;
+import japicmp.model.JApiChangeStatus;
+import japicmp.model.JApiClass;
+import japicmp.model.JApiMethod;
+import japicmp.model.JApiParameter;
+import japicmp.output.OutputTransformer;
+
+import java.io.File;
+import java.util.List;
+
+public class StdoutOutputGenerator {
+
+    public String generate(File oldArchive, File newArchive, List<JApiClass> jApiClasses, Options options) {
+        if (options.isOutputOnlyModifications()) {
+            OutputTransformer.removeUnchanged(jApiClasses);
+        }
+        StringBuilder sb = new StringBuilder();
+        sb.append(String.format("Comparing %s with %s:%n", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath()));
+        for (JApiClass jApiClass : jApiClasses) {
+            processClass(sb, jApiClass);
+            processMethods(sb, jApiClass);
+        }
+        return sb.toString();
+    }
+
+    private void processMethods(StringBuilder sb, JApiClass jApiClass) {
+        List<JApiMethod> methods = jApiClass.getMethods();
+        for (JApiMethod jApiMethod : methods) {
+            if (jApiMethod.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+                appendMethod(sb, "===", jApiMethod);
+            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.NEW) {
+                appendMethod(sb, "+++", jApiMethod);
+            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.REMOVED) {
+                appendMethod(sb, "---", jApiMethod);
+            } else if (jApiMethod.getChangeStatus() == JApiChangeStatus.MODIFIED) {
+                appendMethod(sb, "***", jApiMethod);
+            }
+        }
+    }
+
+    private void processClass(StringBuilder sb, JApiClass jApiClass) {
+        if (jApiClass.getChangeStatus() == JApiChangeStatus.UNCHANGED) {
+            appendClass(sb, "===", jApiClass);
+        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.NEW) {
+            appendClass(sb, "+++", jApiClass);
+        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.REMOVED) {
+            appendClass(sb, "---", jApiClass);
+        } else if (jApiClass.getChangeStatus() == JApiChangeStatus.MODIFIED) {
+            appendClass(sb, "***", jApiClass);
+        }
+    }
+
+    private void appendMethod(StringBuilder sb, String signs, JApiMethod jApiMethod) {
+        sb.append("\t" + signs + " " + jApiMethod.getChangeStatus() + " METHOD " + jApiMethod.getName() + "(");
+        int paramCount = 0;
+        for (JApiParameter jApiParameter : jApiMethod.getParameters()) {
+            if (paramCount > 0) {
+                sb.append(", ");
+            }
+            sb.append(jApiParameter.getType());
+            paramCount++;
+        }
+        sb.append(")\n");
+    }
+
+    private void appendClass(StringBuilder sb, String signs, JApiClass jApiClass) {
+        sb.append(signs + " " + jApiClass.getChangeStatus() + " " + jApiClass.getType() + " " + jApiClass.getFullyQualifiedName() + "\n");
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/output/xml/XmlOutputGenerator.java b/japicmp/src/main/java/japicmp/output/xml/XmlOutputGenerator.java
index 939c6cb..de5b85d 100644
--- a/japicmp/src/main/java/japicmp/output/xml/XmlOutputGenerator.java
+++ b/japicmp/src/main/java/japicmp/output/xml/XmlOutputGenerator.java
@@ -1,24 +1,24 @@
-package japicmp.output.xml;
-
-import japicmp.config.Options;
-import japicmp.model.JApiClass;
-import japicmp.output.OutputTransformer;
-import japicmp.output.xml.model.JApiCmpXmlRoot;
-
-import javax.xml.bind.JAXB;
-import java.io.File;
-import java.util.List;
-
-public class XmlOutputGenerator {
-
-    public void generate(File oldArchive, File newArchive, List<JApiClass> jApiClasses, Options options) {
-        JApiCmpXmlRoot jApiCmpXmlRoot = new JApiCmpXmlRoot();
-        jApiCmpXmlRoot.setOldJar(oldArchive.getAbsolutePath());
-        jApiCmpXmlRoot.setNewJar(newArchive.getAbsolutePath());
-        jApiCmpXmlRoot.setClasses(jApiClasses);
-        if (options.isOutputOnlyModifications()) {
-            OutputTransformer.removeUnchanged(jApiClasses);
-        }
-        JAXB.marshal(jApiCmpXmlRoot, new File(options.getXmlOutputFile().get()));
-    }
-}
+package japicmp.output.xml;
+
+import japicmp.config.Options;
+import japicmp.model.JApiClass;
+import japicmp.output.OutputTransformer;
+import japicmp.output.xml.model.JApiCmpXmlRoot;
+
+import javax.xml.bind.JAXB;
+import java.io.File;
+import java.util.List;
+
+public class XmlOutputGenerator {
+
+    public void generate(File oldArchive, File newArchive, List<JApiClass> jApiClasses, Options options) {
+        JApiCmpXmlRoot jApiCmpXmlRoot = new JApiCmpXmlRoot();
+        jApiCmpXmlRoot.setOldJar(oldArchive.getAbsolutePath());
+        jApiCmpXmlRoot.setNewJar(newArchive.getAbsolutePath());
+        jApiCmpXmlRoot.setClasses(jApiClasses);
+        if (options.isOutputOnlyModifications()) {
+            OutputTransformer.removeUnchanged(jApiClasses);
+        }
+        JAXB.marshal(jApiCmpXmlRoot, new File(options.getXmlOutputFile().get()));
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/output/xml/model/JApiCmpXmlRoot.java b/japicmp/src/main/java/japicmp/output/xml/model/JApiCmpXmlRoot.java
index 77beafe..17319c9 100644
--- a/japicmp/src/main/java/japicmp/output/xml/model/JApiCmpXmlRoot.java
+++ b/japicmp/src/main/java/japicmp/output/xml/model/JApiCmpXmlRoot.java
@@ -1,43 +1,43 @@
-package japicmp.output.xml.model;
-
-import japicmp.model.JApiClass;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import java.util.LinkedList;
-import java.util.List;
-
-@XmlRootElement(name = "japicmp")
-public class JApiCmpXmlRoot {
-    private String oldJar = "";
-    private String newJar = "";
-    private List<JApiClass> classes = new LinkedList<JApiClass>();
-
-    @XmlElement(name = "class")
-    public List<JApiClass> getClasses() {
-        return classes;
-    }
-
-    public void setClasses(List<JApiClass> classes) {
-        this.classes = classes;
-    }
-
-    @XmlAttribute
-    public String getNewJar() {
-        return newJar;
-    }
-
-    public void setNewJar(String newJar) {
-        this.newJar = newJar;
-    }
-
-    @XmlAttribute
-    public String getOldJar() {
-        return oldJar;
-    }
-
-    public void setOldJar(String oldJar) {
-        this.oldJar = oldJar;
-    }
-}
+package japicmp.output.xml.model;
+
+import japicmp.model.JApiClass;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.LinkedList;
+import java.util.List;
+
+@XmlRootElement(name = "japicmp")
+public class JApiCmpXmlRoot {
+    private String oldJar = "";
+    private String newJar = "";
+    private List<JApiClass> classes = new LinkedList<JApiClass>();
+
+    @XmlElement(name = "class")
+    public List<JApiClass> getClasses() {
+        return classes;
+    }
+
+    public void setClasses(List<JApiClass> classes) {
+        this.classes = classes;
+    }
+
+    @XmlAttribute
+    public String getNewJar() {
+        return newJar;
+    }
+
+    public void setNewJar(String newJar) {
+        this.newJar = newJar;
+    }
+
+    @XmlAttribute
+    public String getOldJar() {
+        return oldJar;
+    }
+
+    public void setOldJar(String oldJar) {
+        this.oldJar = oldJar;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/util/ModifierHelper.java b/japicmp/src/main/java/japicmp/util/ModifierHelper.java
index d3f8e66..c23a01e 100644
--- a/japicmp/src/main/java/japicmp/util/ModifierHelper.java
+++ b/japicmp/src/main/java/japicmp/util/ModifierHelper.java
@@ -1,29 +1,29 @@
-package japicmp.util;
-
-import japicmp.model.AccessModifier;
-
-import java.lang.reflect.Modifier;
-
-public class ModifierHelper {
-
-    private ModifierHelper() {
-
-    }
-
-    public static boolean matchesModifierLevel(int modifierOfElement, AccessModifier modifierLevel) {
-        AccessModifier modifierLevelOfElement = translateToModifierLevel(modifierOfElement);
-        return (modifierLevelOfElement.getLevel() >= modifierLevel.getLevel());
-    }
-
-    public static AccessModifier translateToModifierLevel(int modifier) {
-        if(Modifier.isPublic(modifier)) {
-            return AccessModifier.PUBLIC;
-        } else if(Modifier.isProtected(modifier)) {
-            return AccessModifier.PROTECTED;
-        } else if(Modifier.isPrivate(modifier)) {
-            return AccessModifier.PRIVATE;
-        } else {
-            return AccessModifier.PACKAGE;
-        }
-    }
-}
+package japicmp.util;
+
+import japicmp.model.AccessModifier;
+
+import java.lang.reflect.Modifier;
+
+public class ModifierHelper {
+
+    private ModifierHelper() {
+
+    }
+
+    public static boolean matchesModifierLevel(int modifierOfElement, AccessModifier modifierLevel) {
+        AccessModifier modifierLevelOfElement = translateToModifierLevel(modifierOfElement);
+        return (modifierLevelOfElement.getLevel() >= modifierLevel.getLevel());
+    }
+
+    public static AccessModifier translateToModifierLevel(int modifier) {
+        if(Modifier.isPublic(modifier)) {
+            return AccessModifier.PUBLIC;
+        } else if(Modifier.isProtected(modifier)) {
+            return AccessModifier.PROTECTED;
+        } else if(Modifier.isPrivate(modifier)) {
+            return AccessModifier.PRIVATE;
+        } else {
+            return AccessModifier.PACKAGE;
+        }
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/util/SignatureParser.java b/japicmp/src/main/java/japicmp/util/SignatureParser.java
index 9d4d96d..8ed253e 100644
--- a/japicmp/src/main/java/japicmp/util/SignatureParser.java
+++ b/japicmp/src/main/java/japicmp/util/SignatureParser.java
@@ -1,103 +1,103 @@
-package japicmp.util;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public class SignatureParser {
-    private List<String> parameters = new LinkedList<String>();
-    private String returnType = "void";
-
-    public void parse(String signature) {
-        int parenthesisCloseIndex = signature.indexOf(')');
-        if(parenthesisCloseIndex > -1) {
-            parseParameters(signature, parenthesisCloseIndex);
-            parseReturnValue(signature, parenthesisCloseIndex);
-        }
-    }
-
-    private void parseReturnValue(String signature, int parenthesisCloseIndex) {
-        String retValPart = signature.substring(parenthesisCloseIndex+1);
-        List<String> retValTypes = parseTypes(retValPart);
-        returnType = retValTypes.get(0);
-    }
-
-    private void parseParameters(String signature, int parenthesisCloseIndex) {
-        String paramPart = signature.substring(1, parenthesisCloseIndex);
-        List<String> paramTypes = parseTypes(paramPart);
-        parameters.clear();
-        parameters.addAll(paramTypes);
-    }
-
-    private List<String> parseTypes(String paramPart) {
-        List<String> types = new LinkedList<String>();
-        boolean arrayNotation = false;
-        for(int i=0; i<paramPart.length(); i++) {
-            char c = paramPart.charAt(i);
-            String type = "void";
-            switch(c) {
-                case 'Z':
-                    type = "boolean";
-                    break;
-                case 'B':
-                    type = "byte";
-                    break;
-                case 'C':
-                    type = "char";
-                    break;
-                case 'S':
-                    type = "short";
-                    break;
-                case 'I':
-                    type = "int";
-                    break;
-                case 'J':
-                    type = "long";
-                    break;
-                case 'F':
-                    type = "float";
-                    break;
-                case 'D':
-                    type = "double";
-                    break;
-                case 'V':
-                    type = "void";
-                    break;
-                case '[':
-                    arrayNotation = true;
-                    continue;
-                case 'L':
-                    StringBuilder fqn = new StringBuilder();
-                    i++;
-                    while(i<paramPart.length()) {
-                        c = paramPart.charAt(i);
-                        if(c == ';') {
-                            break;
-                        } else if(c == '/') {
-                            fqn.append('.');
-                        } else {
-                            fqn.append(c);
-                        }
-                        i++;
-                    }
-                    type = fqn.toString();
-                    break;
-                default:
-                    throw new IllegalStateException("Unknown type signature: '"+c+"'");
-            }
-            if(arrayNotation) {
-                type += "[]";
-                arrayNotation = false;
-            }
-            types.add(type);
-        }
-        return types;
-    }
-
-    public List<String> getParameters() {
-        return parameters;
-    }
-
-    public String getReturnType() {
-        return returnType;
-    }
-}
+package japicmp.util;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class SignatureParser {
+    private List<String> parameters = new LinkedList<String>();
+    private String returnType = "void";
+
+    public void parse(String signature) {
+        int parenthesisCloseIndex = signature.indexOf(')');
+        if(parenthesisCloseIndex > -1) {
+            parseParameters(signature, parenthesisCloseIndex);
+            parseReturnValue(signature, parenthesisCloseIndex);
+        }
+    }
+
+    private void parseReturnValue(String signature, int parenthesisCloseIndex) {
+        String retValPart = signature.substring(parenthesisCloseIndex+1);
+        List<String> retValTypes = parseTypes(retValPart);
+        returnType = retValTypes.get(0);
+    }
+
+    private void parseParameters(String signature, int parenthesisCloseIndex) {
+        String paramPart = signature.substring(1, parenthesisCloseIndex);
+        List<String> paramTypes = parseTypes(paramPart);
+        parameters.clear();
+        parameters.addAll(paramTypes);
+    }
+
+    private List<String> parseTypes(String paramPart) {
+        List<String> types = new LinkedList<String>();
+        boolean arrayNotation = false;
+        for(int i=0; i<paramPart.length(); i++) {
+            char c = paramPart.charAt(i);
+            String type = "void";
+            switch(c) {
+                case 'Z':
+                    type = "boolean";
+                    break;
+                case 'B':
+                    type = "byte";
+                    break;
+                case 'C':
+                    type = "char";
+                    break;
+                case 'S':
+                    type = "short";
+                    break;
+                case 'I':
+                    type = "int";
+                    break;
+                case 'J':
+                    type = "long";
+                    break;
+                case 'F':
+                    type = "float";
+                    break;
+                case 'D':
+                    type = "double";
+                    break;
+                case 'V':
+                    type = "void";
+                    break;
+                case '[':
+                    arrayNotation = true;
+                    continue;
+                case 'L':
+                    StringBuilder fqn = new StringBuilder();
+                    i++;
+                    while(i<paramPart.length()) {
+                        c = paramPart.charAt(i);
+                        if(c == ';') {
+                            break;
+                        } else if(c == '/') {
+                            fqn.append('.');
+                        } else {
+                            fqn.append(c);
+                        }
+                        i++;
+                    }
+                    type = fqn.toString();
+                    break;
+                default:
+                    throw new IllegalStateException("Unknown type signature: '"+c+"'");
+            }
+            if(arrayNotation) {
+                type += "[]";
+                arrayNotation = false;
+            }
+            types.add(type);
+        }
+        return types;
+    }
+
+    public List<String> getParameters() {
+        return parameters;
+    }
+
+    public String getReturnType() {
+        return returnType;
+    }
+}
diff --git a/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java b/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java
index 19d84fd..0c476db 100644
--- a/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java
+++ b/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java
@@ -1,27 +1,27 @@
-package japicmp.util;
-
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-
-public class StringArrayEnumeration implements Enumeration<String> {
-    private final String[] array;
-    private int pos = 0;
-
-    public StringArrayEnumeration(String[] array) {
-        this.array = new String[array.length];
-        System.arraycopy(array, 0, this.array, 0, array.length);
-    }
-
-    public boolean hasMoreElements() {
-        return pos < array.length;
-    }
-
-    public String nextElement() {
-        if(hasMoreElements()) {
-            return array[pos++];
-        } else {
-            throw new NoSuchElementException();
-        }
-    }
-}
+package japicmp.util;
+
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+
+public class StringArrayEnumeration implements Enumeration<String> {
+    private final String[] array;
+    private int pos = 0;
+
+    public StringArrayEnumeration(String[] array) {
+        this.array = new String[array.length];
+        System.arraycopy(array, 0, this.array, 0, array.length);
+    }
+
+    public boolean hasMoreElements() {
+        return pos < array.length;
+    }
+
+    public String nextElement() {
+        if(hasMoreElements()) {
+            return array[pos++];
+        } else {
+            throw new NoSuchElementException();
+        }
+    }
+}
diff --git a/japicmp/src/main/resources/log4j.properties b/japicmp/src/main/resources/log4j.properties
index 393e087..d95e8fd 100644
--- a/japicmp/src/main/resources/log4j.properties
+++ b/japicmp/src/main/resources/log4j.properties
@@ -1,8 +1,8 @@
-# Root logger option
-log4j.rootLogger=INFO, stdout
-
-# Direct log messages to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+# Root logger option
+log4j.rootLogger=INFO, stdout
+
+# Direct log messages to stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/japicmp/src/test/java/japicmp/cli/CliParserTest.java b/japicmp/src/test/java/japicmp/cli/CliParserTest.java
index 8dafe7f..2b2a12c 100644
--- a/japicmp/src/test/java/japicmp/cli/CliParserTest.java
+++ b/japicmp/src/test/java/japicmp/cli/CliParserTest.java
@@ -1,40 +1,40 @@
-package japicmp.cli;
-
-import japicmp.config.Options;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class CliParserTest {
-    private CliParser subject;
-
-    @Before
-    public void before() {
-        subject = new CliParser();
-    }
-
-    @Test
-    public void testAllOptions() {
-        Options options = subject.parse(new String[]{"-n", "npath", "-o", "opath", "-m", "-x", "xpath"});
-        assertThat(options.getXmlOutputFile().get(), is("xpath"));
-        assertThat(options.getNewArchive(), is("npath"));
-        assertThat(options.getOldArchive(), is("opath"));
-        assertThat(options.isOutputOnlyModifications(), is(true));
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void testMissingArgumentForN() {
-        subject.parse(new String[]{"-n", "-o", "opath"});
-    }
-
-    @Test
-    public void testOnlyNAndO() {
-        Options options = subject.parse(new String[]{"-n", "npath", "-o", "opath",});
-        assertThat(options.getXmlOutputFile().isPresent(), is(false));
-        assertThat(options.getNewArchive(), is("npath"));
-        assertThat(options.getOldArchive(), is("opath"));
-        assertThat(options.isOutputOnlyModifications(), is(false));
-    }
-}
+package japicmp.cli;
+
+import japicmp.config.Options;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class CliParserTest {
+    private CliParser subject;
+
+    @Before
+    public void before() {
+        subject = new CliParser();
+    }
+
+    @Test
+    public void testAllOptions() {
+        Options options = subject.parse(new String[]{"-n", "npath", "-o", "opath", "-m", "-x", "xpath"});
+        assertThat(options.getXmlOutputFile().get(), is("xpath"));
+        assertThat(options.getNewArchive(), is("npath"));
+        assertThat(options.getOldArchive(), is("opath"));
+        assertThat(options.isOutputOnlyModifications(), is(true));
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMissingArgumentForN() {
+        subject.parse(new String[]{"-n", "-o", "opath"});
+    }
+
+    @Test
+    public void testOnlyNAndO() {
+        Options options = subject.parse(new String[]{"-n", "npath", "-o", "opath",});
+        assertThat(options.getXmlOutputFile().isPresent(), is(false));
+        assertThat(options.getNewArchive(), is("npath"));
+        assertThat(options.getOldArchive(), is("opath"));
+        assertThat(options.isOutputOnlyModifications(), is(false));
+    }
+}
diff --git a/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java b/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
index 916bcb2..f40812f 100644
--- a/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
+++ b/japicmp/src/test/java/japicmp/cmp/PackageFilterTest.java
@@ -1,45 +1,45 @@
-package japicmp.cmp;
-
-import japicmp.config.PackageFilter;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class PackageFilterTest {
-
-    @Test
-    public void testWithoutWildcard() {
-        PackageFilter pf = new PackageFilter("de.test.package");
-        assertThat(pf.matches("de.test.package"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne"), is(true));
-        assertThat(pf.matches("de.test.package."), is(false));
-        assertThat(pf.matches("de.test.packag"), is(false));
-        assertThat(pf.matches("de.test"), is(false));
-    }
-
-    @Test
-    public void testWithWildcardAfterDot() {
-        PackageFilter pf = new PackageFilter("de.test.package.*");
-        assertThat(pf.matches("de.test.package"), is(false));
-        assertThat(pf.matches("de.test.package.packageOne"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne.p2"), is(true));
-    }
-
-    @Test
-    public void testWithWildcardWithoutDot() {
-        PackageFilter pf = new PackageFilter("de.test.package*");
-        assertThat(pf.matches("de.test.package"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne.p2"), is(true));
-    }
-
-    @Test
-    public void testWithWildcardAndFollowingPackagename() {
-        PackageFilter pf = new PackageFilter("de.test.package.*.test");
-        assertThat(pf.matches("de.test.package"), is(false));
-        assertThat(pf.matches("de.test.package.p.test"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne.test"), is(true));
-        assertThat(pf.matches("de.test.package.packageOne.test2"), is(false));
-    }
-}
+package japicmp.cmp;
+
+import japicmp.config.PackageFilter;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class PackageFilterTest {
+
+    @Test
+    public void testWithoutWildcard() {
+        PackageFilter pf = new PackageFilter("de.test.package");
+        assertThat(pf.matches("de.test.package"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne"), is(true));
+        assertThat(pf.matches("de.test.package."), is(false));
+        assertThat(pf.matches("de.test.packag"), is(false));
+        assertThat(pf.matches("de.test"), is(false));
+    }
+
+    @Test
+    public void testWithWildcardAfterDot() {
+        PackageFilter pf = new PackageFilter("de.test.package.*");
+        assertThat(pf.matches("de.test.package"), is(false));
+        assertThat(pf.matches("de.test.package.packageOne"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne.p2"), is(true));
+    }
+
+    @Test
+    public void testWithWildcardWithoutDot() {
+        PackageFilter pf = new PackageFilter("de.test.package*");
+        assertThat(pf.matches("de.test.package"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne.p2"), is(true));
+    }
+
+    @Test
+    public void testWithWildcardAndFollowingPackagename() {
+        PackageFilter pf = new PackageFilter("de.test.package.*.test");
+        assertThat(pf.matches("de.test.package"), is(false));
+        assertThat(pf.matches("de.test.package.p.test"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne.test"), is(true));
+        assertThat(pf.matches("de.test.package.packageOne.test2"), is(false));
+    }
+}
diff --git a/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java b/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
index 6f666a2..fdff3cd 100644
--- a/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
+++ b/japicmp/src/test/java/japicmp/util/ModifierHelperTest.java
@@ -1,41 +1,41 @@
-package japicmp.util;
-
-import japicmp.model.AccessModifier;
-import javassist.Modifier;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ModifierHelperTest {
-
-    @Test
-    public void publicToPublic() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PUBLIC), is(true));
-    }
-
-    @Test
-    public void publicToProtected() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PROTECTED), is(true));
-    }
-
-    @Test
-    public void publicToPrivate() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PRIVATE), is(true));
-    }
-
-    @Test
-    public void privateToPublic() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PUBLIC), is(false));
-    }
-
-    @Test
-    public void privateToProtected() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PROTECTED), is(false));
-    }
-
-    @Test
-    public void privateToPrivate() {
-        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PRIVATE), is(true));
-    }
-}
+package japicmp.util;
+
+import japicmp.model.AccessModifier;
+import javassist.Modifier;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class ModifierHelperTest {
+
+    @Test
+    public void publicToPublic() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PUBLIC), is(true));
+    }
+
+    @Test
+    public void publicToProtected() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PROTECTED), is(true));
+    }
+
+    @Test
+    public void publicToPrivate() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPublic(0), AccessModifier.PRIVATE), is(true));
+    }
+
+    @Test
+    public void privateToPublic() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PUBLIC), is(false));
+    }
+
+    @Test
+    public void privateToProtected() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PROTECTED), is(false));
+    }
+
+    @Test
+    public void privateToPrivate() {
+        assertThat(ModifierHelper.matchesModifierLevel(Modifier.setPrivate(0), AccessModifier.PRIVATE), is(true));
+    }
+}
diff --git a/japicmp/src/test/java/japicmp/util/SignatureParserTest.java b/japicmp/src/test/java/japicmp/util/SignatureParserTest.java
index 183fd8a..74e923e 100644
--- a/japicmp/src/test/java/japicmp/util/SignatureParserTest.java
+++ b/japicmp/src/test/java/japicmp/util/SignatureParserTest.java
@@ -1,99 +1,99 @@
-package japicmp.util;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class SignatureParserTest {
-    private SignatureParser subject;
-
-    @Before
-    public void before() throws Exception {
-        subject = new SignatureParser();
-    }
-
-    @Test
-    public void testNoParamsReturnsVoid() {
-        subject.parse("()V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(0));
-    }
-
-    @Test
-    public void testTwoReferenceParamsReturnsReference() {
-        subject.parse("(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ManagedClientConnection;");
-        assertThat(subject.getReturnType(), is("org.apache.http.conn.ManagedClientConnection"));
-        assertThat(subject.getParameters().size(), is(2));
-        assertThat(subject.getParameters(), hasItem("org.apache.http.conn.routing.HttpRoute"));
-        assertThat(subject.getParameters(), hasItem("java.lang.Object"));
-    }
-
-    @Test
-    public void testOneReferenceOnePrimParamsReturnsVoid() {
-        subject.parse("(JLjava/util/concurrent/TimeUnit;)V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(2));
-        assertThat(subject.getParameters(), hasItem("long"));
-        assertThat(subject.getParameters(), hasItem("java.util.concurrent.TimeUnit"));
-    }
-
-    @Test
-    public void testArrayTwoPrimParamsReturnsVoid() {
-        subject.parse("([BII)V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(3));
-        assertThat(subject.getParameters(), hasItem("byte[]"));
-        assertThat(subject.getParameters(), hasItem("int"));
-    }
-
-    @Test
-    public void testArrayPrimParamReturnsVoid() {
-        subject.parse("([B)V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(1));
-        assertThat(subject.getParameters(), hasItem("byte[]"));
-    }
-
-    @Test
-    public void testArrayRefParamReturnsVoid() {
-        subject.parse("([Lorg/apache/http/cookie/Cookie;)V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(1));
-        assertThat(subject.getParameters(), hasItem("org.apache.http.cookie.Cookie[]"));
-    }
-
-    @Test
-    public void testOneReferenceParamsReturnsVoid() {
-        subject.parse("(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V");
-        assertThat(subject.getReturnType(), is("void"));
-        assertThat(subject.getParameters().size(), is(1));
-        assertThat(subject.getParameters(), hasItem("org.apache.http.impl.conn.tsccm.BasicPoolEntry"));
-    }
-
-    @Test
-    public void testOneReferenceParamsReturnsOneReference() {
-        subject.parse("(Ljava/util/List;)Ljava/util/List;");
-        assertThat(subject.getReturnType(), is("java.util.List"));
-        assertThat(subject.getParameters().size(), is(1));
-        assertThat(subject.getParameters(), hasItem("java.util.List"));
-    }
-
-    @Test
-    public void testNoParamsReturnsReference() {
-        subject.parse("()Lorg/apache/http/conn/scheme/SchemeRegistry;");
-        assertThat(subject.getReturnType(), is("org.apache.http.conn.scheme.SchemeRegistry"));
-        assertThat(subject.getParameters().size(), is(0));
-    }
-
-    @Test
-    public void testNoParamsReturnsI() {
-        subject.parse("()I");
-        assertThat(subject.getReturnType(), is("int"));
-        assertThat(subject.getParameters().size(), is(0));
-    }
-}
+package japicmp.util;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class SignatureParserTest {
+    private SignatureParser subject;
+
+    @Before
+    public void before() throws Exception {
+        subject = new SignatureParser();
+    }
+
+    @Test
+    public void testNoParamsReturnsVoid() {
+        subject.parse("()V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(0));
+    }
+
+    @Test
+    public void testTwoReferenceParamsReturnsReference() {
+        subject.parse("(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ManagedClientConnection;");
+        assertThat(subject.getReturnType(), is("org.apache.http.conn.ManagedClientConnection"));
+        assertThat(subject.getParameters().size(), is(2));
+        assertThat(subject.getParameters(), hasItem("org.apache.http.conn.routing.HttpRoute"));
+        assertThat(subject.getParameters(), hasItem("java.lang.Object"));
+    }
+
+    @Test
+    public void testOneReferenceOnePrimParamsReturnsVoid() {
+        subject.parse("(JLjava/util/concurrent/TimeUnit;)V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(2));
+        assertThat(subject.getParameters(), hasItem("long"));
+        assertThat(subject.getParameters(), hasItem("java.util.concurrent.TimeUnit"));
+    }
+
+    @Test
+    public void testArrayTwoPrimParamsReturnsVoid() {
+        subject.parse("([BII)V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(3));
+        assertThat(subject.getParameters(), hasItem("byte[]"));
+        assertThat(subject.getParameters(), hasItem("int"));
+    }
+
+    @Test
+    public void testArrayPrimParamReturnsVoid() {
+        subject.parse("([B)V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(1));
+        assertThat(subject.getParameters(), hasItem("byte[]"));
+    }
+
+    @Test
+    public void testArrayRefParamReturnsVoid() {
+        subject.parse("([Lorg/apache/http/cookie/Cookie;)V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(1));
+        assertThat(subject.getParameters(), hasItem("org.apache.http.cookie.Cookie[]"));
+    }
+
+    @Test
+    public void testOneReferenceParamsReturnsVoid() {
+        subject.parse("(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V");
+        assertThat(subject.getReturnType(), is("void"));
+        assertThat(subject.getParameters().size(), is(1));
+        assertThat(subject.getParameters(), hasItem("org.apache.http.impl.conn.tsccm.BasicPoolEntry"));
+    }
+
+    @Test
+    public void testOneReferenceParamsReturnsOneReference() {
+        subject.parse("(Ljava/util/List;)Ljava/util/List;");
+        assertThat(subject.getReturnType(), is("java.util.List"));
+        assertThat(subject.getParameters().size(), is(1));
+        assertThat(subject.getParameters(), hasItem("java.util.List"));
+    }
+
+    @Test
+    public void testNoParamsReturnsReference() {
+        subject.parse("()Lorg/apache/http/conn/scheme/SchemeRegistry;");
+        assertThat(subject.getReturnType(), is("org.apache.http.conn.scheme.SchemeRegistry"));
+        assertThat(subject.getParameters().size(), is(0));
+    }
+
+    @Test
+    public void testNoParamsReturnsI() {
+        subject.parse("()I");
+        assertThat(subject.getReturnType(), is("int"));
+        assertThat(subject.getParameters().size(), is(0));
+    }
+}
diff --git a/japicmp/src/test/java/japicmp/util/StringArrayEnumerationTest.java b/japicmp/src/test/java/japicmp/util/StringArrayEnumerationTest.java
index 853d71e..df6035c 100644
--- a/japicmp/src/test/java/japicmp/util/StringArrayEnumerationTest.java
+++ b/japicmp/src/test/java/japicmp/util/StringArrayEnumerationTest.java
@@ -1,37 +1,37 @@
-package japicmp.util;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.NoSuchElementException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class StringArrayEnumerationTest {
-
-    @Test(expected = NoSuchElementException.class)
-    public void testEmptyArray() {
-        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{});
-        assertThat(sae.hasMoreElements(), is(false));
-        sae.nextElement();
-    }
-
-    @Test
-    public void testOneElementArray() {
-        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{"1"});
-        assertThat(sae.hasMoreElements(), is(true));
-        assertThat(sae.nextElement(), is("1"));
-        assertThat(sae.hasMoreElements(), is(false));
-    }
-
-    @Test
-    public void testTwoElementsArray() {
-        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{"1","2"});
-        assertThat(sae.hasMoreElements(), is(true));
-        assertThat(sae.nextElement(), is("1"));
-        assertThat(sae.hasMoreElements(), is(true));
-        assertThat(sae.nextElement(), is("2"));
-        assertThat(sae.hasMoreElements(), is(false));
-    }
-}
+package japicmp.util;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.NoSuchElementException;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class StringArrayEnumerationTest {
+
+    @Test(expected = NoSuchElementException.class)
+    public void testEmptyArray() {
+        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{});
+        assertThat(sae.hasMoreElements(), is(false));
+        sae.nextElement();
+    }
+
+    @Test
+    public void testOneElementArray() {
+        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{"1"});
+        assertThat(sae.hasMoreElements(), is(true));
+        assertThat(sae.nextElement(), is("1"));
+        assertThat(sae.hasMoreElements(), is(false));
+    }
+
+    @Test
+    public void testTwoElementsArray() {
+        StringArrayEnumeration sae = new StringArrayEnumeration(new String[]{"1","2"});
+        assertThat(sae.hasMoreElements(), is(true));
+        assertThat(sae.nextElement(), is("1"));
+        assertThat(sae.hasMoreElements(), is(true));
+        assertThat(sae.nextElement(), is("2"));
+        assertThat(sae.hasMoreElements(), is(false));
+    }
+}
diff --git a/pom.xml b/pom.xml
index d7b722c..9406c2b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,161 +1,161 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>japicmp</groupId>
-    <artifactId>japicmp-base</artifactId>
-    <version>0.0.3-SNAPSHOT</version>
-    <packaging>pom</packaging>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <github.account>siom79</github.account>
-        <cloudbees.account>siom79</cloudbees.account>
-    </properties>
-
-    <modules>
-        <module>japicmp</module>
-        <module>japicmp-testbase</module>
-    </modules>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-release-plugin</artifactId>
-                <version>2.4.1</version>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-                <version>2.9.1</version>
-                <executions>
-                    <execution>
-                        <id>attach-javadocs</id>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-                <version>2.2.1</version>
-                <executions>
-                    <execution>
-                        <id>attach-sources</id>
-                        <goals>
-                            <goal>jar-no-fork</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <!-- explicitly define maven-deploy-plugin after other to force exec order -->
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-deploy-plugin</artifactId>
-                <version>2.7</version>
-                <executions>
-                    <execution>
-                        <id>deploy</id>
-                        <phase>deploy</phase>
-                        <goals>
-                            <goal>deploy</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-        <extensions>
-            <extension>
-                <groupId>org.apache.maven.wagon</groupId>
-                <artifactId>wagon-webdav-jackrabbit</artifactId>
-                <version>1.0-beta-7</version>
-            </extension>
-        </extensions>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>cobertura-maven-plugin</artifactId>
-                    <version>2.5.2</version>
-                    <configuration>
-                        <formats>
-                            <format>html</format>
-                            <format>xml</format>
-                        </formats>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <phase>verify</phase>
-                            <goals>
-                                <goal>clean</goal>
-                                <goal>cobertura</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
-    <scm>
-        <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection>
-        <developerConnection>scm:git:git@github.com:${github.account}/${project.groupId}.git</developerConnection>
-        <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url>
-        <tag>HEAD</tag>
-    </scm>
-
-    <distributionManagement>
-        <repository>
-            <id>cloudbees-public-release</id>
-            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/release</url>
-        </repository>
-        <snapshotRepository>
-            <id>cloudbees-public-snapshot</id>
-            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/snapshot</url>
-        </snapshotRepository>
-    </distributionManagement>
-
-    <repositories>
-        <repository>
-            <id>cloudbees-public-snapshot</id>
-            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-snapshot</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </repository>
-        <repository>
-            <id>cloudbees-public-release</id>
-            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-release</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>japicmp</groupId>
+    <artifactId>japicmp-base</artifactId>
+    <version>0.0.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <github.account>siom79</github.account>
+        <cloudbees.account>siom79</cloudbees.account>
+    </properties>
+
+    <modules>
+        <module>japicmp</module>
+        <module>japicmp-testbase</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <version>2.4.1</version>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.9.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <!-- explicitly define maven-deploy-plugin after other to force exec order -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <version>2.7</version>
+                <executions>
+                    <execution>
+                        <id>deploy</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>deploy</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-webdav-jackrabbit</artifactId>
+                <version>1.0-beta-7</version>
+            </extension>
+        </extensions>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>cobertura-maven-plugin</artifactId>
+                    <version>2.5.2</version>
+                    <configuration>
+                        <formats>
+                            <format>html</format>
+                            <format>xml</format>
+                        </formats>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>clean</goal>
+                                <goal>cobertura</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <scm>
+        <connection>scm:git:git://github.com/${github.account}/${project.groupId}.git</connection>
+        <developerConnection>scm:git:git@github.com:${github.account}/${project.groupId}.git</developerConnection>
+        <url>http://github.com/${github.account}/${project.groupId}/tree/master/</url>
+        <tag>HEAD</tag>
+    </scm>
+
+    <distributionManagement>
+        <repository>
+            <id>cloudbees-public-release</id>
+            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/release</url>
+        </repository>
+        <snapshotRepository>
+            <id>cloudbees-public-snapshot</id>
+            <url>dav:https://repository-${cloudbees.account}.forge.cloudbees.com/snapshot</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>cloudbees-public-snapshot</id>
+            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-snapshot</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>cloudbees-public-release</id>
+            <url>https://repository-${cloudbees.account}.forge.cloudbees.com/public-release</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
 </project>
\ No newline at end of file
diff --git a/structure101.java.hsp b/structure101.java.hsp
new file mode 100644
index 0000000..a6615d5
--- /dev/null
+++ b/structure101.java.hsp
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<local-project language="java" version="4.0.5155" xml-version="3" flavor="j2se">
+  <property name="hide-externals" value="true" />
+  <property name="show-needs-to-compile" value="false" />
+  <property name="detail-mode" value="true" />
+  <property name="include-injected-dependency" value="true" />
+  <property name="project-type" value="maven" />
+  <property name="action-set-mod" value="10" />
+  <property name="hide-deprecated" value="false" />
+  <property name="parse-archive-in-archive" value="false" />
+  <classpath relativeto="D:\Programmierung\japicmp\github\japicmp">
+    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test-v1\target\japicmp-test-v1-0.0.3-SNAPSHOT.jar" />
+    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test\target\japicmp-test-0.0.3-SNAPSHOT.jar" />
+    <classpathentry kind="lib" path="japicmp\target\japicmp-0.0.3-SNAPSHOT.jar" />
+    <classpathentry kind="lib" path="japicmp-testbase\japicmp-test-v2\target\japicmp-test-v2-0.0.3-SNAPSHOT.jar" />
+  </classpath>
+  <pom-root-files>
+    <pom path="D:\Programmierung\japicmp\github\japicmp\pom.xml" />
+  </pom-root-files>
+  <transformations>
+    <transformation in="*" out="{jar}.*" />
+  </transformations>
+  <restructuring>
+    <set version="3" name="Model 1" hiview="Codemap" active="true" todo="false" list="0">
+      <hide>
+        <item-fqn fqn="japicmp-base.japicmp.japicmp.javassist" type="package">
+          <node name="japicmp-base" type="pom" />
+          <node name="japicmp" type="pom" />
+          <node name="japicmp" type="jar" />
+          <node name="javassist" type="package" />
+        </item-fqn>
+      </hide>
+      <hide>
+        <item-fqn fqn="japicmp-base.japicmp.japicmp.org" type="package">
+          <node name="japicmp-base" type="pom" />
+          <node name="japicmp" type="pom" />
+          <node name="japicmp" type="jar" />
+          <node name="org" type="package" />
+        </item-fqn>
+      </hide>
+      <hide>
+        <item-fqn fqn="japicmp-base.japicmp.japicmp.com" type="package">
+          <node name="japicmp-base" type="pom" />
+          <node name="japicmp" type="pom" />
+          <node name="japicmp" type="jar" />
+          <node name="com" type="package" />
+        </item-fqn>
+      </hide>
+    </set>
+  </restructuring>
+  <sourcepaths>
+    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp-testbase\japicmp-test-v1\src\main\java" />
+    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp\src\main\java" />
+    <pathentry type="file" path="D:\Programmierung\japicmp\github\japicmp\japicmp-testbase\japicmp-test-v2\src\main\java" />
+  </sourcepaths>
+  <grid-set sep="." version="4.0.5155">
+    <grid name="Diagram 2" enforce="true" locked="true" strict="false">
+      <row>
+        <cell name="japicmp" pattern="japicmp-base.japicmp.*" vexpanded="true" visibility="public" drill="false">
+          <grid>
+            <row>
+              <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.*" vexpanded="true" visibility="public" drill="false">
+                <grid>
+                  <row>
+                    <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.japicmp.*" vexpanded="true" visibility="public" drill="false">
+                      <grid>
+                        <row>
+                          <cell name="japicmp" pattern="japicmp-base.japicmp.japicmp.japicmp.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="JApiCmp" pattern="japicmp-base.japicmp.japicmp.japicmp.JApiCmp" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                        <row>
+                          <cell name="cli" pattern="japicmp-base.japicmp.japicmp.japicmp.cli.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="CliParser" pattern="japicmp-base.japicmp.japicmp.japicmp.cli.CliParser" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                          <cell name="output" pattern="japicmp-base.japicmp.japicmp.japicmp.output.*" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="stdout" pattern="japicmp-base.japicmp.japicmp.japicmp.output.stdout.?" vexpanded="true" visibility="public" drill="false">
+                                  <grid>
+                                    <row>
+                                      <cell name="StdoutOutputGenerator" pattern="japicmp-base.japicmp.japicmp.japicmp.output.stdout.StdoutOutputGenerator" vexpanded="false" visibility="public" drill="false" />
+                                    </row>
+                                  </grid>
+                                </cell>
+                                <cell name="xml" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.*" vexpanded="true" visibility="public" drill="false">
+                                  <grid>
+                                    <row>
+                                      <cell name="xml" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.?" vexpanded="true" visibility="public" drill="false">
+                                        <grid>
+                                          <row>
+                                            <cell name="XmlOutputGenerator" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.XmlOutputGenerator" vexpanded="false" visibility="public" drill="false" />
+                                          </row>
+                                        </grid>
+                                      </cell>
+                                    </row>
+                                    <row>
+                                      <cell name="model" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.model.?" vexpanded="true" visibility="public" drill="false">
+                                        <grid>
+                                          <row>
+                                            <cell name="JApiCmpXmlRoot" pattern="japicmp-base.japicmp.japicmp.japicmp.output.xml.model.JApiCmpXmlRoot" vexpanded="false" visibility="public" drill="false" />
+                                          </row>
+                                        </grid>
+                                      </cell>
+                                    </row>
+                                  </grid>
+                                </cell>
+                              </row>
+                              <row>
+                                <cell name="output" pattern="japicmp-base.japicmp.japicmp.japicmp.output.?" vexpanded="true" visibility="public" drill="false">
+                                  <grid>
+                                    <row>
+                                      <cell name="OutputTransformer" pattern="japicmp-base.japicmp.japicmp.japicmp.output.OutputTransformer" vexpanded="false" visibility="public" drill="false" />
+                                    </row>
+                                  </grid>
+                                </cell>
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                        <row>
+                          <cell name="config" pattern="japicmp-base.japicmp.japicmp.japicmp.config.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="Options" pattern="japicmp-base.japicmp.japicmp.japicmp.config.Options" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                        <row>
+                          <cell name="cmp" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="JarArchiveComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.JarArchiveComparator" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                              <row>
+                                <cell name="ClassComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.ClassComparator" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                              <row>
+                                <cell name="ClassesComparator" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.ClassesComparator" vexpanded="false" visibility="public" drill="false" />
+                                <cell name="JarArchiveComparatorOptions" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.JarArchiveComparatorOptions" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                              <row>
+                                <cell name="AccessModifier" pattern="japicmp-base.japicmp.japicmp.japicmp.cmp.AccessModifier" vexpanded="false" visibility="public" drill="false" />
+                                <cell name="PackageFilter" pattern="japicmp-base.japicmp.japicmp.japicmp.config.PackageFilter" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                        <row>
+                          <cell name="exception" pattern="japicmp-base.japicmp.japicmp.japicmp.exception.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="JApiCmpException" pattern="japicmp-base.japicmp.japicmp.japicmp.exception.JApiCmpException" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                          <cell name="model" pattern="japicmp-base.japicmp.japicmp.japicmp.model.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="JApiClass" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiClass" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                              <row>
+                                <cell name="JApiMethod" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiMethod" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                              <row>
+                                <cell name="JApiChangeStatus" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiChangeStatus" vexpanded="false" visibility="public" drill="false" />
+                                <cell name="JApiParameter" pattern="japicmp-base.japicmp.japicmp.japicmp.model.JApiParameter" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                          <cell name="util" pattern="japicmp-base.japicmp.japicmp.japicmp.util.?" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="ModifierHelper" pattern="japicmp-base.japicmp.japicmp.japicmp.util.ModifierHelper" vexpanded="false" visibility="public" drill="false" />
+                                <cell name="SignatureParser" pattern="japicmp-base.japicmp.japicmp.japicmp.util.SignatureParser" vexpanded="false" visibility="public" drill="false" />
+                                <cell name="StringArrayEnumeration" pattern="japicmp-base.japicmp.japicmp.japicmp.util.StringArrayEnumeration" vexpanded="false" visibility="public" drill="false" />
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                      </grid>
+                    </cell>
+                  </row>
+                </grid>
+              </cell>
+            </row>
+          </grid>
+        </cell>
+        <cell name="japicmp-testbase" pattern="japicmp-base.japicmp-testbase.*" vexpanded="true" visibility="public" drill="false">
+          <grid>
+            <row>
+              <cell name="japicmp-test-v1" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.*" vexpanded="true" visibility="public" drill="false">
+                <grid>
+                  <row>
+                    <cell name="japicmp-test-v1" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.*" vexpanded="true" visibility="public" drill="false">
+                      <grid>
+                        <row>
+                          <cell name="japicmp" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.*" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.*" vexpanded="true" visibility="public" drill="false">
+                                  <grid>
+                                    <row>
+                                      <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.?" vexpanded="true" visibility="public" drill="false">
+                                        <grid>
+                                          <row>
+                                            <cell name="Modifier" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Modifier" vexpanded="false" visibility="public" drill="false" />
+                                            <cell name="Removed" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Removed" vexpanded="false" visibility="public" drill="false" />
+                                            <cell name="Unchanged" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.Unchanged" vexpanded="false" visibility="public" drill="false" />
+                                          </row>
+                                        </grid>
+                                      </cell>
+                                      <cell name="packageOne" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageOne.?" vexpanded="true" visibility="public" drill="false">
+                                        <grid>
+                                          <row>
+                                            <cell name="PackageOne" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageOne.PackageOne" vexpanded="false" visibility="public" drill="false" />
+                                          </row>
+                                        </grid>
+                                      </cell>
+                                      <cell name="packageTwo" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageTwo.?" vexpanded="true" visibility="public" drill="false">
+                                        <grid>
+                                          <row>
+                                            <cell name="PackageTwo" pattern="japicmp-base.japicmp-testbase.japicmp-test-v1.japicmp-test-v1.japicmp.test.packageTwo.PackageTwo" vexpanded="false" visibility="public" drill="false" />
+                                          </row>
+                                        </grid>
+                                      </cell>
+                                    </row>
+                                  </grid>
+                                </cell>
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                      </grid>
+                    </cell>
+                  </row>
+                </grid>
+              </cell>
+              <cell name="japicmp-test-v2" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.*" vexpanded="true" visibility="public" drill="false">
+                <grid>
+                  <row>
+                    <cell name="japicmp-test-v2" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.*" vexpanded="true" visibility="public" drill="false">
+                      <grid>
+                        <row>
+                          <cell name="japicmp" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.*" vexpanded="true" visibility="public" drill="false">
+                            <grid>
+                              <row>
+                                <cell name="test" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.test.?" vexpanded="true" visibility="public" drill="false">
+                                  <grid>
+                                    <row>
+                                      <cell name="Added" pattern="japicmp-base.japicmp-testbase.japicmp-test-v2.japicmp-test-v2.japicmp.test.Added" vexpanded="false" visibility="public" drill="false" />
+                                    </row>
+                                  </grid>
+                                </cell>
+                              </row>
+                            </grid>
+                          </cell>
+                        </row>
+                      </grid>
+                    </cell>
+                  </row>
+                </grid>
+              </cell>
+            </row>
+          </grid>
+        </cell>
+      </row>
+      <description>Top-level breakout (depth=2147483647)</description>
+    </grid>
+  </grid-set>
+</local-project>
+