Commit Graph

289 Commits

Author SHA1 Message Date
Michael Hoennig
6c33bbe780 add SpringBoot 2.7.x application 2022-07-28 16:51:36 +02:00
Michael Hoennig
f2d0fbe67a removing JHipster 2022-07-22 13:31:37 +02:00
Michael Hoennig
31cd92f3be #145 [Rights-Module] preparation for module specific roles / fix UserRoleAssignmentCriteria 2019-07-03 22:23:51 +02:00
Michael Hoennig
f79c4bd7a1 #145 [Rights-Module] preparation for module specific roles / static init 2019-07-03 21:54:03 +02:00
Michael Hoennig
7db2c23de1 #145 [Rights-Module] preparation for module specific roles 2019-06-27 23:48:16 +02:00
Michael Hoennig
7983aa7e52 #145 [Rights-Module] documented the role system and some renaming 2019-05-25 19:43:29 +02:00
Michael Hoennig
57b6399950 historicization of JHI_USER_AUTHORITY table 2019-05-25 16:40:41 +02:00
Michael Hoennig
354cfbbebc historicization of JHI_USER table 2019-05-25 16:40:16 +02:00
Michael Hoennig
cbb5532394 Deserializer: improved test code coverage for entity associations 2019-05-22 21:53:45 +02:00
Michael Hoennig
e7cb3622f3 Deserializer: improved test code coverage for IGNORE field access 2019-05-16 20:25:02 +02:00
Michael Hoennig
f9b68df901 Deserializer: BadRequestAlertException("Unknown property") with test code coverage 2019-05-15 07:41:21 +02:00
Michael Hoennig
60612f6c41 #146 [AccessRights] simple AccessFilter for UserRoleAssignments
allows r/w for ADMINs and r/o for SUPPORTERs
no entity dependent access rights implemented yet
2019-05-14 07:36:14 +02:00
Michael Hoennig
3143f27b6c refactored ugly and risky code in role filter / removed Role.isIndependent() 2019-05-10 17:37:36 +02:00
Michael Hoennig
a2b90b0a36 separated MockSecurityContext into SecurityContextMock+SecurityContextMock 2019-05-10 17:21:50 +02:00
Michael Hoennig
72e79e2134 #112 [RightsModule] use UserRoleAssignments from database 2019-05-10 11:18:15 +02:00
Michael Hoennig
01d28a85d4 #137 [Rechte-Modul] sample-data für User+UserRoleAssignment 2019-05-08 20:17:28 +02:00
Michael Hoennig
671d80cc71 adding @EntityTypeId to *DTO as preparation for UserRoleAssignments 2019-05-08 13:17:26 +02:00
Michael Hoennig
735f672ea1 UserRoleAssignment entityTypeId+entityObjectId now required
this table only stores entity-dependent roles,
independent roles are stored in the JHipster table JHI_USER_AUTHORITY
2019-05-08 10:56:48 +02:00
Michael Hoennig
8ca206e1c0 accessrights.jdl: UserRoleAssignments entity*Id required
Merge branch 'jhipster-generated'
2019-05-07 13:08:26 +02:00
Michael Hoennig
bac012f9b4 accessrights.jdl: UserRoleAssignments entity*Id required 2019-05-07 13:01:04 +02:00
Michael Hoennig
3228b0d0da make Hibernate sequence start above 1,000,000 to spare ids for sample data 2019-05-07 12:11:17 +02:00
Michael Hoennig
807ed74091 historicization for UserRoleAssinment 2019-05-07 11:01:01 +02:00
Michael Hoennig
6d85a59744 temporarily removing historicization for UserRoleAssinment
just to prepare a complete HOWTO-commit
2019-05-07 10:57:17 +02:00
Michael Hoennig
5337e7a7e8 historicization trigger+view for Customer, Membership, SepaMandate, Share and Asset 2019-05-07 10:54:27 +02:00
Michael Hoennig
e49323e99f UserRoleAssignment historicization 2019-05-06 19:12:12 +02:00
Michael Hoennig
f3c207528e general historicization table+function for Postgres 2019-05-06 19:11:33 +02:00
Michael Hoennig
295e45e8b8 ReplaceCustomChange: assume auto commit off during Liquibase-Changeset 2019-05-06 18:20:10 +02:00
Michael Hoennig
ecd5573654 ReplaceCustomChangeUnitTest 2019-05-06 11:47:08 +02:00
Michael Hoennig
f8ed5069fb sample-data: replacing pipes ('|') with newlines now via customChange
this avoids database-specific code spread over all sample-data/*.xml files
2019-05-05 14:15:07 +02:00
Michael Hoennig
4c42d15c12 fixing sample-data flag via gw -Psample-data in code+documentation 2019-05-05 14:13:17 +02:00
Michael Hoennig
6efa167427 adding Postgres configurations for dev-environment with sample-data 2019-05-04 13:59:36 +02:00
Michael Hoennig
22e7511952 #124 [intUI/Filter] for UserRoleAssignment 2019-05-03 23:22:17 +02:00
Michael Hoennig
5e001c59f9 Revert "#124 [intUI/Filter] for UserRoleAssignment"
I am reverting because I need to fix a bug in this commit and it's a tagged HOWTO commit.
2019-05-03 23:19:12 +02:00
Michael Hoennig
fbb356c8e9 fixing problems with infinite scroll due to hidden scrollbar and filtering 2019-05-03 23:17:52 +02:00
Michael Hoennig
d672d5b0cd more sample-data for assets 2019-05-03 22:36:57 +02:00
Michael Hoennig
967b06cfa7 #133 [intUI] for now, no sort functionality for *DisplayLabel columns 2019-05-03 21:50:08 +02:00
Michael Hoennig
cd94cb118d add placeholder="YYYY|--|++" to date filter inputs 2019-05-03 21:02:17 +02:00
Michael Hoennig
b7aac92807 match membership sample-date with sepa-mandate sample-data 2019-05-03 20:22:17 +02:00
Michael Hoennig
20b9d2f105 #131 sample-data for sepamandate 2019-05-03 20:21:07 +02:00
Michael Hoennig
0a9f2584f1 #124 [intUI/Filter] for UserRoleAssignment 2019-05-03 14:41:41 +02:00
Michael Hoennig
ab88505144 #135 [intUI/Filter] filtering non-/empty values possible with '--'/'++' 2019-05-03 12:22:10 +02:00
Michael Hoennig
1a8fb9276e #120 [intUI/Filter] for Membership 2019-05-03 12:20:54 +02:00
Michael Hoennig
447fbb773d #122 [intUI/Filter] for Asset and alignment with implementation in Share 2019-05-03 09:28:24 +02:00
Michael Hoennig
5f536ad043 #115/#116/#117 [intUI/textareas] Remark in Membership/Asset/Share 2019-05-03 00:32:58 +02:00
Michael Hoennig
da60a3020f remove Remark from table view of SepaMandate 2019-05-03 00:22:00 +02:00
Michael Hoennig
6816930793 #118 [intUI/textareas] multiline Remark in SepaMandate 2019-05-03 00:17:43 +02:00
Michael Hoennig
0b3f4d4a03 textarea input and multiline output for Customer.remark (was missing) 2019-05-03 00:12:41 +02:00
Michael Hoennig
8c367ab566 #129 [intUI/Date-Format] SepaMandate 2019-05-03 00:03:51 +02:00
Michael Hoennig
64a91c82ae makes the actual data easier to read in details views 2019-05-03 00:01:40 +02:00
Michael Hoennig
d758e3a979 #127/#128 [intUI/Date-Format] Asset+Share 2019-05-02 23:45:07 +02:00
Michael Hoennig
30b4d1f95c #126 [intUI/Date-Format] Membership 2019-05-02 23:39:50 +02:00
Michael Hoennig
5415806621 use STRINGDECODE \n in UPDATE-Statements for linebreaks in sample-data 2019-05-02 23:36:08 +02:00
Michael Hoennig
1bb712276c properly display line-breaks in customer address fields + STRINGDECODE \n 2019-05-02 23:25:35 +02:00
Michael Hoennig
dccafcc900 added TableFilter to share.component, TableFilter now with date range 2019-05-02 22:51:17 +02:00
Michael Hoennig
8ae7547775 customer table with translated customerKind 2019-05-02 11:52:41 +02:00
Michael Hoennig
2dd3deb17b fixing tslint issues 2019-05-02 11:28:40 +02:00
Michael Hoennig
13100a9010 assets sample data 2019-05-02 11:25:13 +02:00
Michael Hoennig
84f1abf0b0 shares sample data and some cleanup 2019-05-02 11:17:22 +02:00
Michael Hoennig
7f358cc7fe membership sample data and some minor fixes 2019-05-02 11:06:09 +02:00
Michael Hoennig
89437ca067 filter Customer table + class TableFilter 2019-05-02 09:54:37 +02:00
Michael Hoennig
6df2cbce0b remove duplicate userId from entity UserRoleAssignment
(it already comes implicitly through the relationship)
2019-04-30 18:29:32 +02:00
Michael Hoennig
4529527e3b removing duplicate userId from entity UserRoleAssignment
(it comes implicitly through the relationship)
2019-04-30 18:04:25 +02:00
Michael Hoennig
3c89878c21 cate userId from entity UserRoleAssignment
(it comes implicitly through the relationship)
2019-04-30 17:58:56 +02:00
Michael Hoennig
3908ff3d74 Merge branch 'jhipster-generated' with initially imported accessrighs.jdl 2019-04-30 17:29:18 +02:00
Michael Hoennig
084c12d2c4 adding and importing accessrights.jdl with spotless 2019-04-30 17:24:24 +02:00
Michael Hoennig
1aed3236a5 Merge branch 'jhipster-generated'
# Conflicts:
#	build.gradle
#	cfg/spotless/eclipse_formatter.xml
#	cfg/spotless/hsadminng.importorder
#	src/main/java/org/hostsharing/hsadminng/HsadminNgApp.java
#	src/main/java/org/hostsharing/hsadminng/domain/Asset.java
#	src/main/java/org/hostsharing/hsadminng/domain/Membership.java
#	src/main/java/org/hostsharing/hsadminng/domain/SepaMandate.java
#	src/main/java/org/hostsharing/hsadminng/domain/Share.java
#	src/main/java/org/hostsharing/hsadminng/repository/MembershipRepository.java
#	src/main/java/org/hostsharing/hsadminng/security/SecurityUtils.java
#	src/main/java/org/hostsharing/hsadminng/service/AssetService.java
#	src/main/java/org/hostsharing/hsadminng/service/CustomerQueryService.java
#	src/main/java/org/hostsharing/hsadminng/service/MembershipQueryService.java
#	src/main/java/org/hostsharing/hsadminng/service/MembershipService.java
#	src/main/java/org/hostsharing/hsadminng/service/SepaMandateQueryService.java
#	src/main/java/org/hostsharing/hsadminng/service/ShareService.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/AssetDTO.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/CustomerCriteria.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/MembershipDTO.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/SepaMandateDTO.java
#	src/main/java/org/hostsharing/hsadminng/service/dto/ShareDTO.java
#	src/main/java/org/hostsharing/hsadminng/service/mapper/CustomerMapper.java
#	src/main/java/org/hostsharing/hsadminng/web/rest/AssetResource.java
#	src/main/java/org/hostsharing/hsadminng/web/rest/ShareResource.java
#	src/main/java/org/hostsharing/hsadminng/web/rest/errors/ExceptionTranslator.java
#	src/test/java/org/hostsharing/hsadminng/web/rest/AssetResourceIntTest.java
#	src/test/java/org/hostsharing/hsadminng/web/rest/CustomerResourceIntTest.java
#	src/test/java/org/hostsharing/hsadminng/web/rest/MembershipResourceIntTest.java
#	src/test/java/org/hostsharing/hsadminng/web/rest/SepaMandateResourceIntTest.java
#	src/test/java/org/hostsharing/hsadminng/web/rest/ShareResourceIntTest.java
2019-04-30 17:13:06 +02:00
Michael Hoennig
2c94d6a985 adding spotless, re-importing customer.jdl and spotlessApply 2019-04-30 17:08:45 +02:00
Michael Hoennig
1373756877 Revert "makes 'gw spotlessCheck' deliberately fail to test Jenkins pipeline"
This reverts commit dcf7bdc9
2019-04-30 13:13:57 +02:00
Michael Hoennig
dcf7bdc9b1 makes 'gw spotlessCheck' deliberately fail to test Jenkins pipeline 2019-04-30 13:07:27 +02:00
Michael Hoennig
b5d50acfbd gw spotlessApply to latest revision, preparation for re-merging generated 2019-04-30 12:21:33 +02:00
Michael Hoennig
29a2178a48 splitting up build.gradle - step 1 2019-04-30 07:52:37 +02:00
Michael Hoennig
087e6617d3 using a proper displayLabel for the parent SepaMandate->Customer (HOWTO)
Unfortunately without a test for the HTML template changes of the Angular components
because these seem to come only with Protractor, which we had not configured in JHipster.
2019-04-29 18:43:23 +02:00
Michael Hoennig
2980103764 run createSepaMandate test now as FINANCIAL_CONTACT of related customer 2019-04-29 15:18:45 +02:00
Michael Hoennig
0fd30a5700 adding AccessMappings SepaMandateDTO with tests + consequences (HOWTO) 2019-04-29 12:39:31 +02:00
Michael Hoennig
cc0857e33b FluentBuilder<D> as interface with default method 2019-04-29 12:19:34 +02:00
Michael Hoennig
1916347490 Revert "adding AccessMappings SepaMandateDTO with tests + consequences (HOWTO)"
This reverts commit 328e809a because I want all changes of this HOWTO in a single commit.

Unfortunately due to the access filter, the SepaMandateIntTest failed with branch coverage, as some branches were not reachable anymore.
2019-04-29 11:23:05 +02:00
Michael Hoennig
328e809a2b adding AccessMappings SepaMandateDTO with tests + consequences (HOWTO) 2019-04-29 09:39:08 +02:00
Michael Hoennig
474d51fbae refactoring of AccessMappingsUnitTestBase overloading -> method refs in ctor 2019-04-29 09:29:04 +02:00
Michael Hoennig
0de11a2548 cleanup unused constants in SepaMandateResourceIntTest 2019-04-29 09:12:30 +02:00
Michael Hoennig
8267cef973 improved code coverage for ShareResource 2019-04-28 14:38:03 +02:00
Michael Hoennig
5835f15cd9 implemented more AssetDTO+ShareDTO tests and fixed but in ShareDTO 2019-04-28 14:15:51 +02:00
Michael Hoennig
2cd92d4e2c generalized AccessMappingsUnitTestBase 2019-04-28 12:05:02 +02:00
Michael Hoennig
0257c83fa5 fine-tuning pitest config and increasing threshold 2019-04-28 11:14:44 +02:00
Michael Hoennig
187ccfdcc7 writtenFields->updatingFields and remove fields which are not actually updating (effectively same value) 2019-04-27 21:01:29 +02:00
Michael Hoennig
acfef3dfbe test for equality via compareTo() to consider BigDecimal/DateTime etc. => effectively unchanged in update 2019-04-27 20:36:25 +02:00
Michael Hoennig
3abc201a8d split up AssetDTOUnitTest and AssetDTOIntTest, AccessMappingsUnitTestBase 2019-04-27 17:56:50 +02:00
Michael Hierweck
2fdb914f6d Merge branch 'master' of ssh://dev.hostsharing.net:29418/hsadmin/hsadmin-ng 2019-04-27 15:46:55 +02:00
Michael Hierweck
d4adbb972d Sample data for customers. 2019-04-27 15:46:43 +02:00
Michael Hoennig
5edf97b230 AssetDTOUnitTest and Membership.displayLabel now with memberFrom/Until 2019-04-27 15:03:03 +02:00
Michael Hoennig
456a2f4811 reduced logging for determined user role to debug level 2019-04-27 13:48:27 +02:00
Michael Hoennig
956cadeb09 membership.model.ts: membershipDisplayLabel -> customerDisplayLabel 2019-04-27 13:23:32 +02:00
Michael Hoennig
efa2972375 code coverage improved for MembershipResource and CustomerResource
and Customer not explicitly deletable anymore
2019-04-27 12:05:30 +02:00
Michael Hoennig
3b0d46a4c8 better display labels and less columns in tables (deliberately not yet in SepaMandate*) 2019-04-27 11:30:15 +02:00
Michael Hoennig
b9a7c33c6a explicitly mock user+role in *IntTest, set global role HOSTMASTER only in dev profile 2019-04-27 11:10:36 +02:00
Michael Hoennig
5d843f4725 org.hostsharing.hsadminng logging on INFO level and logging in SecurityUtils 2019-04-27 10:28:16 +02:00
Michael Hoennig
53382beb88 MembershipDTO JSonSerializerWithAccessFilter proper membershipDisplayReference 2019-04-27 09:52:54 +02:00
Michael Hoennig
bed81ee7f8 Fix AssetResourceIntTest BigDecimal scaling problem 2019-04-27 07:16:26 +02:00
Michael Hoennig
c8bb8cb2ca @AccessFrom in AssetDTO and AssetMapper with improved membershipDisplayReference 2019-04-27 07:13:52 +02:00
Michael Hoennig
6570981dc2 Revert "@AccessFrom in AssetDTO and AssetMapper with improved membershipDisplayReference"
This reverts commit 4ad0d5d954.
2019-04-27 06:37:56 +02:00
Michael Hoennig
51ff0c4990 Revert "MembershipDTO JSonSerializerWithAccessFilter proper membershipDisplayReference"
This reverts commit da5b667607.
2019-04-27 06:37:30 +02:00
Michael Hoennig
638a35ea5a Revert "Fix AssetResourceIntTest BigDecimal scaling problem"
This reverts commit a86e4d7afb.
2019-04-27 06:36:47 +02:00
Michael Hoennig
7e3d3ec5de Revert "better display labels and less columns in tables (deliberately not yet in SepaMandate*)"
This reverts commit d81b71cd3a.
2019-04-27 06:36:11 +02:00
Michael Hoennig
f301364d84 Revert "trying to find reason for failing tests in Jenkins, locally all tests are green"
This reverts commit 318ecd0be4.
2019-04-27 06:36:01 +02:00
Michael Hoennig
f08a1d89b3 Revert "trying to find reason for failing tests in Jenkins, locally all tests are green"
This reverts commit 411342eb0b.
2019-04-27 06:35:51 +02:00
Michael Hoennig
411342eb0b trying to find reason for failing tests in Jenkins, locally all tests are green 2019-04-26 23:00:21 +02:00
Michael Hoennig
318ecd0be4 trying to find reason for failing tests in Jenkins, locally all tests are green 2019-04-26 22:53:32 +02:00
Michael Hoennig
d81b71cd3a better display labels and less columns in tables (deliberately not yet in SepaMandate*) 2019-04-26 22:11:49 +02:00
Michael Hoennig
a86e4d7afb Fix AssetResourceIntTest BigDecimal scaling problem 2019-04-26 19:35:07 +02:00
Michael Hoennig
da5b667607 MembershipDTO JSonSerializerWithAccessFilter proper membershipDisplayReference 2019-04-26 17:43:22 +02:00
Michael Hoennig
4ad0d5d954 @AccessFrom in AssetDTO and AssetMapper with improved membershipDisplayReference 2019-04-26 17:15:39 +02:00
Michael Hierweck
7b039fcedb Remove outdate liquibase changesets 2019-04-26 12:54:10 +02:00
Michael Hoennig
6092afe32b better coverage 2019-04-26 11:41:48 +02:00
Michael Hoennig
a10a3a62e5 fix failing unit test and better coverage 2019-04-26 11:27:29 +02:00
Michael Hoennig
ea08f4a6c6 removed bloat-code from JsonComponents in DTOs 2019-04-26 10:26:25 +02:00
Michael Hoennig
a6fd210de5 test code coverage improved and more JSon/field types 2019-04-25 18:53:32 +02:00
Michael Hoennig
fb3b79cfc4 for now, make give all users the role of a HOSTMASTER 2019-04-25 12:56:51 +02:00
Michael Hoennig
3e30cf2d17 merging current DTO during deserialization 2019-04-25 12:22:45 +02:00
Michael Hoennig
fb961ca4a1 merging from master 2019-04-24 17:41:28 +02:00
Michael Hierweck
7c7d79c870 Fixed tests after merge. 2019-04-24 17:22:56 +02:00
Michael Hierweck
5ac1277e7e Merge branch 'jhipster-generated' 2019-04-24 16:14:14 +02:00
Michael Hierweck
2a4ee0507c Preliminary completed customer model. 2019-04-24 14:36:11 +02:00
Michael Hoennig
ad1517a16e JSonAccessFilter with generic access to grand parent role 2019-04-24 13:23:08 +02:00
Michael Hoennig
639ea06243 JSonAccessFilter with initially working (hardcoded) grand parent role 2019-04-24 12:30:26 +02:00
Michael Hoennig
a94516b3ce JSonSerializer/DeserializerWithAccessFilter: also use role in parent 2019-04-23 14:37:49 +02:00
Michael Hoennig
1505e7bd66 JSonDeserializerWithAccessFilter: shouldDetectMultipleSelfIdFields 2019-04-23 09:22:23 +02:00
Michael Hoennig
d2b0f477f2 CustomerDTO: AccessFor/Rights-Configuration 2019-04-23 08:42:47 +02:00
Michael Hoennig
63bd602397 JSonDeserializerWithAccessFilter with working access rights validation 2019-04-23 08:31:26 +02:00
Michael Hoennig
bb0fb4aa78 parallel structure for JSonSerializer/DeserializerWithAccessFilter 2019-04-23 06:57:06 +02:00
Michael Hoennig
90316a262b JSonSerializerWithAccessFilter - idea for parallel structure with deserializer 2019-04-23 06:28:36 +02:00
Michael Hoennig
741e91bb78 JSonSerializerWithAccessFilter - idea for generalization of field types 2019-04-23 06:27:41 +02:00
Michael Hoennig
1dae396d99 JSonDeserializerWithAccessFilter 2019-04-23 06:17:55 +02:00
Michael Hoennig
1bc7044527 fixing pitest failure by excluding purely generated code etc.
also removed unused methods and added a unit test to improve coverage
and setting thresholds now to 90% each
2019-04-21 11:53:30 +02:00
Michael Hoennig
1ac8df5ed9 improving branch coverage for AssetValidator+ShareValidator 2019-04-20 14:47:45 +02:00
Michael Hoennig
7ba20b3687 improving branch coverage for AssetResourceIntTest 2019-04-20 10:47:01 +02:00
Michael Hoennig
9f95af7547 fixing the ShareServiceUnitTest as validation was moved to ShareValidator 2019-04-20 09:43:11 +02:00
Michael Hoennig
98f96a72b1 fixing the AssetResourceIntTest BigDecimal equals 2019-04-19 14:25:25 +02:00
Michael Hoennig
de439a1658 fixing the *IntTest regarding required related entities and unique constraints 2019-04-19 14:13:16 +02:00
Michael Hierweck
a89967e91b Translations. 2019-04-19 14:11:54 +02:00
Michael Hierweck
bc1c94a364 Shares and Assets. 2019-04-19 13:44:52 +02:00
Michael Hoennig
998a5a8aa1 WIP JSonDeserializerWithAccessFilter 2019-04-19 12:08:30 +02:00
Michael Hoennig
0b7ebac472 first shot @AccessFor on MembershipDTO 2019-04-19 12:08:04 +02:00
Michael Hoennig
6e017aba49 removing orphaned specialized serializer from CustomerDTO 2019-04-19 11:01:52 +02:00
Michael Hoennig
a24ca35bd7 JSonSerializerWithAccessFilterUnitTest 2019-04-19 10:46:40 +02:00
Michael Hoennig
1ad74907bd RoleUnitTest + special case FINANCIAL_CUSTOMER_CONTACT 2019-04-19 09:13:19 +02:00
Michael Hoennig
d5a37ddfae JavaDoc for Role 2019-04-19 07:46:11 +02:00
Michael Hoennig
f4960f260e moving the JSonSerializer to a separate package 2019-04-19 07:18:20 +02:00
Michael Hoennig
6ab67995ff fixing tests after merging master 2019-04-18 18:11:56 +02:00
Michael Hoennig
16cf845015 Merge branch 'master' into spike/JSonSerializerDeserializerForDTOs
# Conflicts:
#	package-lock.json
#	src/main/java/org/hostsharing/hsadminng/service/dto/CustomerDTO.java
2019-04-18 17:36:35 +02:00
Michael Hierweck
633ae1d7d1 Merge branch 'jhipster-generated' 2019-04-18 17:18:03 +02:00
Michael Hoennig
5287d78fcb JSON serializer generalized 2019-04-18 17:16:18 +02:00