Skip to content

Commit

Permalink
Merge pull request #141 from ibissource/refactor-stuurgegevens
Browse files Browse the repository at this point in the history
perf: refactor soap-endpoints to not unnecessarily store large xml sessionkeys from the input message
  • Loading branch information
MLenterman authored Sep 13, 2023
2 parents 9a6c0e9 + c4efdb3 commit bde4f0b
Show file tree
Hide file tree
Showing 33 changed files with 1,301 additions and 1,215 deletions.
63 changes: 63 additions & 0 deletions Dockerfile.java11
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
FROM tomcat:8-jre11-temurin-jammy AS base

ARG GID=1000
ARG UID=1000

# Secure files (CIS-DI-0008)
RUN chmod -R 751 /usr/bin /usr/sbin

# Create folder and user, and set file permissions
RUN set -eux && \
# Create default directory for configurations, properties and credential filesystem
mkdir -p /opt/frank/secrets && \
# Create tomcat user for stepping down from root
groupadd -g ${GID} tomcat && \
useradd -u ${UID} -g tomcat -s /usr/sbin/nologin -l tomcat && \
# Change permissions and ownership of files
chown -hR tomcat:tomcat ${CATALINA_HOME} && \
chown -hR tomcat:tomcat /opt/frank

# All previous actions are performed as root. Run following instructions and start container as tomcat.
USER tomcat

# Copy environment configuration
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/conf/catalina.properties /usr/local/tomcat/conf/catalina.properties
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/lib/ /usr/local/tomcat/lib/
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT

# TempFix TODO: Move this to the credentialprovider.properties
ENV credentialFactory.class=nl.nn.credentialprovider.PropertyFileCredentialFactory
ENV credentialFactory.map.properties=/opt/frank/resources/credentials.properties
ENV zaakbrug.zds.timezone=UTC

# Copy dependencies
COPY --chown=tomcat lib/server/ /usr/local/tomcat/lib/
COPY --chown=tomcat lib/webapp/ /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/

# When deploying the "context.xml" should be copied to /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml
COPY --chown=tomcat src/main/webapp/META-INF/context.xml /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml

# Copy Frank!
COPY --chown=tomcat src/main/configurations/ /opt/frank/configurations/
COPY --chown=tomcat src/main/resources/ /opt/frank/resources/
COPY --chown=tomcat src/test/testtool/ /opt/frank/testtool/

# Compile custom class
FROM eclipse-temurin:8-jdk-jammy AS build

COPY --from=base /usr/local/tomcat/lib/ /usr/local/tomcat/lib/
COPY --from=base /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT

COPY src/main/java /tmp/java
RUN mkdir /tmp/classes \
&& javac \
/tmp/java/nl/nn/adapterframework/parameters/Parameter.java \
-classpath "/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/*:/usr/local/tomcat/lib/*" \
-verbose -d /tmp/classes

FROM base AS final

COPY --from=build --chown=tomcat /tmp/classes/ /usr/local/tomcat/webapps/ROOT/WEB-INF/classes

HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=60 \
CMD curl --fail --silent http://localhost:8080/iaf/api/server/health || (curl --silent http://localhost:8080/iaf/api/server/health && exit 1)
14 changes: 14 additions & 0 deletions docker-compose.zaakbrug.dev.perf-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: '3.8'

services:
zaakbrug:
build:
context: .
dockerfile: ./Dockerfile.java11
environment:
- zaakbrug.zgw.zaken-api.timeout=120000
- zaakbrug.zgw.catalogi-api.timeout=120000
- zaakbrug.zgw.documenten-api.timeout=120000
- zaakbrug.zgw.besluiten-api.timeout=120000
- soap.bus.org.apache.cxf.stax.maxTextLength=1000000000
- CATALINA_OPTS=$CATALINA_OPTS -Xmx24g
4 changes: 3 additions & 1 deletion docker/open-zaak-nginx/default.conf
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
server {
listen 9001;
server_name open-zaak.nginx;
client_max_body_size 200m;
client_max_body_size 1000m;

location /private-media/ {
sendfile on;
proxy_buffering off;

internal;
alias /private-media/;
}

location / {
sendfile on;
proxy_buffering off;

proxy_pass http://open-zaak.dev:8000/;
proxy_set_header Host $host:$server_port;
Expand Down
91 changes: 91 additions & 0 deletions docs/zaakbrug-generic-object-xslt-examples.drawio

Large diffs are not rendered by default.

679 changes: 161 additions & 518 deletions e2e/SoapUI/zaakbrug-e2e-soapui-project.xml

Large diffs are not rendered by default.

Binary file modified e2e/SoapUI/zaakbrug-e2e-soapui-project.xml.zip
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?"/>
<xsl:param name="Stuurgegevens" as="node()?"/>

<xsl:template match="/">
<StUF:Bv02Bericht>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?" />
<xsl:param name="Stuurgegevens" as="node()?" />

<xsl:template match="/">
<StUF:Bv03Bericht>
<StUF:stuurgegevens>
<StUF:berichtcode>Bv03</StUF:berichtcode>
<StUF:zender>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
</StUF:zender>
<StUF:ontvanger>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
</StUF:ontvanger>
<StUF:referentienummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/tijdstipBericht"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:referentienummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="$Stuurgegevens/stuurgegevens/tijdstipBericht"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
</StUF:stuurgegevens>
</StUF:Bv03Bericht>
</xsl:template>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,70 +1,71 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?" />
<xsl:param name="CheckOutZaakDocument" as="node()?" />
<xsl:param name="GetZaakDocumentLezenResult" as="node()?" />
<xsl:param name="Stuurgegevens" as="node()?" />
<!-- <xsl:param name="Parameters" as="node()?" /> -->
<xsl:param name="ZgwLock" as="node()?" />
<xsl:param name="ZdsZaakDocumentInhoud" as="node()?" />

<xsl:template match="/">
<ZKN:geefZaakdocumentbewerken_Du02>
<ZKN:stuurgegevens>
<StUF:berichtcode>Du02</StUF:berichtcode>
<StUF:zender>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
</StUF:zender>
<StUF:ontvanger>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
</StUF:ontvanger>
<StUF:referentienummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:referentienummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="format-dateTime(current-dateTime(), '[Y0001][M01][D01][H01][m01][s01]')"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:crossRefnummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:functie>geefZaakdocumentbewerken</StUF:functie>
</ZKN:stuurgegevens>
<ZKN:parameters>
<ZKN:checkedOutId><xsl:value-of select="$CheckOutZaakDocument/root/lock"/></ZKN:checkedOutId>
<ZKN:checkedOutId><xsl:value-of select="$ZgwLock/root/lock"/></ZKN:checkedOutId>
</ZKN:parameters>
<ZKN:edcLa01 StUF:entiteittype="EDC" StUF:functie="antwoord">
<ZKN:parameters/>
<ZKN:antwoord>
<ZKN:object StUF:entiteittype="EDC">
<ZKN:identificatie><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/identificatie"/></ZKN:identificatie>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/omschrijving">
<ZKN:dct.omschrijving><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/omschrijving"/></ZKN:dct.omschrijving>
<ZKN:identificatie><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/identificatie"/></ZKN:identificatie>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/omschrijving">
<ZKN:dct.omschrijving><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/omschrijving"/></ZKN:dct.omschrijving>
</xsl:if>
<ZKN:creatiedatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/creatiedatum"/></ZKN:creatiedatum>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/ontvangstdatum">
<ZKN:ontvangstdatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/ontvangstdatum"/></ZKN:ontvangstdatum>
<ZKN:creatiedatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/creatiedatum"/></ZKN:creatiedatum>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/ontvangstdatum">
<ZKN:ontvangstdatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/ontvangstdatum"/></ZKN:ontvangstdatum>
</xsl:if>
<ZKN:titel><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/titel"/></ZKN:titel>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/beschrijving">
<ZKN:beschrijving><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/beschrijving"/></ZKN:beschrijving>
<ZKN:titel><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/titel"/></ZKN:titel>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/beschrijving">
<ZKN:beschrijving><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/beschrijving"/></ZKN:beschrijving>
</xsl:if>
<ZKN:formaat><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/formaat"/></ZKN:formaat>
<ZKN:taal><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/taal"/></ZKN:taal>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/versie">
<ZKN:versie><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/versie"/></ZKN:versie>
<ZKN:formaat><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/formaat"/></ZKN:formaat>
<ZKN:taal><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/taal"/></ZKN:taal>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/versie">
<ZKN:versie><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/versie"/></ZKN:versie>
</xsl:if>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/status">
<ZKN:status><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/status"/></ZKN:status>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/status">
<ZKN:status><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/status"/></ZKN:status>
</xsl:if>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/verzenddatum">
<ZKN:verzenddatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/verzenddatum"/></ZKN:verzenddatum>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/verzenddatum">
<ZKN:verzenddatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/verzenddatum"/></ZKN:verzenddatum>
</xsl:if>
<ZKN:vertrouwelijkAanduiding><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/vertrouwelijkAanduiding"/></ZKN:vertrouwelijkAanduiding>
<ZKN:auteur><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/auteur"/></ZKN:auteur>
<ZKN:vertrouwelijkAanduiding><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/vertrouwelijkAanduiding"/></ZKN:vertrouwelijkAanduiding>
<ZKN:auteur><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/auteur"/></ZKN:auteur>
<ZKN:link/>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud">
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud">
<ZKN:inhoud>
<xsl:attribute name="StUF:bestandsnaam"><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@StUF:bestandsnaam"/></xsl:attribute>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType != ''">
<xsl:attribute name="xmime:contentType"><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType"/></xsl:attribute>
<xsl:attribute name="StUF:bestandsnaam"><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@StUF:bestandsnaam"/></xsl:attribute>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType != ''">
<xsl:attribute name="xmime:contentType"><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud"/>
<xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud"/>
</ZKN:inhoud>
</xsl:if>
<xsl:apply-templates select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/isRelevantVoor"/>
<xsl:apply-templates select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/isRelevantVoor"/>
</ZKN:object>
</ZKN:antwoord>
</ZKN:edcLa01>
Expand Down
Loading

0 comments on commit bde4f0b

Please sign in to comment.