Coder Social home page Coder Social logo

jasperclient's Introduction

LE TUTOUR Erwan

About me

@erwanlt's Holopin board

πŸ‘¦πŸΌ Social

Skills

πŸ’» OS

πŸ‘¨πŸΌβ€πŸ’» Code

πŸ›  Tools

πŸ—£ Languages

πŸ– Design

Github Stats

Events

Hacktoberfest Advent of Code
2020
2021
2022

πŸ“ Blog posts

Find me

Medium

Creation design pattern

Structural design pattern

Behaviorial design pattern

πŸ’‘ Tips

jasperclient's People

Contributors

erwanlt avatar parthasarathimahana avatar

Stargazers

 avatar

Watchers

 avatar

jasperclient's Issues

Class visibility

To implement the client, the main class and some methode need to be public and not package private.
Change the visibility of those.

Class visibility :
change the visibility of JasperClient from abstract class to public abstract class

methode visibility :
In JasperClient make

  • simpleParamters
  • listParamters
  • arrayParameters

public abstract void instead of just abstract void

[Enhancement] Make response class immutable

Why make responses immutable

An immutable class is good for caching purposes because you don’t have to worry about the value changes. Another benefit of immutable class is that it is inherently thread-safe, so you don’t have to worry about thread safety in case of multi-threaded environment.

Expectation

  • move all response classes in a package named response
  • make them final
  • make the fields final
  • create a constructor whith all fields as arguments
  • implement the equals and hashCode methods

[Enhancement] Use Jaxb marshaller to create execution request body

What we have actually

Actually we have a string builder to build the xml that will be used as the execution request body

What we want

In order to have a more pretty code, and less vulnerable, we should implement jaxb to transform an objet into the xml for the body

What to do

  • create the objects that correspond to the execution request body
  • Annotate them with jaxb annotation
  • replace the string builder with the object

Adding test

currently there is no unit test, it would be good to add some to obtain a code coverage between 50% and 75%

Replace webclient by feign

In order to expose prometheus metric that can be exploited by the application that will use this module, migrate the http call that use webclient to feignclient

Continuous integration

In order to have a passing build indicator and code coverage of the tests, it would be better to use continuous integration tools

Build using TravisCI

  • add .travis.yml at the project root with below code inside
language: java
jdk: oraclejdk11
dist: trusty
install: true
script: mvn clean install
after_success:
  - bash <(curl -s https://codecov.io/bash)
  • add the build badge to the top of the project readme

Code coverage with Codecov

  • add the project to codecov to get the code coverage badge info
  • add the badge to the project readme

this issue need #1 and #3 to be done before

[Feature] Export status check

Some export can take time before to be ready, in order to be sure that we can get our export we need to check it's status

  • add a method in the interface of the client that will take an ExecutionResponse as parameter
  • implement this method in the client
    • add a boolean exportReady checking the status of ExecutionResponse and ExecutionResponse.export[0]
    • http get call to /reportExecutions/{{executionResponse.id}}/exports/{{executionResponse.export[0].id}}/outputResource
  • add junit test

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.