Skip to content

Commit 085817f

Browse files
authored
ci: finalise 2.13.0 (#750)
2 parents a1eac53 + 8597a93 commit 085817f

File tree

144 files changed

+867
-1077
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+867
-1077
lines changed

.github/workflows/deploy-documentation-old.yml

Lines changed: 0 additions & 56 deletions
This file was deleted.

.github/workflows/deploy-documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
export VERSION=$(mvn help:evaluate -Dexpression="project.version" -q -DforceStdout)
3535
echo "version=$VERSION" >> $>> $GITHUB_OUTPUT
3636
- name: Setup Ruby
37-
uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa
37+
uses: ruby/setup-ruby@v1
3838
with:
3939
ruby-version: '3.0' # Not needed with a .ruby-version file
4040
bundler-cache: true # runs 'bundle install' and caches installed gems automatically

docs/_ldi-nifi/index.md

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,61 @@ The processors can be imported into a NiFi docker instance via volume binding:
1515
1. Create a `docker-compose.yml` file with the following content in a new directory
1616
````yaml
1717
services:
18-
nifi:
19-
image: apache/nifi:2.0.0
20-
environment:
21-
SINGLE_USER_CREDENTIALS_USERNAME: admin
22-
SINGLE_USER_CREDENTIALS_PASSWORD: ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB
23-
ports:
24-
- 8443:8443
25-
volumes:
26-
- ./nifi-ext:/opt/nifi/nifi-current/nar_extensions:rw
18+
nifi:
19+
image: apache/nifi:2.0.0
20+
environment:
21+
SINGLE_USER_CREDENTIALS_USERNAME: admin
22+
SINGLE_USER_CREDENTIALS_PASSWORD: ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB
23+
ports:
24+
- 8443:8443
25+
volumes:
26+
- ./nifi-ext:/opt/nifi/nifi-current/nar_extensions:rw
27+
- ./nifi-drivers:/opt/nifi/nifi-current/lib_temp:rw
28+
entrypoint: [ "/bin/bash",
29+
"-c",
30+
"cp -r /opt/nifi/nifi-current/lib_temp/* /opt/nifi/nifi-current/lib/ && exec /opt/nifi/scripts/start.sh" ]
2731
````
2832
2. Create a directory `nifi-ext` in your current directory.
2933
3. Download either the `...-nar-bundle.jar` and unpack this or download the individual required processors (.nar extension) from the [nexus repository].
3034
Next, place the required processors in the `nifi-ext` directory.
31-
4. Finally, start your instance.
35+
4. Additionally, for using any processor with a persistence layer, you will need to download the needed drivers.
36+
Place these in the `nifi-drivers` directory.
37+
Possible drivers are:
38+
- [PostgreSQL driver](https://jdbc.postgresql.org/download.html)
39+
- [SQLite driver](https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc)
40+
5. Finally, start your instance.
3241
````shell
3342
docker compose up
3443
````
35-
5. Log in at `https://localhost:8443/nifi` with the credentials mentioned in step 1
36-
6. All downloaded extensions are available under the ``be.vlaanderen.informatievlaanderen.ldes.ldi.nifi`` group.
44+
6. Log in at `https://localhost:8443/nifi` with the credentials mentioned in step 1
45+
7. All downloaded extensions are available under the ``be.vlaanderen.informatievlaanderen.ldes.ldi.nifi`` group.
3746

3847
{: .note }
3948
All documentation and notes about configuration are available in the NiFi component itself.
4049

50+
## Setting up Database Connection Pools
51+
52+
As of LDI 2.13.0, some processors require a database connection pool to be set up.
53+
Although this is a pure NiFi configuration, a minimal explanation will be mentioned here. \
54+
For more details, please refer to
55+
the [NiFi documentation on DBCP](https://nifi.apache.org/components/org.apache.nifi.dbcp.DBCPConnectionPool/).
56+
This can be done by following these steps:
57+
58+
1. Go to the `Controller Services` tab in the NiFi UI.
59+
2. Click on the `Create new service` button.
60+
3. Select the `DBCPConnectionPool` service.
61+
4. Configure the service with the required properties:
62+
- `Database Connection URL`,
63+
- `jdbc:sqlite:/path/to/database.db` for SQLite
64+
- `jdbc:postgresql://localhost:5432/database` for PostgreSQL,
65+
- `Database Driver Class Name`
66+
- `org.sqlite.JDBC` for SQLite
67+
- `org.postgresql.Driver` for PostgreSQL,
68+
- `Database User`,
69+
- `Password`,
70+
5. Save the service.
71+
6. Enable the service.
72+
7. Use the service in the processors that require it.
73+
4174
[Apache NiFi]: https://nifi.apache.org/
4275
[nexus repository]: https://s01.oss.sonatype.org/#nexus-search;quick~be.vlaanderen.informatievlaanderen.ldes.ldi.nifi

ldi-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>be.vlaanderen.informatievlaanderen.ldes</groupId>
55
<artifactId>linked-data-interactions</artifactId>
6-
<version>2.12.0</version>
6+
<version>2.13.0-SNAPSHOT</version>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>
99

ldi-core/change-detection-filter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>be.vlaanderen.informatievlaanderen.ldes.ldi</groupId>
88
<artifactId>ldi-core</artifactId>
9-
<version>2.12.0</version>
9+
<version>2.13.0-SNAPSHOT</version>
1010
</parent>
1111

1212
<artifactId>change-detection-filter</artifactId>

ldi-core/change-detection-filter/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/ChangeDetectionFilter.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ public class ChangeDetectionFilter implements LdiOneToOneTransformer {
2727
private static final Lang NORMALIZING_LANG = Lang.NQUADS;
2828
private static final MediaType NORMALIZING_MEDIA_TYPE = MediaType.N_QUADS;
2929
private final HashedStateMemberRepository hashedStateMemberRepository;
30-
private final boolean keepState;
3130

32-
public ChangeDetectionFilter(HashedStateMemberRepository hashedStateMemberRepository, boolean keepState) {
31+
public ChangeDetectionFilter(HashedStateMemberRepository hashedStateMemberRepository) {
3332
this.hashedStateMemberRepository = hashedStateMemberRepository;
34-
this.keepState = keepState;
3533
}
3634

3735
/**
@@ -54,16 +52,10 @@ public Model transform(Model model) {
5452
return model;
5553
}
5654

57-
/**
58-
* Clean up the resources, should be called when the component is not used anymore
59-
*/
60-
public void destroyState() {
61-
if (!keepState) {
62-
hashedStateMemberRepository.destroyState();
63-
}
55+
public void close() {
56+
hashedStateMemberRepository.close();
6457
}
6558

66-
6759
private Resource getSingleNamedNodeFromStateObject(Model model) {
6860
final List<Resource> namedNodes = model.listSubjects().filterDrop(RDFNode::isAnon).toList();
6961
if (namedNodes.size() != 1) {

ldi-core/change-detection-filter/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/repositories/HashedStateMemberRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ public interface HashedStateMemberRepository {
1818
/**
1919
* Clean up the resources, should be called when the repository is not used anymore
2020
*/
21-
void destroyState();
21+
void close();
2222
}

ldi-core/change-detection-filter/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/repositories/inmemory/InMemoryHashedStateMemberRepository.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import be.vlaanderen.informatievlaanderen.ldes.ldi.entities.HashedStateMember;
44
import be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.HashedStateMemberRepository;
55

6-
import java.util.*;
6+
import java.util.HashMap;
7+
import java.util.Map;
78

89
public class InMemoryHashedStateMemberRepository implements HashedStateMemberRepository {
910
private final Map<String, HashedStateMember> members;
@@ -24,7 +25,7 @@ public void saveHashedStateMember(HashedStateMember hashedStateMember) {
2425
}
2526

2627
@Override
27-
public void destroyState() {
28+
public void close() {
2829
members.clear();
2930
}
3031
}

ldi-core/change-detection-filter/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/repositories/sql/SqlHashedStateMemberRepository.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.sql;
22

3-
import be.vlaanderen.informatievlaanderen.ldes.ldi.EntityManagerFactory;
43
import be.vlaanderen.informatievlaanderen.ldes.ldi.entities.HashedStateMember;
54
import be.vlaanderen.informatievlaanderen.ldes.ldi.entities.HashedStateMemberEntity;
65
import be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.HashedStateMemberRepository;
@@ -9,14 +8,10 @@
98
import javax.persistence.EntityManager;
109

1110
public class SqlHashedStateMemberRepository implements HashedStateMemberRepository {
12-
private final EntityManagerFactory entityManagerFactory;
1311
private final EntityManager entityManager;
14-
private final String instanceName;
1512

16-
public SqlHashedStateMemberRepository(EntityManagerFactory entityManagerFactory, String instanceName) {
17-
this.entityManagerFactory = entityManagerFactory;
18-
this.entityManager = entityManagerFactory.getEntityManager();
19-
this.instanceName = instanceName;
13+
public SqlHashedStateMemberRepository(EntityManager entityManager) {
14+
this.entityManager = entityManager;
2015
}
2116

2217
@Override
@@ -38,7 +33,7 @@ public void saveHashedStateMember(HashedStateMember hashedStateMember) {
3833
}
3934

4035
@Override
41-
public void destroyState() {
42-
entityManagerFactory.destroyState(instanceName);
36+
public void close() {
37+
entityManager.close();
4338
}
4439
}

ldi-core/change-detection-filter/src/test/java/be/vlaanderen/informatievlaanderen/ldes/ldi/ChangeDetectionFilterSteps.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package be.vlaanderen.informatievlaanderen.ldes.ldi;
22

3-
import be.vlaanderen.informatievlaanderen.ldes.ldi.postgres.PostgresEntityManagerFactory;
43
import be.vlaanderen.informatievlaanderen.ldes.ldi.postgres.PostgresProperties;
54
import be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.HashedStateMemberRepository;
65
import be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.inmemory.InMemoryHashedStateMemberRepository;
76
import be.vlaanderen.informatievlaanderen.ldes.ldi.repositories.sql.SqlHashedStateMemberRepository;
8-
import be.vlaanderen.informatievlaanderen.ldes.ldi.sqlite.SqliteEntityManagerFactory;
97
import be.vlaanderen.informatievlaanderen.ldes.ldi.sqlite.SqliteProperties;
108
import io.cucumber.java.en.Given;
119
import io.cucumber.java.en.Then;
@@ -34,14 +32,14 @@ public void teardown() {
3432
@Given("A ChangeDetectionFilter with state persistence strategy MEMORY")
3533
public void aChangeDetectionFilterWithStatePersistenceStrategyMEMORY() {
3634
HashedStateMemberRepository hashedStateMemberRepository = new InMemoryHashedStateMemberRepository();
37-
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository, false);
35+
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository);
3836
}
3937

4038
@Given("A ChangeDetectionFilter with state persistence strategy SQLITE")
4139
public void aChangeDetectionFilterWithStatePersistenceStrategySQLITE() {
42-
final var emf = SqliteEntityManagerFactory.getInstance(new SqliteProperties(DATABASE_INSTANCE_NAME, false));
43-
HashedStateMemberRepository hashedStateMemberRepository = new SqlHashedStateMemberRepository(emf, DATABASE_INSTANCE_NAME);
44-
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository, false);
40+
var entityManager = HibernateUtil.createEntityManagerFromProperties(new SqliteProperties("target", DATABASE_INSTANCE_NAME, false).getProperties());
41+
HashedStateMemberRepository hashedStateMemberRepository = new SqlHashedStateMemberRepository(entityManager);
42+
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository);
4543
}
4644

4745
@Given("A ChangeDetectionFilter with state persistence strategy POSTGRES")
@@ -55,9 +53,9 @@ public void aChangeDetectionFilterWithStatePersistenceStrategyPOSTGRES() {
5553
PostgresProperties postgresProperties = new PostgresProperties(postgreSQLContainer.getJdbcUrl(),
5654
postgreSQLContainer.getUsername(), postgreSQLContainer.getPassword(), false);
5755

58-
final var emf = PostgresEntityManagerFactory.getInstance(DATABASE_INSTANCE_NAME, postgresProperties.getProperties());
59-
HashedStateMemberRepository hashedStateMemberRepository = new SqlHashedStateMemberRepository(emf, DATABASE_INSTANCE_NAME);
60-
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository, false);
56+
var entityManager = HibernateUtil.createEntityManagerFromProperties(postgresProperties.getProperties());
57+
HashedStateMemberRepository hashedStateMemberRepository = new SqlHashedStateMemberRepository(entityManager);
58+
changeDetectionFilter = new ChangeDetectionFilter(hashedStateMemberRepository);
6159
}
6260

6361
@Then("The filtered member is not empty")
@@ -85,6 +83,6 @@ public void theFilteredMemberIsIsomorphicWith(String fileName) {
8583

8684
@Then("The filter is destroyed")
8785
public void theFilterIsDestroyed() {
88-
changeDetectionFilter.destroyState();
86+
changeDetectionFilter.close();
8987
}
9088
}

0 commit comments

Comments
 (0)