Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# 2.0.0

* Now supports the CESOP-Format (and the DAC7-Format).
* Uses a client that is auto generated by OpenAPI. This makes the library more robust for future changes of the API.

# 1.0.3

Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ Client for using the [Mass data transmission DIP (mass data interface)](https://

The BZSt (Bundeszentralamt für Steuern / Federal Central Tax Office) provides the Digital Inbox (DIP) as a service for payment service providers to transmit financial data.

Clients need to register / login at [BZSt online.portal](https://www.bzst.de/DE/Service/Portalinformation/Massendaten/DIP/dip.html?nn=68828) through [Elster](https://www.elster.de/elsterweb/start), [BundID](https://id.bund.de/de) or [BZSt Online-Portal (BOP)](https://www.elster.de/bportal/start).
This library uses a [generated](./bzst-dip-java-client/pom.xml) client from an [``openapi.yml``](./openapi/openapi.yml)
using [OpenAPI Generator](https://openapi-generator.tech/).

Clients need to register / login
at [BZSt online.portal](https://www.bzst.de/DE/Service/Portalinformation/Massendaten/DIP/dip.html?nn=68828)
through [Elster](https://www.elster.de/elsterweb/start), [BundID](https://id.bund.de/de)
or [BZSt Online-Portal (BOP)](https://www.elster.de/bportal/start).

See the [BZSt Information](https://www.bzst.de/EN/Service/Portalinformation/Login/login_node.html) for more information.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.slf4j.LoggerFactory;

import software.xdev.bzst.dip.client.BzstDipClient;
import software.xdev.bzst.dip.client.exception.HttpStatusCodeNotExceptedException;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfiguration;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfigurationBuilder;
import software.xdev.bzst.dip.client.model.configuration.BzstDipOecdDocType;
Expand Down Expand Up @@ -57,7 +56,7 @@ public final class ApplicationWithCesop
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationWithCesop.class);

public static void main(final String[] args)
throws InterruptedException, HttpStatusCodeNotExceptedException, IOException, DatatypeConfigurationException
throws InterruptedException, IOException, DatatypeConfigurationException
{
final BzstDipConfiguration configuration = createConfiguration();
final BzstDipClient bzstDipClient = new BzstDipClient(configuration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.slf4j.LoggerFactory;

import software.xdev.bzst.dip.client.BzstDipClient;
import software.xdev.bzst.dip.client.exception.HttpStatusCodeNotExceptedException;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfiguration;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfigurationBuilder;
import software.xdev.bzst.dip.client.model.configuration.PropertiesSupplier;
Expand All @@ -19,7 +18,7 @@ public final class ApplicationWithConfigurationFromProperties
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationWithConfigurationFromProperties.class);

public static void main(final String[] args)
throws InterruptedException, HttpStatusCodeNotExceptedException, IOException
throws InterruptedException, IOException
{
final BzstDipConfiguration configuration = createConfigurationFromProperties();
final BzstDipClient bzstDipClient = new BzstDipClient(configuration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opencsv.exceptions.CsvValidationException;

import software.xdev.bzst.dip.client.BzstDipClient;
import software.xdev.bzst.dip.client.exception.HttpStatusCodeNotExceptedException;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfiguration;
import software.xdev.bzst.dip.client.model.message.dac7.BzstDipCompleteResult;

Expand All @@ -23,7 +20,7 @@ public final class ApplicationWithCsvInput
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationWithCsvInput.class);

public static void main(final String[] args)
throws InterruptedException, HttpStatusCodeNotExceptedException, IOException, CsvValidationException
throws InterruptedException, IOException
{
final BzstDipConfiguration configuration = ApplicationWithDac7.createConfiguration();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.slf4j.LoggerFactory;

import software.xdev.bzst.dip.client.BzstDipClient;
import software.xdev.bzst.dip.client.exception.HttpStatusCodeNotExceptedException;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfiguration;
import software.xdev.bzst.dip.client.model.configuration.BzstDipConfigurationBuilder;
import software.xdev.bzst.dip.client.model.configuration.BzstDipDpiMessageType;
Expand All @@ -35,7 +34,7 @@ public final class ApplicationWithDac7
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationWithDac7.class);

public static void main(final String[] args)
throws InterruptedException, HttpStatusCodeNotExceptedException, IOException
throws InterruptedException, IOException
{
final BzstDipConfiguration configuration = createConfiguration();
final BzstDipClient bzstDipClient = new BzstDipClient(configuration);
Expand Down
3 changes: 1 addition & 2 deletions bzst-dip-java-client-demo/src/main/resources/app.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
client.id=abcd1234-ab12-ab12-ab12-abcdef123456
base.url=https://mds-ktst.bzst.bund.de
environment=TEST

tax.id=123456781011
tax.id=86095742719
tax.number=123456781011
application.code=

Expand Down
204 changes: 203 additions & 1 deletion bzst-dip-java-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@

<jjwt.version>0.12.6</jjwt.version>
<jackson.version>2.17.1</jackson.version>

<generatedDirRelative>src/generated/java</generatedDirRelative>

<!-- Ignore generated code -->
<sonar.exclusions>
src/generated/**
</sonar.exclusions>
</properties>

<repositories>
Expand Down Expand Up @@ -112,6 +119,22 @@
<artifactId>jackson-dataformat-xml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- HTTP client: apache client -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
Expand Down Expand Up @@ -254,6 +277,24 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${generatedDirRelative}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
Expand Down Expand Up @@ -349,11 +390,169 @@
</build>
</profile>
<profile>
<id>pmd</id>
<id>openapi-generator</id>
<properties>
<componentDir>bzst/dip/client/generated</componentDir>
<componentPackage>bzst.dip.client.generated</componentPackage>

<generatedDir>${project.basedir}/${generatedDirRelative}</generatedDir>
<openApiRelativeGeneratorDir>src/gen</openApiRelativeGeneratorDir>
<openApiGeneratorDir>
${project.basedir}/target/generated-sources/openapi/${openApiRelativeGeneratorDir}
</openApiGeneratorDir>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.3.2</version>
<executions>
<execution>
<id>pre-generation-clean</id>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<excludeDefaultDirectories>true</excludeDefaultDirectories>
<filesets>
<fileset>
<directory>${generatedDir}</directory>
</fileset>
</filesets>
</configuration>
</execution>
<execution>
<id>post-generation-clean</id>
<phase>process-resources</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.5.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../openapi/openapi.yml</inputSpec>
<generatorName>java</generatorName>
<configOptions>
<sourceFolder>${openApiRelativeGeneratorDir}</sourceFolder>
<library>apache-httpclient</library>
<apiPackage>software.xdev.${componentPackage}.api</apiPackage>
<modelPackage>software.xdev.${componentPackage}.model</modelPackage>
<invokerPackage>software.xdev.${componentPackage}.client</invokerPackage>
<!-- Otherwise throw and catch everywhere -->
<useRuntimeException>true</useRuntimeException>
<!-- Some fields of API have been ignored because they are unused -->
<disallowAdditionalPropertiesIfNotPresent>false
</disallowAdditionalPropertiesIfNotPresent>
<!-- Use newer Jakarta EE instead of Javax -->
<useJakartaEe>true</useJakartaEe>
<hideGenerationTimestamp>true</hideGenerationTimestamp>
</configOptions>
<!-- No tests and documentation because we don't use that -->
<generateModelTests>false</generateModelTests>
<generateApiTests>false</generateApiTests>
<generateModelDocumentation>false</generateModelDocumentation>
<generateApiDocumentation>false</generateApiDocumentation>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>copy-generated-resources</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${generatedDir}</outputDirectory>
<resources>
<resource>
<directory>${openApiGeneratorDir}</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>software.xdev</groupId>
<artifactId>find-and-replace-maven-plugin</artifactId>
<version>1.0.3</version>
<executions>
<execution>
<!-- Remove so that we don't need additional dependency -->
<id>remove-unused-import-com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider</id>
<phase>process-sources</phase>
<goals>
<goal>file-contents</goal>
</goals>
<configuration>
<baseDir>${generatedDirRelative}/software/xdev/${componentDir}/client/</baseDir>
<fileMask>ApiClient.java</fileMask>
<!-- @formatter:off DO NOT INTRODUCE LINE BREAK -->
<findRegex>^import com\.fasterxml\.jackson\.jaxrs\.json\.JacksonJsonProvider;(\r?\n)</findRegex>
<!-- @formatter:on -->
<replaceLineBased>false</replaceLineBased>
</configuration>
</execution>
<execution>
<!-- Changes with each generator version -->
<id>remove-generated-annotation</id>
<phase>process-sources</phase>
<goals>
<goal>file-contents</goal>
</goals>
<configuration>
<baseDir>${generatedDirRelative}/software/xdev/${componentDir}/</baseDir>
<recursive>true</recursive>
<fileMask>.java</fileMask>
<findRegex>^@jakarta\.annotation\.Generated.*(\r?\n)</findRegex>
<replaceAll>false</replaceAll>
<replaceLineBased>false</replaceLineBased>
</configuration>
</execution>
<execution>
<!-- Requiring Java serialization indicates a serious misuse of the API -->
<id>remove-serialVersionUID</id>
<phase>process-sources</phase>
<goals>
<goal>file-contents</goal>
</goals>
<configuration>
<baseDir>${generatedDirRelative}/software/xdev/${componentDir}/</baseDir>
<recursive>true</recursive>
<fileMask>.java</fileMask>
<findRegex>^.*serialVersionUID.*(\r?\n)(\s*\r?\n)?</findRegex>
<replaceAll>false</replaceAll>
<replaceLineBased>false</replaceLineBased>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>pmd</id>
<build>
<plugins>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.26.0</version>
<configuration>
Expand All @@ -362,6 +561,9 @@
<rulesets>
<ruleset>../.config/pmd/ruleset.xml</ruleset>
</rulesets>
<excludes>
<exclude>**/generated/**/*.java</exclude>
</excludes>
</configuration>
<dependencies>
<dependency>
Expand Down
Loading
Loading