Code Monkey home page Code Monkey logo

combiner-maven-plugin's People

Contributors

jasonmfehr avatar

Watchers

 avatar  avatar

combiner-maven-plugin's Issues

Inject Logger Instead of Using a Static Function

The LogHolder class has the static getParamLogger() method to retrieve the ParameterizedLogger. Switch to an all injected logging system. The pit exclusions will also need to be updated to ignore the new logger methods.

Determine Why defaultValue of Parameter Annotations Does Not Work

Several fields have a defaultValue specified on their Parameter annotation. Maven does not detect this and use it as the default value of that field. This necessitates CombinationDefaultsManager class. Figure out why this annotation is not properly detected by maven

Setup travis-ci Build

The build should include a badge in the README.md file. It should also include a test/pit coverage badge.

Remove Hardcoded File Separators

In several classes (both main and test), the file path separator is hardcoded to a forward slash. Determine if this solution is acceptable or if the platform specific file separator character should be used.

Add Pit Reports to site

Add the test reports for unit tests (surefire), mutation tests (pit), and integration tests (invoker) to the site.

Add/Update Javadoc

Javadoc is missing or incorrect in most places. Review all classes and add/fix javadoc as necessary.

Manifest Has Incorrect SCM Url

The tag information is not present in the scm url section of the manifest. Need to either add the ${scm.tag} property to the manifest or update the scm-url entry in the manifest to ${scm.url}/tree/${scm.tag}

Review All Embedded Strings

For any strings embedded within double quotes in the classes, move the ones that make sense into class level static final strings.

Setup scm Section of Pom

Setup the scm section with links to the github repo. Also uncomment the scm-url manifest entry in the maven-jar-plugin.

Switch Package Structure

Move from com.jfehr to com.github.jasonmfehr as the package structure to match the new groupid

Switch to Guice for Dependency Injection

Move away from plexus as the dependency injection mechanism. Switch to the new Guice DI container.

Investigate making this change backwards compatible, but it is not necessary. Switch to version 2.0 if backwards compatibility is not maintained.

Add a check that the minimum maven version to use Guice is the version that the plugin is executing within via the section of the pom

Switch Unit Tests to JUnit's TemporaryFolder Rule

Some unit tests utilize the src/test/resources/tmp folder as a placeholder for files that are created and deleted during the running of the tests. These tests all need to be switched to utilize JUnit's TemporaryFolder rule to create temp folders for the tests.

https://github.com/junit-team/junit/wiki/Rules

All unit tests within the following test classes will need to be changed:
com.jfehr.combiner.file.MultiFileReaderTest
com.jfehr.combiner.output.FileOutputSourceWriterTest
com.jfehr.combiner.file.FileValidatorTest

Test on Windows

Development of the combiner-maven-plugin was done on a Mac and the Travis-CI build runs on Linux. This plugin has not been tested on Windows yet. Run the maven build for this plugin and execute all unit and integration tests on a Windows machine.

Convert to Multi-Module Project

Switch ta multi-module setup where the APIs are in their own jar and the plugin is in is own jar. This setup will allow for consumers to create their own implementations of the four pipeline stage interfaces.

Pom Has m2e Errors

Several plugins within the pom are not covered by a lifecycle configuration. Add the lifecycle-mapping plugin to plugins management and configure it to resolve these issues.

Fix Plugin Config Location in pom

There is plugin configuration within the <plugins> section of the parent pom. All plugin configuration should be within <pluginsManagement>

Refactor PipelineExecutor

The PipelineExecutor class is excessively coupled. It relies on too many other classes. Review this class to see if it can be refactored to have dependencies on a fewer number of classes.

Implement Input Resource Processing Ordering

The order that input resources are processed is undefined. Implement a way to specify the order in which the input resources are processed. My initial thought is to add a fifth stage between the input and transform stages that passes in a Map of resources backed by a LinkedHashMap that can be re-ordered

Refactor Exceptions

The design of the exception classes needs to be examined and refactored into a design that makes more sense. Additionally, the classes are still in the old package structure under com.jfehr.tojs.exception. Move them into the new packages structure com.jfehr.combiner.something

Implement Integration Testing

The only automated testing is unit testing. Implement integration tests that run both in an IDE and as part of the maven build.

Create a test that covers the case where no transformers are specified in the pom.
Create a test where no resources are found (should fail)

Add Ability to Inject Logger Via Setter

When constructing an object, the ObjectFactory will first attempt to instantiate the object using a constructor that takes a ParameterizedLogger thus injecting the logger via the constructor. However, for objects retrieved from the plexus container, there is no way to inject the logger.

Add a setLogger(ParameterizedLogger logger) method to the four pipeline stage interfaces and remove the ability to inject loggers via constructors.

Include API Javadoc

In the combiner-maven-plugin module, include the combiner-maven-plugin-api javadoc so the maven site can be self contained.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.