Giter Site home page Giter Site logo

hdsdi3g / prodlib Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 3.0 1.28 MB

Some utilities libs and tools, and parent (pom) projects for small java projects.

License: GNU Lesser General Public License v3.0

Java 99.49% HTML 0.32% Shell 0.18% JavaScript 0.01%
spring-boot watchfolder

prodlib's Introduction

ProdLib

Some utilities libs and tools, and parent (pom) projects for small java projects.

All these projects are consistent with each other. Some use Spring Boot when necessary.

Please use Maven and Java 21 for build, test and run.

All is tested on Windows 10, Linux and GitHub Actions (Ubuntu). Should be ok on macOS.

Relases are sent to Maven central.

Java CI with Maven

CodeQL

Quality Gate Status

Projects / modules

Starter

Commons Maven starter project for bootstrap App, Web app and libs. Pom project, Spring Boot optional, stable.

Parent

Base project for lib. Pom project, Spring Boot, stable.

Parent-web

Base project for web lib. Pom project, Spring Boot, stable.

App

Base project for standalone application. Pom project, Spring Boot, stable.

App-web

Base project for standalone web application. Pom project, Spring Boot, stable.

Interfaces

Java Interfaces and DTOs for connect projects without direct dependencies, for some shared cross-projects objects and definitions.

Java lib, Spring Boot, stable.

Transfertfiles

Manipulate files across protocols: a Java library for upload and download files, with protocol abstraction (local File, FTP/FTPS/FTPES, SFTP), and transfer progression events.

Java lib, standalone, stable.

Jobkit

Base project for all jobkit modules. Pom project, Spring Boot optional, stable.

Jobkit/engine

Execute onetime and scheduled jobs with dynamic queues and events.

Engine embed a Supervisable tool, used in conjonction with JobKitEngine to track, and collect events during the task execution.

Java lib, standalone, stable.

Jobkit/springboot-service

Execute as SpringBoot module the JobKit lib. Java lib, Spring Boot, stable.

Jobkit/watchfolder

Regulary scan folders (local or distant) and throws events on activity.

It can found recently added files and directories in local filesystem, and start events (run Java code) on it.

Java lib, standalone, stable.

Jobkit/watchfolder-jpa

Watchfolder lib with persistence. Java lib, Spring Boot, stable.

Mailkit

Mail engine as notification abstraction.

MailKit can manage Supervisable produced by JobKit, and can transform it in mail: Notification.

Java lib, Spring Boot, stable.

Env-version

Tools for provide project and deps version. Java lib, Spring Boot, stable.

Jsconfig

Let setup JS files as configuration and expose it as a Spring Boot service. Java lib, Spring Boot, Alpha.

Java lib, Spring Boot, Alpha.

Contributing / debugging

Versioning: just use SemVer.

Author and License

This project is writer by hdsdi3g and licensed under the LGPL License; see the LICENCE.TXT file for details.

prodlib's People

Contributors

dependabot[bot] avatar hdsdi3g avatar snyk-bot avatar

Watchers

 avatar  avatar  avatar

prodlib's Issues

Resolve warns after sonatype-lift review

Prefer instanceof to getClass when implementing Object#equals.

For:

  • BufferVault
  • FTPFileSystem
NULL_DEREFERENCE: object protocol last assigned on line 74 could be null and is dereferenced at line 90.

For: AbstractFileSystemURL

ImmutableEnumChecker: enums should be immutable: 'DigestFilterHashExtraction' has field 'digestProvider' of type 'tv.hd3g.transfertfiles.filters.DigestFilterHashExtraction.ExtractionInstanceProvider', the declaration of type 'tv.hd3g.transfertfiles.filters.DigestFilterHashExtraction.ExtractionInstanceProvider' is not annotated with @com.google.errorprone.annotations.Immutable

For: DigestFilterHashExtraction

Create a Notification send mail retention policy and methods

Add a Database, in a separate project ?

Create a Method to Compare 2 Events => same/not same/urgent (not wait).
Create an API to filter urgent/not urgents events.

Create a Policy logic:

  • day/night hours with offline days: collect, release
  • online days and hours: wait n hours, collect, release

Release will aggregate and collect all Events in a same mail.

Never reduce, only collect+release, risk of loose some important datas.
If same: just list the iterations with dates.

Create a Supervisable logic on JobKit

Trace before run:

  • run context vars
  • End-users list (external) and admin users list (internal) not here, see #36
  • Callbacks for Job lifecycle

During run:

  • status (waiting, run, ended, error)

After run:

  • trigger for some events, like mail send, logs, stats… with context vars and lists. Only after end will be implemented now.
  • archive solutions for errors and detect new/same errors (flat files?). Not now, not here

Race condition with Supervisable/Notification and external code

When Spring Boot load on this order:

  • JobKit
  • MailKit
  • external code, like load WatchFolder

=> On boot Notification are sended

BUT

  • JobKit
  • external code, like load WatchFolder
  • MailKit

=> On boot Notification are lost.

Add a retention mechanism for onEndEvents, and liberate and free them when MailKit plug NotificationManager on SupervisableManager.

Upgrade to Spring Boot 3

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...

Setup nexus-staging-maven-plugin

Resolve warning with

[INFO] Installing Nexus Staging features:
[INFO]   ... total of 15 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin

Resolve THREAD_SAFETY_VIOLATION on transfertfiles/BufferVault

sonatype-lift says:

L306

Read/Write race. Non-private method BufferVault.equals(...) reads without synchronization from this.datas. Potentially races with write in method BufferVault.write(...).
Reporting because another access to the same memory occurs on a background thread, although this access may not.

And L288/289

Read/Write race. Non-private method BufferVault.hashCode() reads without synchronization from this.size. Potentially races with write in method BufferVault.write(...).
Reporting because another access to the same memory occurs on a background thread, although this access may not.

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.