Giter Club home page Giter Club logo

caesar's People

Contributors

glusk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

caesar's Issues

Add Immutable Message Digest

Lets add this feature to the library!

  1. We want to have a thread-safe MessageDigest object
  2. We want to have an simple api for computing embedded hashes. For example: H(H(b1), b2, b3)

Coverage doesn't get sent to coveralls

The Java 9 modules source path is not properly detected by the coveralls maven plugin.

Coveralls plugin further complains:

Execution default-cli of goal org.eluder.coveralls:coveralls-maven-plugin:4.3.0:report failed: A required class was missing while executing org.eluder.coveralls:coveralls-maven-plugin:4.3.0:report: javax/xml/bind/DatatypeConverter

A workaround was proposed here.

[Codacy Warning] Checkstyle errors in src/test/java

Enable Checkstyle checks for tests but skip Javadoc checks.

Reasons against enforcing Javadoc comments in tests:

  • documentation is hard to do
  • test Javadocs don't get published to Maven Central
  • in my experience, most of the test Javadocs are useless anyway (for example: /** The test for class Foo. */)
  • if you change the test you have to change the doc
  • this SO answer also suggests not to enforce test documentation

Update README

Add an introduction paragraph with maven dependency library usage example.

Document the release process - how to bump the version and triger a release/deployment.

Make API changes

After implementing #25, the following API changes should be made:

  • remove constructor DigestArgument(String, int)
  • remove constructor DigestArgument(byte[])
  • DigestArgument should be renamed to PlainText and moved to package com.github.glusk.caesar
  • remove class BinaryString
  • update examples in README.md

Add AbstractBytes

We want to specify the contract of some of the Object's methods at the Bytes interface level. As these can't be implemented as default methods, we can use a pattern similar to the one used in java.util (List and AbstractList).

Add an abstract class AbstractBytes that extends implements the Bytes interface.

Remove the @FunctionalInterface annotation in Bytes interface definition since the use of Bytes in a lambda expression is discouraged. Doing so breaks its equals() contract, for example.

AbstractBytes should implement equals(), hashCode() and toString() (YAGNI, at the moment).

Classes that used to implement Bytes should now extend AbstractBytes.

Alter release flow

A release version should not be committed. The flow should be as follows:

  1. checkout to a new release branch; bump version to a new release tag and push it
  2. checkout to a master branch; bump version to a new snapshot version and push the change

There should be a "dry run" option that doesn't push anything to the remote repository.

Improve test coverage

Test coverage should be 100% given the currently (version 0.1.0) still relatively small codebase size.

Add Base16 (Hex) and Base64 encoding and decoding capabilities

At the moment, we're wired to an external dependency jakarta.xml.bind:jakarta.xml.bind-api just so that we can use DatatypeConverter. This dependency could be removed.

Java 8 introduced Base64 class and the hex encoding/decoding looks easy enough to implement.

The library currently only parses Base64 and Base16 strings. We should add default methods to Bytes that would encode byte sequences to Base64 and Base16 strings.

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.