
no.tsl2.nano.h5.2.5.6.source-code.generate-openapi.sh Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tsl2.nano.h5 Show documentation
Show all versions of tsl2.nano.h5 Show documentation
TSL2 Framework Html5 Extensions (WebServer, Html5Presentation, RuleCover, BeanConfigurator, LogicTable-Sheet, Expression-Descriptors for Actions, Rules, URLs, Queries)
The newest version!
#!/bin/bash
# generate openapi specifiation or api+client classes from specification (Thomas Schneider / 2025)
# usage: generate-openapi.sh [spec|]
#
# example-1: generate-openapi.sh https://github.com/bump-sh-examples/train-travel-api/raw/refs/heads/main/openapi.yaml
# example-2: generate-openapi.sh spec
DEF_OPENAPI="openapi.yaml"
[[ "$1" == "spec" ]] && GENERATE_SPEC=1 || OPENAPI=${1:-$DEF_OPENAPI}
[[ "$1" == "" ]] && [ ! -f $DEF_OPENAPI ] \
&& echo "usage: $0 [spec|]" \
&& echo " if no parameter was given, the file $DEF_OPENAPI will be used" \
&& echo "ERROR: NO $DEF_OPENAPI FILE FOUND!" \
&& return 1
# only needed, if using standard pom.xml name
#if [ -f pom.xml ]; then mv pom.xml pom.xml.$(date +%Y%m%d_%H%M%S); fi
#cp pom-openapi.xml pom.xml
if [[ $GENERATE_SPEC != "" ]]; then
echo "Generating $DEF_OPENAPI from classes"
. mvnw -f pom-openapi.xml com.github.kongchen:swagger-maven-plugin:3.1.8:generate
else
echo "Generating java client classes from $OPENAPI"
if [[ $OPENAPI != $DEF_OPENAPI ]]; then
if [ -f $DEF_OPENAPI ]; then mv $DEF_OPENAPI $DEF_OPENAPI.$(date +%Y%m%d_%H%M%S); fi
curl -kL -X GET $OPENAPI -o $DEF_OPENAPI
fi
# the swagger generator seems to be outdated
# . mvnw io.swagger:swagger-codegen-maven-plugin:generate
# openapitools: for parameters (like library), see https://openapi-generator.tech/docs/generators/java/
bash -c "
. mvnw -f pom-openapi.xml org.openapitools:openapi-generator-maven-plugin:7.12.0:generate \
-Dopenapi.generator.maven.plugin.inputSpec=openapi.yaml \
-Dopenapi.generator.maven.plugin.generatorName=java \
-Dopenapi.generator.maven.plugin.sourceFolder=generated-src \
-Dopenapi.generator.maven.plugin.output=generated-src \
-Dopenapi.generator.maven.plugin.library=native"
echo "compiling and creating beans jar file"
bash -c ". mvnw -f pom-openapi.xml dependency:copy-dependencies -DoutputDirectory=./"
cp -fr --update=all generated-src/src/main/java/org generated-src
rm -fr generated-src/src/main/java/org
cp -fr --update=all generated-src/src/test/java/org generated-src
rm -fr generated-src/src/test/java/org
# make model classes persistable
sed -i -E 's/(public class.*)/@de.tsl2.nano.bean.annotation.Presentable(icon="icons\/point-yellow.png")\[email protected]\n\1\n\n\t\/\/generated by tsl2nano\n\tprivate @javax.persistence.Id @javax.persistence.GeneratedValue Long idgen_;\n\tpublic Long getIdgen_(){return idgen_;}\n\tpublic void setIdgen_(Long id){this.idgen_ = id;}\n\n/g' \
$(find generated-src/org/openapitools/client/model -name "*.java" -a -not -name "*Test.java")
sed -i -E 's/(private (List|Set|Collection|Array|Linked).*;)/@javax.persistence.ElementCollection\n\t\1/g' \
$(find generated-src/org/openapitools/client/model -name "*.java" -a -not -name "*Test.java")
sed -i -E 's/(private (\w+<)?(Object|Serializable).*;)/@javax.persistence.Transient\n\t\1/g' \
$(find generated-src/org/openapitools/client/model -name "*.java" -a -not -name "*Test.java")
# sed is not able to do a regex look ahead - so we use perl
perl -i -pE 's/(private (?!\w+Links|static|final|transient|class|.*Enum|List|Set|Collection|Array|Linked|Object|Serializable|[@]|String|.*Date.*|.*Time.*|Long|.*Integer|Short|Double|Bool|Byte|Character|.*Decimal|UUID|UR(I|L)).*;)/\@javax.persistence.ManyToOne\n\t\1/g' \
$(find generated-src/org/openapitools/client/model -name "*.java" -a -not -name "*Test.java")
# special mappings
sed -i -E 's/(private \w*Links.*;)/@javax.persistence.Transient\n\t\1/g' \
$(find generated-src/org/openapitools/client/model -name "*.java" -a -not -name "*Test.java")
# build the generated-model.jar file
. compilejar.cmd
fi
© 2015 - 2025 Weber Informatics LLC | Privacy Policy