From f5df70f5fdea4556d4b3294ddfe64507faf26051 Mon Sep 17 00:00:00 2001 From: Thibault Meyer Date: Tue, 31 May 2022 23:27:03 +0200 Subject: [PATCH 01/75] First page --- CNAME | 1 + favicon.ico | Bin 0 -> 18301 bytes index.html | 27 +++++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 CNAME create mode 100644 favicon.ico diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..1fd5828 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +voidframework.dev \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7891d5e9887ba645b7f4df89992ccf77a1c1ac6b GIT binary patch literal 18301 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%0D_p|SNc~)y~k{JT3P4iFULp4x4#p_Z%sbW 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 {#s&OMkeT#9~MF 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 + + Void Framework + + + + + + + +
+ + Please wait… +
+ + + + + + \ No newline at end of file From 01aa1b41f79b0ae4513183f662617f754bfc0c5c Mon Sep 17 00:00:00 2001 From: Thibault Meyer Date: Wed, 6 Jul 2022 07:14:15 +0200 Subject: [PATCH 02/75] Automated website build --- .hugo_build.lock | 0 categories/index.xml | 1 + css/site.css | 19 +++++ doc/cache/in-memory-cache/index.html | 13 +++ doc/cache/index.html | 8 ++ doc/cache/using-cache/index.html | 30 +++++++ doc/core/class-scanning/index.html | 31 +++++++ doc/core/index.html | 8 ++ doc/core/life-cycle/index.html | 30 +++++++ doc/core/type-conversion/index.html | 37 +++++++++ doc/databases/datasource/index.html | 57 +++++++++++++ doc/databases/index.html | 8 ++ .../persistence-hibernate/index.html | 81 +++++++++++++++++++ doc/getting-started/index.html | 8 ++ .../new-application/index.html | 44 ++++++++++ doc/getting-started/requirements/index.html | 19 +++++ doc/index.html | 8 ++ doc/index.xml | 18 +++++ index.html | 37 +++------ index.xml | 19 +++++ js/application.js | 3 + releasenotes/index.html | 12 +++ sitemap.xml | 1 + tags/index.xml | 1 + 24 files changed, 465 insertions(+), 28 deletions(-) create mode 100644 .hugo_build.lock create mode 100644 categories/index.xml create mode 100644 css/site.css create mode 100644 doc/cache/in-memory-cache/index.html create mode 100644 doc/cache/index.html create mode 100644 doc/cache/using-cache/index.html create mode 100644 doc/core/class-scanning/index.html create mode 100644 doc/core/index.html create mode 100644 doc/core/life-cycle/index.html create mode 100644 doc/core/type-conversion/index.html create mode 100644 doc/databases/datasource/index.html create mode 100644 doc/databases/index.html create mode 100644 doc/databases/persistence-hibernate/index.html create mode 100644 doc/getting-started/index.html create mode 100644 doc/getting-started/new-application/index.html create mode 100644 doc/getting-started/requirements/index.html create mode 100644 doc/index.html create mode 100644 doc/index.xml create mode 100644 index.xml create mode 100644 js/application.js create mode 100644 releasenotes/index.html create mode 100644 sitemap.xml create mode 100644 tags/index.xml diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 0000000..84a1c06 --- /dev/null +++ b/categories/index.xml @@ -0,0 +1 @@ +Categories on Void Frameworkhttps://voidframework.dev/categories/Recent content in Categories on Void FrameworkHugo -- gohugo.io \ No newline at end of file diff --git a/css/site.css b/css/site.css new file mode 100644 index 0000000..5914346 --- /dev/null +++ b/css/site.css @@ -0,0 +1,19 @@ +.disable-select { + user-select: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.enable-select { + user-select: text; + -webkit-user-select: text; + -khtml-user-select: text; + -moz-user-select: text; + -ms-user-select: text; +} + +.nav-pills > li + li { + margin-left: 0 !important; +} diff --git a/doc/cache/in-memory-cache/index.html b/doc/cache/in-memory-cache/index.html new file mode 100644 index 0000000..9053554 --- /dev/null +++ b/doc/cache/in-memory-cache/index.html @@ -0,0 +1,13 @@ +Void Framework – Cache engine : In-memory

Cache engine : In-memory

This implementation of the cache engine is the default if no configuration is specified. It is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.


Installation

<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-cache</artifactId>
+    <version>1.0.0</version>
+</dependency>
+

To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file.


Configuration

The following configuration key can be used in the configuration file of your application.

  • voidframework.cache.inMemory.flushWhenFullMaxItem the maximum number of items to be kept in the cache before it gets flushed.

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/cache/index.html b/doc/cache/index.html new file mode 100644 index 0000000..ba3cc20 --- /dev/null +++ b/doc/cache/index.html @@ -0,0 +1,8 @@ +Void Framework – Cache

Cache


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/cache/using-cache/index.html b/doc/cache/using-cache/index.html new file mode 100644 index 0000000..324044e --- /dev/null +++ b/doc/cache/using-cache/index.html @@ -0,0 +1,30 @@ +Void Framework – Using cache

Using cache

Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine.


Using Cache with annotations

The cache can be used with the following annotations:


@CacheRemove

Indicates that the cache must be evicted.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • evictOn allows you to provide the exception types that must cause a cache eviction. If classes are specified, the cache will only be evicted if the specified exceptions are thrown. The default value is {}.

  • noEvictOn allows you to provide the exception types that must not cause a cache eviction. The default value is {}.


@CacheResult

Indicates that the result of the method will be cached and reused in future calls.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • timeToLive allows you to provide a configuration key to retrieve the maximum time in milliseconds to wait before giving up and continuing to stop the application. If no key is specified, the default value -1 (no expiration) will be used.


Example
@BindClass
+public class CacheExample {
+
+    @CacheResult
+    public String exampleMethod() {
+        return "value";
+    }
+}
+

Using Cache programmatically

The programmatic usage of the cache is very simple and can be done via the injection of CacheEngine.

public class CacheExample {
+
+    private final CacheEngine cacheEngine;
+
+    @Inject
+    public CacheExample(final CacheEngine cacheEngine) {
+        this.cacheEngine = cacheEngine;
+    }
+
+    public void exampleMethod() {
+        cacheEngine.set("key", "value");
+    }
+}
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/core/class-scanning/index.html b/doc/core/class-scanning/index.html new file mode 100644 index 0000000..ace8fd6 --- /dev/null +++ b/doc/core/class-scanning/index.html @@ -0,0 +1,31 @@ +Void Framework – Class scanning

Class scanning

The core of the Void Framework is based on the scanning of different paths to discover elements to load. +3 types of elements are recognised during the scan:

  • Bindable classes (see below)
  • classes implementing the TypeConverter interface
  • classes which extend AbstractModule (Guice)

Bindable

@Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. +Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.

AnnotationDescription
@BindClassIndicates that an annotated class is a “Bindable”
@ControllerIndicates that an annotated class is a “Controller”
@RepositoryIndicates that an annotated class is a “Repository”
@ServiceIndicates that an annotated class is a “Service”

Bootstrap file generator

Scanning classes can, for several reasons, drastically increase the start-up time of the application. To mitigate this phenomenon, it is possible to use a bootstrap file, generated in advance, containing the useful classes detected during the scan. At compile time, the file resources/classpath.bootstrap will be created.

To activate the generator, simply add the following lines to the pom.xml file.

<plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>exec-maven-plugin</artifactId>
+    <version>3.0.0</version>
+    <executions>
+        <execution>
+            <id>generate-classpath-bootstrap</id>
+            <goals>
+                <goal>java</goal>
+            </goals>
+            <phase>process-sources</phase>
+            <configuration>
+                <mainClass>dev.voidframework.core.classestoload.generator.ClasspathBootstrapGenerator</mainClass>
+                <arguments>
+                    <argument>${project.build.outputDirectory}</argument>
+                </arguments>
+            </configuration>
+        </execution>
+    </executions>
+</plugin>
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/core/index.html b/doc/core/index.html new file mode 100644 index 0000000..98bf18f --- /dev/null +++ b/doc/core/index.html @@ -0,0 +1,8 @@ +Void Framework – Core

Core


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/core/life-cycle/index.html b/doc/core/life-cycle/index.html new file mode 100644 index 0000000..f663eee --- /dev/null +++ b/doc/core/life-cycle/index.html @@ -0,0 +1,30 @@ +Void Framework – Life cycle

Life cycle

Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped.


@LifeCycleStart

Indicates that this method should be called when the application starts.

The annotation accepts the following parameter:

  • priority is used to define when the method will be called in relation to the others. The lower the priority, the higher the priority of the method. The default value is 1000.

@LifeCycleStop

Indicates that this method should be called when the application is stopped.

The annotation accepts the following parameters:

  • priority allows you to define when the method will be called in relation to the others. The lower the priority, the higher the priority of the method. The default value is 1000.
  • gracefulStopTimeoutConfigKey allows you to provide a configuration key to retrieve the maximum time in milliseconds to wait before giving up and continuing to stop the application. If no key is specified, the default value 0 will be used.

Example

@BindClass
+@Singleton
+public final class ExampleLifeCycle {
+
+    @Inject
+    private final Config configuration;
+
+    @Inject
+    public ExampleLifeCycle(final Config configuration) {
+        this.configuration = configuration;
+    }
+
+    @LifeCycleStart(priority = 1000)
+    public void onStart() {
+    }
+
+    @LifeCycleStop(priority = 1)
+    public void onStop() {
+    }
+}
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/core/type-conversion/index.html b/doc/core/type-conversion/index.html new file mode 100644 index 0000000..9e6e1e0 --- /dev/null +++ b/doc/core/type-conversion/index.html @@ -0,0 +1,37 @@ +Void Framework – Type conversion

Type conversion

Type conversion is a mechanism for converting data from one type to another. For example, convert the string “1234” to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller.


Using conversion

The conversion is used via the Conversion service which is accessible via direct injection.

public final class ExampleConversionService {
+
+    private final Conversion conversion;
+
+    @Inject
+    public DummyService(final Conversion conversion) {
+        this.conversion = conversion;
+    }
+
+    public void example() {
+        final String boolAsString = "true";
+        final Boolean bool = conversion.convert(boolAsString, Boolean.class);
+        // or conversion.convert(boolAsString, String.class, Boolean.class);
+    }
+}
+

Creating a new converter

The creation of a new converter is very simple, you just have to implement the TypeConverter interface and to register this implementation with the ConverterManager. The registration will be done automatically if the newly created converter is in a package which will be scanned at the start of the application (see the voidframework.core.acceptedScanPaths parameter).

/**
+ * Convert a {@code String} into an {@code Boolean}.
+ */
+public final class StringToBooleanConverter implements TypeConverter<String, Boolean> {
+
+    private static final List<String> VALUE_TRUE_LIST = Arrays.asList("1", "true", "y", "yes");
+
+    @Override
+    public Boolean convert(final String source) {
+        // The "source" variable will never be null
+        return VALUE_TRUE_LIST.contains(source.toLowerCase(Locale.ENGLISH));
+    }
+}
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/databases/datasource/index.html b/doc/databases/datasource/index.html new file mode 100644 index 0000000..870534b --- /dev/null +++ b/doc/databases/datasource/index.html @@ -0,0 +1,57 @@ +Void Framework – Data source

Data source

Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time.


Configuration

Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change. Here you will find all the information to fully configure each implementation.

C3P0
<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-datasource-c3p0</artifactId>
+    <version>1.0.0</version>
+</dependency>
+
HikariCP
<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-datasource-hikaricp</artifactId>
+    <version>1.0.0</version>
+</dependency>
+

The following configuration keys can be used in the configuration file of your application:

  • required +voidframework.datasource.default.driver the driver to be used to communicate with the database.
  • required +voidframework.datasource.default.url the JDBC format URL to be used to reach the database.
  • required +voidframework.datasource.default.username the username to be provided durint the authentication step.
  • required +voidframework.datasource.default.password the password to be provided durint the authentication step.
  • C3P0 only +optional +voidframework.datasource.default.statementCacheNumDeferredCloseThreads defines the number of threads to track when Connections are in use, and only destroy Statements when their parent Connections are not otherwise in use.
  • optional +voidframework.datasource.default.cachePrepStmts enable or disable the prepared statements cache.
  • optional +voidframework.datasource.default.prepStmtCacheSize the number of prepared statements cache to keep in the cache.
  • optional +voidframework.datasource.default.prepStmtCacheSqlLimit the size of the largest SQL query for which the parsing result will be keep in the cache.
  • optional +voidframework.datasource.default.autoCommit enable or disable the auto commit behavior when the connection goes back into the pool.
  • optional +voidframework.datasource.default.connectionInitSql the SQL statement that will be executed after every new connection.
  • optional +voidframework.datasource.default.connectionTestQuery the SQL statement that will be executed to test if the connection is still valid.
  • optional +voidframework.datasource.default.connectionTimeout the milliseconds to wait before timing out during the connection.
  • optional +voidframework.datasource.default.idleTimeout the milliseconds to wait before closing an unused connection.
  • optional +voidframework.datasource.default.keepaliveTime the milliseconds to wait before attempting to keep the connection alive.
  • optional +voidframework.datasource.default.minimumIdle the minimum number of alive connections in the pool.
  • optional +voidframework.datasource.default.maximumPoolSize the maximum number of connections allowed in the pool.
  • C3P0 only +optional +voidframework.datasource.default.acquireIncrement determines how many connections at a time C3P0 will try to acquire when the pool is exhausted.

Usage

@Service
+public class ExampleDataSourceService {
+
+    private final Provider<DataSourceManager> dataSourceManagerProvider;
+
+    @Inject
+    public ExampleService(final Provider<DataSourceManager> dataSourceManagerProvider) {
+        this.dataSourceManagerProvider = dataSourceManagerProvider;
+    }
+
+    public void example() throws SQLException {
+      final Connection conn = dataSourceManagerProvider
+          .get()
+          .getConnection("default");
+      /* ... */
+      conn.close();
+    }
+}
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/databases/index.html b/doc/databases/index.html new file mode 100644 index 0000000..b6480d3 --- /dev/null +++ b/doc/databases/index.html @@ -0,0 +1,8 @@ +Void Framework – Databases

Databases


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/databases/persistence-hibernate/index.html b/doc/databases/persistence-hibernate/index.html new file mode 100644 index 0000000..a52aaff --- /dev/null +++ b/doc/databases/persistence-hibernate/index.html @@ -0,0 +1,81 @@ +Void Framework – Hibernate

Hibernate

Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database.

This module adds support for the Transactional annotation as well as setting up an EntityManager provider pre-configured with all the data sources configured via the datasource module. There is no special configuration to apply, just add the voidframework-persistence-hibernate module to the pom.xml file of your project.

<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-persistence-hibernate</artifactId>
+    <version>1.0.0</version>
+</dependency>
+

@Transactional

The transactional annotation itself defines the scope of a single database transaction. Void Framework fully implements Transactional annotation, so all availables options can be used without any restrictions.

If annotation is used both at class and method level, the second one will take ascendance.


Exemple

@Entity
+@DynamicUpdate
+@Table(name = "NEWS")
+public class NewsModel extends Model {
+
+    @Column(name = "TITLE", nullable = false)
+    private String title;
+
+    @Column(name = "CONTENT", nullable = false)
+    private String content;
+
+    @Column(name = "PUBLISHED_AT", columnDefinition = "TIMESTAMP", updatable = false, nullable = false)
+    private LocalDateTime publishedAt;
+
+    @Override
+    public String toString() {
+        return this.getClass().getName() + "[id=" + this.id + "]";
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(final String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(final String content) {
+        this.content = content;
+    }
+
+    public LocalDateTime getPublishedAt() {
+        return publishedAt;
+    }
+
+    public void setPublishedAt(final LocalDateTime publishedAt) {
+        this.publishedAt = publishedAt;
+    }
+}
+
public class NewsRepositoryImpl implements NewsRepository {
+
+    private final Conversion conversion;
+    private final Provider<EntityManager> entityManagerProvider;
+
+    @Inject
+    public NewsRepositoryImpl(final Conversion conversion,
+                              final Provider<EntityManager> entityManagerProvider) {
+        this.conversion = conversion;
+        this.entityManagerProvider = entityManagerProvider;
+    }
+
+    @Overide
+    @Transactional(Transactional.TxType.SUPPORTS)
+    public List<News> findTop10ByPublishedAtBeforeNowOrderByPublishedAtDesc() {
+        final List<NewsModel> newsModelList = entityManagerProvider.get()
+                .createQuery("SELECT x FROM NewsModel x WHERE x.publishedAt <= CURRENT_TIMESTAMP ORDER BY x.publishedAt DESC, x.id ASC", NewsModel.class)
+                .setMaxResults(10)
+                .getResultList();
+
+        return conversion.convert(newsModelList, NewsModel.class, News.class);
+    }
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/getting-started/index.html b/doc/getting-started/index.html new file mode 100644 index 0000000..f4c88b9 --- /dev/null +++ b/doc/getting-started/index.html @@ -0,0 +1,8 @@ +Void Framework – Getting Started

Getting Started


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/getting-started/new-application/index.html b/doc/getting-started/new-application/index.html new file mode 100644 index 0000000..f55b629 --- /dev/null +++ b/doc/getting-started/new-application/index.html @@ -0,0 +1,44 @@ +Void Framework – Creating a new application

Creating a new application

To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies.


Maven

The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.

In this example, we will also use the web feature, so the voidframework-web dependency will also be added

<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-core</artifactId>
+    <version>1.0.0</version>
+</dependency>
+<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-web</artifactId>
+    <version>1.0.0</version>
+</dependency>
+

Configuration

Void Framework use a configuration file format is HOCON (Human-Optimized Config Object Notation). This format supports types such as integer, long, boolean, double, string, list and object. There are two ways to write comments: using // or #. Comments can be written in-line at the end of the line or in separate lines. For more information on Typesafe Config, visit the Github project’s page.

The first thing to do is to indicate the paths to scan to find the elements of your application that can be loaded. The default location for the configuration file is resources/application.conf.

voidframework {
+    core {
+        acceptedScanPaths += "controller"
+    }
+}
+

Web controller

Add the following controller to the controller package or any package that will be considered by the acceptedScanPaths configuration.

package controller;
+
+import dev.voidframework.web.bindable.WebController;
+import dev.voidframework.web.http.HttpContentType;
+import dev.voidframework.web.http.Result;
+import dev.voidframework.web.http.param.RequestRoute;
+import dev.voidframework.web.routing.HttpMethod;
+
+@WebController
+public final class MyFirstController {
+
+    @RequestRoute(method = HttpMethod.GET, route = "/")
+    public Result sayHello() {
+
+        return Result.ok("Hello World!");
+    }
+}
+

Application launcher

To start the application, you have to instantiate ApplicationLauncher and then call the launch method.

final ApplicationLauncher applicationLauncher = new ApplicationLauncher();
+applicationLauncher.launch();
+

Run your application

You can now start your application and go to the URL http://127.0.0.1:9000 in your favourite web browser.


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/getting-started/requirements/index.html b/doc/getting-started/requirements/index.html new file mode 100644 index 0000000..725b6b7 --- /dev/null +++ b/doc/getting-started/requirements/index.html @@ -0,0 +1,19 @@ +Void Framework – Requirements

Requirements

To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository.


Verifying and installing Java

To check that you have Java JDK 17 or higher, enter the following in a shell:

#> java -version
+

You should see something like:

openjdk version "17.0.2" 2022-01-18
+OpenJDK Runtime Environment (build 17.0.2+8-86)
+OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
+

If Java JDK is not available on your computer, you can get Java JDK from Oracle’s website.


Verifying and installing Java

To check that you have Maven 3 or higher, enter the following in a shell:

#> mvn -version
+

You should see something like:

Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
+Maven home: C:\maven\lib\maven3
+Java version: 17.0.2, vendor: Oracle Corporation, runtime: C:\Users\user\.jdks\openjdk-17.0.2
+Default locale: en_US, platform encoding: UTF-8
+OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
+

If Maven is not available on your computer, you can get Maven from Apache Maven Project.


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..405251c --- /dev/null +++ b/doc/index.html @@ -0,0 +1,8 @@ +Void Framework – Documentation

Documentation


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/index.xml b/doc/index.xml new file mode 100644 index 0000000..a2ece15 --- /dev/null +++ b/doc/index.xml @@ -0,0 +1,18 @@ +Docs on Void Frameworkhttps://voidframework.dev/doc/Recent content in Docs on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time. +Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database. +&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is the default if no configuration is specified. It is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. +Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. +Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan: +Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies. +Maven The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.Life cyclehttps://voidframework.dev/doc/core/life-cycle/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/life-cycle/Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped. +&nbsp; It is possible to have several methods of a class annotated with the same annotation. @LifeCycleStart Indicates that this method should be called when the application starts. +The annotation accepts the following parameter: +priority is used to define when the method will be called in relation to the others.Requirementshttps://voidframework.dev/doc/getting-started/requirements/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/requirements/To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository. +Verifying and installing Java To check that you have Java JDK 17 or higher, enter the following in a shell: +#&gt; java -version You should see something like: +openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller. +Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine. +Using Cache with annotations The cache can be used with the following annotations: +@CacheRemove Indicates that the cache must be evicted. +The annotation accepts the following parameters: +key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). \ No newline at end of file diff --git a/index.html b/index.html index 6284158..aa490d3 100644 --- a/index.html +++ b/index.html @@ -1,28 +1,9 @@ - - - - Void Framework - - - - - - - -
- - Please wait… -
- - - - - - \ No newline at end of file +Void Framework

Light and modular Framework for Java

Stay focus on your business



© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/index.xml b/index.xml new file mode 100644 index 0000000..c76e714 --- /dev/null +++ b/index.xml @@ -0,0 +1,19 @@ +Void Frameworkhttps://voidframework.dev/Recent content on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time. +Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database. +&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is the default if no configuration is specified. It is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. +Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. +Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan: +Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies. +Maven The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.Documentationhttps://voidframework.dev/doc/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/Life cyclehttps://voidframework.dev/doc/core/life-cycle/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/life-cycle/Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped. +&nbsp; It is possible to have several methods of a class annotated with the same annotation. @LifeCycleStart Indicates that this method should be called when the application starts. +The annotation accepts the following parameter: +priority is used to define when the method will be called in relation to the others.Release noteshttps://voidframework.dev/releasenotes/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/releasenotes/1.0.0 2022-07-02 +New Initial releaseRequirementshttps://voidframework.dev/doc/getting-started/requirements/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/requirements/To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository. +Verifying and installing Java To check that you have Java JDK 17 or higher, enter the following in a shell: +#&gt; java -version You should see something like: +openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller. +Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine. +Using Cache with annotations The cache can be used with the following annotations: +@CacheRemove Indicates that the cache must be evicted. +The annotation accepts the following parameters: +key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). \ No newline at end of file diff --git a/js/application.js b/js/application.js new file mode 100644 index 0000000..edf9962 --- /dev/null +++ b/js/application.js @@ -0,0 +1,3 @@ +$('#sidebar-menu').on('change', function() { + $(location).prop('href', this.value); +}); diff --git a/releasenotes/index.html b/releasenotes/index.html new file mode 100644 index 0000000..7399f87 --- /dev/null +++ b/releasenotes/index.html @@ -0,0 +1,12 @@ +Void Framework – Release notes

1.0.0

+2022-07-02

New +Initial release


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..25da66a --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://voidframework.dev/doc/databases/datasource/https://voidframework.dev/doc/databases/persistence-hibernate/https://voidframework.dev/doc/getting-started/https://voidframework.dev/doc/cache/https://voidframework.dev/doc/core/https://voidframework.dev/doc/databases/https://voidframework.dev/doc/cache/in-memory-cache/https://voidframework.dev/categories/https://voidframework.dev/doc/core/class-scanning/https://voidframework.dev/doc/getting-started/new-application/https://voidframework.dev/doc/https://voidframework.dev/doc/https://voidframework.dev/doc/core/life-cycle/https://voidframework.dev/releasenotes/https://voidframework.dev/doc/getting-started/requirements/https://voidframework.dev/tags/https://voidframework.dev/doc/core/type-conversion/https://voidframework.dev/doc/cache/using-cache/https://voidframework.dev/ \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 0000000..87e8ff1 --- /dev/null +++ b/tags/index.xml @@ -0,0 +1 @@ +Tags on Void Frameworkhttps://voidframework.dev/tags/Recent content in Tags on Void FrameworkHugo -- gohugo.io \ No newline at end of file From 5588f9b711eea1922dc874178d92c3caaecf466f Mon Sep 17 00:00:00 2001 From: Thibault Meyer Date: Thu, 7 Jul 2022 17:16:48 +0000 Subject: [PATCH 03/75] Automated website build --- .hugo_build.lock | 0 doc/cache/in-memory-cache/index.html | 5 +++-- doc/cache/using-cache/index.html | 4 ++-- doc/index.xml | 6 +++--- index.xml | 6 +++--- 5 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 .hugo_build.lock diff --git a/.hugo_build.lock b/.hugo_build.lock deleted file mode 100644 index e69de29..0000000 diff --git a/doc/cache/in-memory-cache/index.html b/doc/cache/in-memory-cache/index.html index 9053554..9dfa864 100644 --- a/doc/cache/in-memory-cache/index.html +++ b/doc/cache/in-memory-cache/index.html @@ -1,7 +1,8 @@ -Void Framework – Cache engine : In-memory

Cache engine : In-memory

This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.


Installation

<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-cache</artifactId>
     <version>1.0.0</version>
diff --git a/doc/cache/using-cache/index.html b/doc/cache/using-cache/index.html
index 324044e..24b7f7d 100644
--- a/doc/cache/using-cache/index.html
+++ b/doc/cache/using-cache/index.html
@@ -1,8 +1,8 @@
 Void Framework – Using cache

Using cache

Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine.

If no CacheEngine implementation is specified, the cache will not be active.


Using Cache with annotations

The cache can be used with the following annotations:


@CacheRemove

Indicates that the cache must be evicted.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • evictOn allows you to provide the exception types that must cause a cache eviction. If classes are specified, the cache will only be evicted if the specified exceptions are thrown. The default value is {}.

  • noEvictOn allows you to provide the exception types that must not cause a cache eviction. The default value is {}.


@CacheResult

Indicates that the result of the method will be cached and reused in future calls.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • timeToLive allows you to provide a configuration key to retrieve the maximum time in milliseconds to wait before giving up and continuing to stop the application. If no key is specified, the default value -1 (no expiration) will be used.


Example
@BindClass
 public class CacheExample {
 
     @CacheResult
diff --git a/doc/index.xml b/doc/index.xml
index a2ece15..013b340 100644
--- a/doc/index.xml
+++ b/doc/index.xml
@@ -1,6 +1,6 @@
 Docs on Void Frameworkhttps://voidframework.dev/doc/Recent content in Docs on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time.
 Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database.
-&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is the default if no configuration is specified. It is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.
+&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.
 Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file.
 Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan:
 Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies.
@@ -12,7 +12,7 @@ Verifying and installing Java To check that you have Java JDK 17 or higher, ente
 #&gt; java -version You should see something like:
 openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller.
 Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine.
+If no CacheEngine implementation is specified, the cache will not be active.
 Using Cache with annotations The cache can be used with the following annotations:
 @CacheRemove Indicates that the cache must be evicted.
-The annotation accepts the following parameters:
-key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position).
\ No newline at end of file
+The annotation accepts the following parameters:
\ No newline at end of file
diff --git a/index.xml b/index.xml
index c76e714..cce360a 100644
--- a/index.xml
+++ b/index.xml
@@ -1,6 +1,6 @@
 Void Frameworkhttps://voidframework.dev/Recent content on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time.
 Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database.
-&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is the default if no configuration is specified. It is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.
+&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.
 Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file.
 Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan:
 Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies.
@@ -13,7 +13,7 @@ Verifying and installing Java To check that you have Java JDK 17 or higher, ente
 #&gt; java -version You should see something like:
 openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller.
 Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine.
+If no CacheEngine implementation is specified, the cache will not be active.
 Using Cache with annotations The cache can be used with the following annotations:
 @CacheRemove Indicates that the cache must be evicted.
-The annotation accepts the following parameters:
-key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position).
\ No newline at end of file
+The annotation accepts the following parameters:
\ No newline at end of file

From eb2a5a982c2e01ed25026833f620b5b562a67312 Mon Sep 17 00:00:00 2001
From: Thibault Meyer 
Date: Sun, 10 Jul 2022 09:55:57 +0200
Subject: [PATCH 04/75] Automated website build

---
 css/site.css                                  |  6 ++
 doc/cache/in-memory-cache/index.html          |  4 +-
 doc/cache/index.html                          |  2 +-
 doc/cache/using-cache/index.html              |  6 +-
 doc/core/boot-sequence/index.html             |  9 +++
 doc/core/class-scanning/index.html            |  2 +-
 doc/core/index.html                           |  2 +-
 doc/core/life-cycle/index.html                |  2 +-
 doc/core/type-conversion/index.html           |  2 +-
 doc/databases/datasource/index.html           |  6 +-
 doc/databases/index.html                      |  2 +-
 .../persistence-hibernate/index.html          |  4 +-
 doc/getting-started/index.html                |  2 +-
 .../new-application/index.html                |  6 +-
 doc/getting-started/requirements/index.html   |  2 +-
 doc/i18n/index.html                           |  8 +++
 doc/index.html                                |  2 +-
 doc/index.xml                                 | 12 ++--
 .../using-i18n/index.html                     | 58 +++++++++++++++++++
 index.xml                                     | 17 +++---
 releasenotes/index.html                       | 11 ++--
 sitemap.xml                                   |  2 +-
 22 files changed, 125 insertions(+), 42 deletions(-)
 create mode 100644 doc/core/boot-sequence/index.html
 create mode 100644 doc/i18n/index.html
 create mode 100644 doc/internationalization/using-i18n/index.html

diff --git a/css/site.css b/css/site.css
index 5914346..9bd5ea2 100644
--- a/css/site.css
+++ b/css/site.css
@@ -17,3 +17,9 @@
 .nav-pills > li + li {
     margin-left: 0 !important;
 }
+
+.goat {
+    max-width: 650px;
+    margin-left: auto;
+    margin-right: auto;
+}
diff --git a/doc/cache/in-memory-cache/index.html b/doc/cache/in-memory-cache/index.html
index 9dfa864..cfa13e9 100644
--- a/doc/cache/in-memory-cache/index.html
+++ b/doc/cache/in-memory-cache/index.html
@@ -2,10 +2,10 @@
 Insta">Void Framework – Cache engine : In-memory

Cache engine : In-memory

This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.


Installation

<dependency>
+Release notes

Cache engine : In-memory

This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment.


Installation

<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-cache</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 

To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file.


Configuration

The following configuration key can be used in the configuration file of your application.

  • voidframework.cache.inMemory.flushWhenFullMaxItem the maximum number of items to be kept in the cache before it gets flushed.

© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/cache/index.html b/doc/cache/index.html index ba3cc20..7978e8f 100644 --- a/doc/cache/index.html +++ b/doc/cache/index.html @@ -1,7 +1,7 @@ Void Framework – Cache

Cache



Cache


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/cache/using-cache/index.html b/doc/cache/using-cache/index.html index 24b7f7d..fdeffb3 100644 --- a/doc/cache/using-cache/index.html +++ b/doc/cache/using-cache/index.html @@ -1,8 +1,10 @@ Void Framework – Using cache

Using cache

Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine.


Using Cache with annotations

The cache can be used with the following annotations:


@CacheRemove

Indicates that the cache must be evicted.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • evictOn allows you to provide the exception types that must cause a cache eviction. If classes are specified, the cache will only be evicted if the specified exceptions are thrown. The default value is {}.

  • noEvictOn allows you to provide the exception types that must not cause a cache eviction. The default value is {}.


@CacheResult

Indicates that the result of the method will be cached and reused in future calls.

The annotation accepts the following parameters:

  • key allows you to define the cache key. It can contains dynamic information via the usage of {class}, {method} and {n} (with n the method argument position). The default value is {class}.{name}.

  • timeToLive allows you to provide a configuration key to retrieve the maximum time in milliseconds to wait before giving up and continuing to stop the application. If no key is specified, the default value -1 (no expiration) will be used.


Example
@BindClass
 public class CacheExample {
 
     @CacheResult
diff --git a/doc/core/boot-sequence/index.html b/doc/core/boot-sequence/index.html
new file mode 100644
index 0000000..a799479
--- /dev/null
+++ b/doc/core/boot-sequence/index.html
@@ -0,0 +1,9 @@
+Void Framework – Boot sequence

Boot sequence

Below is a diagram describing the boot sequence of Void Framework.


ScanClNaOsspathscRlLeLLaogios(aifas2dsedpatCa)Geycturcohiln.ccefbeoiongomv(utoeSrsdrtatutatrleriaertopLss)n?oad((c3((1(l)45)2a)))ssYpEaSth.bootstrap(2b)

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/core/class-scanning/index.html b/doc/core/class-scanning/index.html index ace8fd6..7897a9e 100644 --- a/doc/core/class-scanning/index.html +++ b/doc/core/class-scanning/index.html @@ -2,7 +2,7 @@ Bindable classes (see below) classes implementing the TypeConverter interface classes which e">Void Framework – Class scanning

Class scanning

The core of the Void Framework is based on the scanning of different paths to discover elements to load. +Release notes


Class scanning

The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan:

  • Bindable classes (see below)
  • classes implementing the TypeConverter interface
  • classes which extend AbstractModule (Guice)

Bindable

@Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.

AnnotationDescription
@BindClassIndicates that an annotated class is a “Bindable”
@ControllerIndicates that an annotated class is a “Controller”
@RepositoryIndicates that an annotated class is a “Repository”
@ServiceIndicates that an annotated class is a “Service”

Bootstrap file generator

Scanning classes can, for several reasons, drastically increase the start-up time of the application. To mitigate this phenomenon, it is possible to use a bootstrap file, generated in advance, containing the useful classes detected during the scan. At compile time, the file resources/classpath.bootstrap will be created.

To activate the generator, simply add the following lines to the pom.xml file.

<plugin>
     <groupId>org.codehaus.mojo</groupId>
diff --git a/doc/core/index.html b/doc/core/index.html
index 98bf18f..a01cf64 100644
--- a/doc/core/index.html
+++ b/doc/core/index.html
@@ -1,7 +1,7 @@
 Void Framework – Core

Core



Core


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/core/life-cycle/index.html b/doc/core/life-cycle/index.html index f663eee..8e32740 100644 --- a/doc/core/life-cycle/index.html +++ b/doc/core/life-cycle/index.html @@ -2,7 +2,7 @@ &nbsp; It is possible to have ">Void Framework – Life cycle

Life cycle

Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped.


Life cycle

Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped.


@LifeCycleStart

Indicates that this method should be called when the application starts.

The annotation accepts the following parameter:

  • priority is used to define when the method will be called in relation to the others. The lower the priority, the higher the priority of the method. The default value is 1000.

@LifeCycleStop

Indicates that this method should be called when the application is stopped.

The annotation accepts the following parameters:

  • priority allows you to define when the method will be called in relation to the others. The lower the priority, the higher the priority of the method. The default value is 1000.
  • gracefulStopTimeoutConfigKey allows you to provide a configuration key to retrieve the maximum time in milliseconds to wait before giving up and continuing to stop the application. If no key is specified, the default value 0 will be used.

Example

@BindClass
 @Singleton
 public final class ExampleLifeCycle {
diff --git a/doc/core/type-conversion/index.html b/doc/core/type-conversion/index.html
index 9e6e1e0..264403c 100644
--- a/doc/core/type-conversion/index.html
+++ b/doc/core/type-conversion/index.html
@@ -1,7 +1,7 @@
 Void Framework – Type conversion

Type conversion

Type conversion is a mechanism for converting data from one type to another. For example, convert the string “1234” to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller.


Using conversion

The conversion is used via the Conversion service which is accessible via direct injection.

public final class ExampleConversionService {
+Release notes

Type conversion

Type conversion is a mechanism for converting data from one type to another. For example, convert the string “1234” to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller.


Using conversion

The conversion is used via the Conversion service which is accessible via direct injection.

public final class ExampleConversionService {
 
     private final Conversion conversion;
 
diff --git a/doc/databases/datasource/index.html b/doc/databases/datasource/index.html
index 870534b..b7d83fc 100644
--- a/doc/databases/datasource/index.html
+++ b/doc/databases/datasource/index.html
@@ -1,16 +1,16 @@
 Void Framework – Data source

Data source

Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time.


Configuration

Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change. Here you will find all the information to fully configure each implementation.


Data source

Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time.


Configuration

Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change. Here you will find all the information to fully configure each implementation.

C3P0
<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-datasource-c3p0</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 
HikariCP
<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-datasource-hikaricp</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 

The following configuration keys can be used in the configuration file of your application:


Databases


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/databases/persistence-hibernate/index.html b/doc/databases/persistence-hibernate/index.html index a52aaff..234c232 100644 --- a/doc/databases/persistence-hibernate/index.html +++ b/doc/databases/persistence-hibernate/index.html @@ -2,11 +2,11 @@ &nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined b">Void Framework – Hibernate

Hibernate

Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database.


Hibernate

Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database.

This module adds support for the Transactional annotation as well as setting up an EntityManager provider pre-configured with all the data sources configured via the datasource module. There is no special configuration to apply, just add the voidframework-persistence-hibernate module to the pom.xml file of your project.

<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-persistence-hibernate</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 

@Transactional

The transactional annotation itself defines the scope of a single database transaction. Void Framework fully implements Transactional annotation, so all availables options can be used without any restrictions.

If annotation is used both at class and method level, the second one will take ascendance.


Exemple

@Entity
diff --git a/doc/getting-started/index.html b/doc/getting-started/index.html
index f4c88b9..71341f0 100644
--- a/doc/getting-started/index.html
+++ b/doc/getting-started/index.html
@@ -1,7 +1,7 @@
 Void Framework – Getting Started

Getting Started



Getting Started


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/getting-started/new-application/index.html b/doc/getting-started/new-application/index.html index f55b629..a9f573e 100644 --- a/doc/getting-started/new-application/index.html +++ b/doc/getting-started/new-application/index.html @@ -2,15 +2,15 @@ Maven The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the">Void Framework – Creating a new application

Creating a new application

To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies.


Maven

The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.

In this example, we will also use the web feature, so the voidframework-web dependency will also be added

<dependency>
+Release notes

Creating a new application

To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies.


Maven

The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.

In this example, we will also use the web feature, so the voidframework-web dependency will also be added

<dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-core</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 <dependency>
     <groupId>dev.voidframework</groupId>
     <artifactId>voidframework-web</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
 </dependency>
 

Configuration

Void Framework use a configuration file format is HOCON (Human-Optimized Config Object Notation). This format supports types such as integer, long, boolean, double, string, list and object. There are two ways to write comments: using // or #. Comments can be written in-line at the end of the line or in separate lines. For more information on Typesafe Config, visit the Github project’s page.

The first thing to do is to indicate the paths to scan to find the elements of your application that can be loaded. The default location for the configuration file is resources/application.conf.

voidframework {
     core {
diff --git a/doc/getting-started/requirements/index.html b/doc/getting-started/requirements/index.html
index 725b6b7..fbb482b 100644
--- a/doc/getting-started/requirements/index.html
+++ b/doc/getting-started/requirements/index.html
@@ -2,7 +2,7 @@
 Verifying and installing Java To check that you have Java JDK 17 or higher, enter th">Void Framework – Requirements

Requirements

To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository.


Verifying and installing Java

To check that you have Java JDK 17 or higher, enter the following in a shell:

#> java -version
+Release notes

Requirements

To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository.


Verifying and installing Java

To check that you have Java JDK 17 or higher, enter the following in a shell:

#> java -version
 

You should see something like:

openjdk version "17.0.2" 2022-01-18
 OpenJDK Runtime Environment (build 17.0.2+8-86)
 OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
diff --git a/doc/i18n/index.html b/doc/i18n/index.html
new file mode 100644
index 0000000..ad7a9f5
--- /dev/null
+++ b/doc/i18n/index.html
@@ -0,0 +1,8 @@
+Void Framework – Internationalization

Internationalization


© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/doc/index.html b/doc/index.html index 405251c..b81c2d2 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,7 +1,7 @@ Void Framework – Documentation

Documentation



Documentation


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/doc/index.xml b/doc/index.xml index 013b340..87bcd8b 100644 --- a/doc/index.xml +++ b/doc/index.xml @@ -1,7 +1,8 @@ Docs on Void Frameworkhttps://voidframework.dev/doc/Recent content in Docs on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time. Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database. -&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. -Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. +&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Internationalizationhttps://voidframework.dev/doc/i18n/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/i18n/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Boot sequencehttps://voidframework.dev/doc/core/boot-sequence/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/boot-sequence/Below is a diagram describing the boot sequence of Void Framework. +S c a n C l N a O s s p a t h s c R l L e L L a o g i o s ( a i f a s 2 d s e d p a t C a ) G e y c t u r c o h i l n .Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. +Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.1&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan: Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies. Maven The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.Life cyclehttps://voidframework.dev/doc/core/life-cycle/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/life-cycle/Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped. @@ -12,7 +13,6 @@ Verifying and installing Java To check that you have Java JDK 17 or higher, ente #&gt; java -version You should see something like: openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller. Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine. -If no CacheEngine implementation is specified, the cache will not be active. -Using Cache with annotations The cache can be used with the following annotations: -@CacheRemove Indicates that the cache must be evicted. -The annotation accepts the following parameters: \ No newline at end of file +&nbsp; If no CacheEngine implementation was specified, the cache will not be active. &nbsp; Note that caching a Result (Web) object can lead to errors during deserialization, especially if Result contains an InputStream. Using Cache with annotations The cache can be used with the following annotations:Using internationalizationhttps://voidframework.dev/doc/internationalization/using-i18n/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/internationalization/using-i18n/Depending on your needs, you may need to use translated messages in different languages. By default the Void Framework provides a ResourceBundle based implementation. If your needs require more advanced management or different storage (ie: DB rather than files), you can easily use your own implementation. +To enable this module, just add following lines to the pom.xml file of your project. +&lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-i18n&lt;/artifactId&gt; &lt;version&gt;1.0.1&lt;/version&gt; &lt;/dependency&gt; Defining messages Translations should be placed in a file named messages_&lt;LANG&gt;. \ No newline at end of file diff --git a/doc/internationalization/using-i18n/index.html b/doc/internationalization/using-i18n/index.html new file mode 100644 index 0000000..12a154a --- /dev/null +++ b/doc/internationalization/using-i18n/index.html @@ -0,0 +1,58 @@ +Void Framework – Using internationalization

Using internationalization

Depending on your needs, you may need to use translated messages in different languages. By default the Void Framework provides a ResourceBundle based implementation. If your needs require more advanced management or different storage (ie: DB rather than files), you can easily use your own implementation.

To enable this module, just add following lines to the pom.xml file of your project.

<dependency>
+    <groupId>dev.voidframework</groupId>
+    <artifactId>voidframework-i18n</artifactId>
+    <version>1.0.1</version>
+</dependency>
+

Defining messages

Translations should be placed in a file named messages_<LANG>.properties (ie: messages_en.properties) in the resources directory.

resources/messages_fr.properties

lang.fr=Français
+

resources/messages_en.properties

lang.fr=French
+

Retrieving messages

The retrieval of translated messages is done through the use of the Internationalization service.

Example

public final class InternationalizationExample {
+
+    private final Internationalization i18n;
+
+    @Inject
+    public InternationalizationExample(final Internationalization i18n) {
+        this.i18n = i18n;
+    }
+
+    public void i18n() {
+        // Output: Français
+        i18n.getMessage(Locale.FRENCH, "lang.fr");
+
+        // Output: French
+        i18n.getMessage(Locale.ENGLISH, "lang.fr");
+    }
+}        
+

Plural forms

The plural form can be handled in two ways, the first uses ChoiceFormat which allows via an advanced syntax to add some intelligence to the translation messages. The second, more simple, is based on the use of new keys with special naming.

Example (ChoiceFormat)

key=This element contains {0,choice,0#no comments|1#one comment|1<{0,number,000} comments}
+
public void i18n() {
+    // Output: This element contains 0 comments
+    i18n.getMessage(Locale.ENGLISH, "key", 0);
+
+    // Output: This element contains 1 comment
+    i18n.getMessage(Locale.ENGLISH, "key", 1);
+
+    // Output: This element contains 1337 comments
+    i18n.getMessage(Locale.ENGLISH, "key", 1337);
+}
+

Example (New key)

inbox.0=Inbox "{0}" contains no messages
+inbox.1=Inbox "{0}" contains one message
+inbox.2=Inbox "{0}" contains {1} messages
+
public void i18n() {
+    // Output: Inbox "Unread" contains no messages
+    i18n.getMessage(Locale.ENGLISH, 0, "inbox", "Unread", 0);
+
+    // Output: Inbox "Unread" contains one message
+    i18n.getMessage(Locale.ENGLISH, 1,"inbox", "Unread", 1);
+
+    // Output: Inbox "Unread" contains 42 messages
+    i18n.getMessage(Locale.ENGLISH, 42, "inbox", "Unread", 42);
+}
+

© 2022 Void Framework

+Void Framework is released under the MIT License
+ + +
\ No newline at end of file diff --git a/index.xml b/index.xml index cce360a..63e50fe 100644 --- a/index.xml +++ b/index.xml @@ -1,19 +1,20 @@ Void Frameworkhttps://voidframework.dev/Recent content on Void FrameworkHugo -- gohugo.ioData sourcehttps://voidframework.dev/doc/databases/datasource/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/datasource/Your application needs to connect to one or more databases? Void Framework is capable of handling multiple data sources at the same time through the use of DataSourceManager. It will provide all the necessary methods to obtain a connection from the desired data source. Each data source can be configured independently. Your application can, for example, be connected to PostgreSQL and Oracle at the same time. Configuration Void Framework offers different implementations, depending on the implementation chosen, the configuration keys may change.Hibernatehttps://voidframework.dev/doc/databases/persistence-hibernate/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/persistence-hibernate/Hibernate is an Object Relational Mapper (ORM). It provides a framework for mapping an object-oriented domain model to a relational database. -&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. -Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. +&nbsp; Void Framework uses Hibernate 6 (or higher), which that means Java persistence is no longer defined by the Java Persistence API under Java EE, but rather by to the Jakarta Persistence 3.0 specification under Jakarta EE. This means the javax.persistence package is no longer available and is replaced by jakarta.Getting Startedhttps://voidframework.dev/doc/getting-started/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/Corehttps://voidframework.dev/doc/core/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/Internationalizationhttps://voidframework.dev/doc/i18n/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/i18n/Databaseshttps://voidframework.dev/doc/databases/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/databases/Cachehttps://voidframework.dev/doc/cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/Boot sequencehttps://voidframework.dev/doc/core/boot-sequence/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/boot-sequence/Below is a diagram describing the boot sequence of Void Framework. +S c a n C l N a O s s p a t h s c R l L e L L a o g i o s ( a i f a s 2 d s e d p a t C a ) G e y c t u r c o h i l n .Cache engine : In-memoryhttps://voidframework.dev/doc/cache/in-memory-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/in-memory-cache/This implementation of the cache engine is convenient during the development phase because it avoids the installation of a distributed cache server. However, this implementation is absolutely not recommended for use in a production environment. +Installation &lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-cache&lt;/artifactId&gt; &lt;version&gt;1.0.1&lt;/version&gt; &lt;/dependency&gt; To enable In-memory cache engine, you have to set voidframework.cache.engine to dev.voidframework.cache.engine.MemoryCacheEngine in your application configuration file. Configuration The following configuration key can be used in the configuration file of your application.Class scanninghttps://voidframework.dev/doc/core/class-scanning/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/class-scanning/The core of the Void Framework is based on the scanning of different paths to discover elements to load. 3 types of elements are recognised during the scan: Bindable classes (see below) classes implementing the TypeConverter interface classes which extend AbstractModule (Guice) Bindable @Bindable is a specific annotation that allows annotated classes to be considered as candidates for auto-detection during classpath scan. Other class-level specialized annotations can also be considered as identifying a bindable and provide a clearer identification of the purpose of the class.Creating a new applicationhttps://voidframework.dev/doc/getting-started/new-application/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/new-application/To create a new application with Void Framework, simply create a new Maven project and then add the necessary dependencies. Maven The very first dependency to include in your pom.xml is voidframework-core, without it you will not be able to start the application. The dependencies to be added will depend on the features you wish to use on your application, so do not hesitate to consult the different chapters of the documentation.Documentationhttps://voidframework.dev/doc/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/Life cyclehttps://voidframework.dev/doc/core/life-cycle/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/life-cycle/Void Framework provides a way to manage the life of a component. The @LifeCycleStart and @LifeCycleStop annotations allow you to define the methods to be called automatically when the application is started and stopped. &nbsp; It is possible to have several methods of a class annotated with the same annotation. @LifeCycleStart Indicates that this method should be called when the application starts. The annotation accepts the following parameter: -priority is used to define when the method will be called in relation to the others.Release noteshttps://voidframework.dev/releasenotes/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/releasenotes/1.0.0 2022-07-02 -New Initial releaseRequirementshttps://voidframework.dev/doc/getting-started/requirements/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/requirements/To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository. +priority is used to define when the method will be called in relation to the others.Release noteshttps://voidframework.dev/releasenotes/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/releasenotes/1.0.1 2022-07-08 +New Ability to retrieve XML body content as Java object Improved Cache management : rename the annotation Cache to CacheResult and add CacheRemove Fixed Removed I18N reference from Hibernate module Fixed Transactional annotation : rollback not occur on unchecked exception Fixed Routes are randomly sorted 1.0.0 2022-07-02 +Initial releaseRequirementshttps://voidframework.dev/doc/getting-started/requirements/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/getting-started/requirements/To use the Void Framework, you need Java JDK 17 or higher, Maven 3 or higher and the Void Framework JAR files. These JAR files are published to the Maven Repository. Verifying and installing Java To check that you have Java JDK 17 or higher, enter the following in a shell: #&gt; java -version You should see something like: openjdk version &#34;17.0.2&#34; 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.Type conversionhttps://voidframework.dev/doc/core/type-conversion/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/core/type-conversion/Type conversion is a mechanism for converting data from one type to another. For example, convert the string &ldquo;1234&rdquo; to an integer. The conversion is very useful when moving from one layer to another in DDD-based architectures. It is also used in the web feature to convert path param to typed values in the controller. Using conversion The conversion is used via the Conversion service which is accessible via direct injection.Using cachehttps://voidframework.dev/doc/cache/using-cache/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/cache/using-cache/Void Framework provides the tools to use a cache system. Caching can be done in two different ways, via the use of annotations or programmatically via the use of the CacheEngine. -If no CacheEngine implementation is specified, the cache will not be active. -Using Cache with annotations The cache can be used with the following annotations: -@CacheRemove Indicates that the cache must be evicted. -The annotation accepts the following parameters: \ No newline at end of file +&nbsp; If no CacheEngine implementation was specified, the cache will not be active. &nbsp; Note that caching a Result (Web) object can lead to errors during deserialization, especially if Result contains an InputStream. Using Cache with annotations The cache can be used with the following annotations:Using internationalizationhttps://voidframework.dev/doc/internationalization/using-i18n/Mon, 01 Jan 0001 00:00:00 +0000https://voidframework.dev/doc/internationalization/using-i18n/Depending on your needs, you may need to use translated messages in different languages. By default the Void Framework provides a ResourceBundle based implementation. If your needs require more advanced management or different storage (ie: DB rather than files), you can easily use your own implementation. +To enable this module, just add following lines to the pom.xml file of your project. +&lt;dependency&gt; &lt;groupId&gt;dev.voidframework&lt;/groupId&gt; &lt;artifactId&gt;voidframework-i18n&lt;/artifactId&gt; &lt;version&gt;1.0.1&lt;/version&gt; &lt;/dependency&gt; Defining messages Translations should be placed in a file named messages_&lt;LANG&gt;. \ No newline at end of file diff --git a/releasenotes/index.html b/releasenotes/index.html index 7399f87..7e15ea8 100644 --- a/releasenotes/index.html +++ b/releasenotes/index.html @@ -1,11 +1,10 @@ -Void Framework – Release notes

1.0.1

+2022-07-08

NewAbility to retrieve XML body content as Java object
ImprovedCache management : rename the annotation Cache to CacheResult and add CacheRemove
FixedRemoved I18N reference from Hibernate module
FixedTransactional annotation : rollback not occur on unchecked exception
FixedRoutes are randomly sorted

1.0.0

+2022-07-02

Initial release


© 2022 Void Framework

Void Framework is released under the MIT License
diff --git a/sitemap.xml b/sitemap.xml index 25da66a..b495daa 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://voidframework.dev/doc/databases/datasource/https://voidframework.dev/doc/databases/persistence-hibernate/https://voidframework.dev/doc/getting-started/https://voidframework.dev/doc/cache/https://voidframework.dev/doc/core/https://voidframework.dev/doc/databases/https://voidframework.dev/doc/cache/in-memory-cache/https://voidframework.dev/categories/https://voidframework.dev/doc/core/class-scanning/https://voidframework.dev/doc/getting-started/new-application/https://voidframework.dev/doc/https://voidframework.dev/doc/https://voidframework.dev/doc/core/life-cycle/https://voidframework.dev/releasenotes/https://voidframework.dev/doc/getting-started/requirements/https://voidframework.dev/tags/https://voidframework.dev/doc/core/type-conversion/https://voidframework.dev/doc/cache/using-cache/https://voidframework.dev/ \ No newline at end of file +https://voidframework.dev/doc/databases/datasource/https://voidframework.dev/doc/databases/persistence-hibernate/https://voidframework.dev/doc/getting-started/https://voidframework.dev/doc/core/https://voidframework.dev/doc/i18n/https://voidframework.dev/doc/databases/https://voidframework.dev/doc/cache/https://voidframework.dev/doc/core/boot-sequence/https://voidframework.dev/doc/cache/in-memory-cache/https://voidframework.dev/categories/https://voidframework.dev/doc/core/class-scanning/https://voidframework.dev/doc/getting-started/new-application/https://voidframework.dev/doc/https://voidframework.dev/doc/https://voidframework.dev/doc/core/life-cycle/https://voidframework.dev/releasenotes/https://voidframework.dev/doc/getting-started/requirements/https://voidframework.dev/tags/https://voidframework.dev/doc/core/type-conversion/https://voidframework.dev/doc/cache/using-cache/https://voidframework.dev/doc/internationalization/using-i18n/https://voidframework.dev/ \ No newline at end of file From d44fee23b00aeb9d939b0601823b96eaa0ddbe9c Mon Sep 17 00:00:00 2001 From: Thibault Meyer Date: Sat, 16 Jul 2022 18:00:54 +0000 Subject: [PATCH 05/75] Automated website build --- doc/databases/datasource/index.html | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/databases/datasource/index.html b/doc/databases/datasource/index.html index b7d83fc..0b59873 100644 --- a/doc/databases/datasource/index.html +++ b/doc/databases/datasource/index.html @@ -16,22 +16,28 @@ voidframework.datasource.default.driver the driver to be used to communicate with the database.
  • required voidframework.datasource.default.url the JDBC format URL to be used to reach the database.
  • required voidframework.datasource.default.username the username to be provided durint the authentication step.
  • required -voidframework.datasource.default.password the password to be provided durint the authentication step.
  • C3P0 only -optional +voidframework.datasource.default.password the password to be provided durint the authentication step.
  • optional +C3P0 only voidframework.datasource.default.statementCacheNumDeferredCloseThreads defines the number of threads to track when Connections are in use, and only destroy Statements when their parent Connections are not otherwise in use.
  • optional +HikariCP only voidframework.datasource.default.cachePrepStmts enable or disable the prepared statements cache.
  • optional voidframework.datasource.default.prepStmtCacheSize the number of prepared statements cache to keep in the cache.
  • optional +HikariCP only voidframework.datasource.default.prepStmtCacheSqlLimit the size of the largest SQL query for which the parsing result will be keep in the cache.
  • optional voidframework.datasource.default.autoCommit enable or disable the auto commit behavior when the connection goes back into the pool.
  • optional +HikariCP only voidframework.datasource.default.connectionInitSql the SQL statement that will be executed after every new connection.
  • optional +HikariCP only voidframework.datasource.default.connectionTestQuery the SQL statement that will be executed to test if the connection is still valid.
  • optional voidframework.datasource.default.connectionTimeout the milliseconds to wait before timing out during the connection.
  • optional voidframework.datasource.default.idleTimeout the milliseconds to wait before closing an unused connection.
  • optional +HikariCP only voidframework.datasource.default.keepaliveTime the milliseconds to wait before attempting to keep the connection alive.
  • optional voidframework.datasource.default.minimumIdle the minimum number of alive connections in the pool.
  • optional -voidframework.datasource.default.maximumPoolSize the maximum number of connections allowed in the pool.
  • C3P0 only -optional -voidframework.datasource.default.acquireIncrement determines how many connections at a time C3P0 will try to acquire when the pool is exhausted.

  • © 2022-2023 Void Framework

    +

    © 2022-2024 Void Framework

    Void Framework is released under the MIT License
    diff --git a/doc/vfs/index.html b/doc/vfs/index.html index 04839d0..406944b 100644 --- a/doc/vfs/index.html +++ b/doc/vfs/index.html @@ -1,7 +1,7 @@ Void Framework – Virtual File Storage

    Virtual File Storage



    Virtual File Storage


    © 2022-2024 Void Framework

    Void Framework is released under the MIT License
    diff --git a/doc/vfs/using-vfs/index.html b/doc/vfs/using-vfs/index.html index ea38fed..4d263d2 100644 --- a/doc/vfs/using-vfs/index.html +++ b/doc/vfs/using-vfs/index.html @@ -53,7 +53,7 @@ return Result.noContent(); } } -

    © 2022-2023 Void Framework

    +

    © 2022-2024 Void Framework

    Void Framework is released under the MIT License
    diff --git a/doc/web/controller/index.html b/doc/web/controller/index.html index 5b0f348..c436ab8 100644 --- a/doc/web/controller/index.html +++ b/doc/web/controller/index.html @@ -61,7 +61,7 @@ i18n.getMessage('msg.key', 'var'); i18n.getMessage('msg.key', 'var1', 'var2', /*...*/'varn'); </script> -