profile
viewpoint
Oliver Drotbohm odrotbohm Pivotal Software, Inc. Dresden, Germany www.olivergierke.de Senior Principal Software Engineer @ Pivotal, Java Champion, OpenSource enthusiast, all things Spring, data, DDD, REST and software architecture. Soul Power!

joshlong/the-spring-rest-stack 354

the deck to my talk on building more powerful REST APIs

neo4j/sdn-rx 63

Nextgen Spring Data module for Neo4j supporting (not only) reactive data access and immutable support

odrotbohm/hades-showcase 7

Sample project to show how Hades eases JPA repository implementation.

markpollack/mongosv 3

MongoSV Conference Material

michael-simons/ws-20170627-cluj 2

Workshop at Accesa

odrotbohm/cafelito 2

Demo web app from QCon London 2014

odrotbohm/hibernate-criteria-statistics 2

Sample projects on how to enable Criteria statistics in Hibernate with AspectJ until HHH-3452 gets fixed

odrotbohm/alfred-reminders 1

Alfred Extension to create iOS Reminders

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 9c005a68606f3b3c8e4ffc65f519650b83e4e58d

#252 - Reduce visibility of StockShort event constructor.

view details

push time in a day

issue closedst-tu-dresden/salespoint

Fire event on inventory stock change

This is useful to implement automatic triggers of re-stock, e.g. by creating a supplier order or the like.

closed time in a day

odrotbohm

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 7241e67a64272dfea82bfb688cf45a26c598b0bb

#252 - More events in Inventory. Decreasing the quantity of an InventoryItem now results in an internal QuantityReduced event being published. That is listened to by InternalInventoryListeners and verified against the threshold quanity defined via salespoint.inventory.restock-threshold (defaulting to Quantity.NONE). In case the current quantity is below that threshold a publicly consumable StockShort event is published that can be used to trigger further logic. Slightly tweaked the arrangement in Inventory event listening. The event types are now member classes of InventoryEvents. Listeners are grouped into InventoryListeners and the actual business logic executed for the OrderCompleted and OrderCanceled events has been moved into an internal InventoryManagement. Tweaked the Moduliths setup to always include the quantity module so that the Spring Boot type binding can be used in InventoryProperties. Had to let QuantityFormatter implement Converter as well and be annotated with @ConfigurationPropertiesBinding to be picked up. AbstractEntity now exposes ….hasId(…) for easier comparison.

view details

Oliver Drotbohm

commit sha 681180b375bdff8907e5a84ccd612e452bacb10b

#252 - Polishing. Missing license headers or updates to those. Trailing whitespace.

view details

push time in a day

push eventodrotbohm/moduliths

Oliver Drotbohm

commit sha 8c92c7adaf15ea0a4d541ca6086a83852f8cca1e

#126 - Allow more sophisticated matching on TypedPublishedEvents.

view details

push time in a day

issue closedodrotbohm/moduliths

Add TypedPublishedEvents.matchingMapped(…)

As the constraints to select events for verification are usually focused on the event's payload it would be nice if there was API to easily map to the content and register a Predicate on that to filter the owning event.

class SomeEvent {
  Payload payload;
}

// Before
events.ofType(SomeEvent.class).matching(it -> it.getPayload().equals(reference));

// After
events.ofType(SomeEvent.class).matchingMapped(SomeEvent::getPayload, reference::equals);

closed time in a day

odrotbohm

push eventodrotbohm/moduliths

Oliver Drotbohm

commit sha 0ce8cb491e601e60143c729dc7867659f1a7259f

#126 - Allow more sophisticated matching on TypedPublishedEvents.

view details

push time in a day

PR closed spring-projects/spring-data-commons

DATACMNS-1806 - Prevent returning null from Lazy due to concurrency problem.

When accessed concurrently from multiple threads, Lazy.getNullable() could return null unexpectedly.

  • [x] You have read the Spring Data contribution guidelines.
  • [x] There is a ticket in the bug tracker for the project in our JIRA.
  • [x] You use the code formatters provided here and have them applied to your changes. Don’t submit any formatting related changes.
  • [ ] You submit test cases (unit or integration tests) that back your changes.
  • [x] You added yourself as author in the headers of the classes you touched. Amend the date range in the Apache license header if needed. For new types, add the license header (copy from another file and set the current year only).

No test case provided in code as due to the nature of concurrency issues it is problematic to quickly test the issue. There's a test setup provided in the jira ticket.

+5 -8

0 comment

1 changed file

xehonk

pr closed time in a day

push eventspring-projects/spring-data-commons

Henning Rohlfs

commit sha 3a3f0befc90f04d9a2533b98a2c0161e06281711

DATACMNS-1806 - Prevent returning null from Lazy due to concurrency problem. When accessed concurrently from multiple threads, Lazy.getNullable() could return null unexpectedly. Original pull request: #468.

view details

push time in a day

push eventspring-projects/spring-data-commons

Henning Rohlfs

commit sha 66b9eab2c02a6720116cf23a0f7f7babf164c825

DATACMNS-1806 - Prevent returning null from Lazy due to concurrency problem. When accessed concurrently from multiple threads, Lazy.getNullable() could return null unexpectedly. Original pull request: #468.

view details

push time in a day

push eventspring-projects/spring-data-commons

Henning Rohlfs

commit sha a442b9002181fa6461490d105a28dd187dd3c38d

DATACMNS-1806 - Prevent returning null from Lazy due to concurrency problem. When accessed concurrently from multiple threads, Lazy.getNullable() could return null unexpectedly. Original pull request: #468.

view details

Oliver Drotbohm

commit sha e3e23828ef7abd3b339dab0f25c42b2620aaa797

DATACMNS-1806 - Polishing. Styilistic tweaks (we only qualify writing field access with this). Original pull request: #468.

view details

push time in a day

push eventspring-projects/spring-data-commons

Oliver Drotbohm

commit sha af9dd6110d70b16d2e8eea8002a64e61401d524e

DATACMNS-1726 - Polishing of nullability after Lombok removal. Reviewed visibility modifiers manually introduced constructors previously provided by Lombok. Also some nullability constraints have been accidentally changed by that.

view details

push time in a day

issue commentjunit-team/junit5

Support named sources for DynamicTest.stream(…)

Lovely, looking forward!

odrotbohm

comment created time in a day

issue openedodrotbohm/moduliths

Add TypedPublishedEvents.matchingMapped(…)

As the constraints to select events for verification are usually focused on the event's payload it would be nice if there was API to easily map to the content and register a Predicate on that to filter the owning event.

class SomeEvent {
  Payload payload;
}

// Before
events.ofType(SomeEvent.class).matching(it -> it.getPayload().equals(reference));

// After
events.ofType(SomeEvent.class).matchingMapped(SomeEvent::getPayload, reference::equals);

created time in a day

PR closed spring-projects/spring-data-rest

DATAREST-1567 - Replace component scan with @Bean methods.

We replaced the component scan in RespositoryRestMvcConfiguration with dedicated bean methods. This allows us to be more explicit in resolving required components, which is required for better support of GraalVM native image.

Relates to: spring-projects-experimental/spring-graalvm-native#192

+283 -39

0 comment

20 changed files

christophstrobl

pr closed time in a day

push eventspring-projects/spring-data-rest

Christoph Strobl

commit sha 8ff438678dcc978e7a84f210ae7484cba6d8d16e

DATAREST-1567 - Replace component scan with explicit bean methods. We replaced the component scan in RespositoryRestMvcConfiguration with dedicated bean methods. This allows us to be more explicit in resolving required components, which is required for better support of GraalVM native image. Original pull request: #382.

view details

Oliver Drotbohm

commit sha 25cfb6ecb94d1256d81fbe7a3618bde531f48913

DATAREST-1567 - Polishing. Tweaked test setups to work without the explicit component scanning. Original pull request: #382.

view details

push time in a day

push eventspring-projects/spring-data-rest

Christoph Strobl

commit sha 3e84f19949733d7651369109096c6f1259719487

DATAREST-1567 - Replace component scan with explicit bean methods. We replaced the component scan in RespositoryRestMvcConfiguration with dedicated bean methods. This allows us to be more explicit in resolving required components, which is required for better support of GraalVM native image. Original pull request: #382.

view details

Oliver Drotbohm

commit sha 88ee3dd90ebdd4dffbee98be9ae7632954836c6d

DATAREST-1567 - Polishing. Tweaked test setups to work without the explicit component scanning. Original pull request: #382.

view details

push time in a day

issue commentrzwitserloot/lombok

[BUG] Maven delombok plugin fails on JDK 15

Great one, @Rawi01. Thanks! 🙇

odrotbohm

comment created time in 2 days

issue closedst-tu-dresden/salespoint

Rename …Manager interfaces to …Management

Avoids the impression that the concept is an actor on the system. Also hints at the interface being the primary abstraction to initially look at.

closed time in 2 days

odrotbohm

issue commentst-tu-dresden/salespoint

Rename …Manager interfaces to …Management

Duplicates #328.

odrotbohm

comment created time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha ff9d07256f66790b0e3f61892124edd6b653fa8f

#328 - Renamed …Manager types to …Management. Removed deprecations and quite a few cleanups in test cases.

view details

push time in 2 days

issue closedodrotbohm/moduliths

Allow creation of PublishedEvents from Spring Data aggregate

Spring Data provides means to register events for publication. It would be nice to be able to easily create a PublishedEvents instance from an aggregate instance for use in unit tests.

closed time in 2 days

odrotbohm

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 6755f773c5a302183f7d939815830622de4ef65c

#327 - Improve on tests of events produced for Order. Added unit test to verify events being registered for order cancellation. Updated integration tests for order to also verify events being published. Upgrade to Moduliths 1.1 snapshots for test utilities.

view details

push time in 2 days

delete branch st-tu-dresden/salespoint

delete branch : gh-actions-badges

delete time in 2 days

push eventst-tu-dresden/salespoint

Martin Morgenstern

commit sha 4b11cdd15f2ce2f42147ad4643e0ae37b2c250df

#318 - Switch to GitHub Actions status badge.

view details

push time in 2 days

push eventodrotbohm/moduliths

Oliver Drotbohm

commit sha 081d392e9572505e5f154187da0281cc18066374

#125 - Introduce test helper to create a PublishedEvents from Spring Data aggregates.

view details

push time in 2 days

issue openedodrotbohm/moduliths

Allow creation of PublishedEvents from Spring Data aggregate

Spring Data provides means to register events for publication. It would be nice to be able to easily create a PublishedEvents instance from an aggregate instance for use in unit tests.

created time in 2 days

push eventodrotbohm/moduliths

Oliver Drotbohm

commit sha 213a9fafdb4fc37e12c670c00f9408fb051dc943

#124 - Allow programatic usage of PublishedEvents. Introduced PublishedEvents.of(…) to manually create instances of it for use in unit tests.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 3d4e290edcdbf75b26106238504f28ed0460ce21

#325 - Refactored OrderManager.cancel(…) to take a reason.

view details

Oliver Drotbohm

commit sha 5411e8a1072bafed6fcfb53312f71e8aefec943f

#326 - Move from Moduliths' @Event to jDDD's DomainEvent.

view details

push time in 2 days

issue commentst-tu-dresden/salespoint

Tweak CI build to continuously deploy snapshots and docs

We now build and deploy artifacts on every commit and deploy the documentation every night.

odrotbohm

comment created time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha cbecb726da26b081badfab48c6f8a33d33ef8e8a

#319 - Skip tests on deployment as they have just run before.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha f8ff5c57ae86900de6ac60e686e77ad8756cdfb4

#319 - Fix typo and cron expression in workflow.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha f34a6f24ec693f30d37e9339c59150e36170b128

#319 - Fix typo in workflow.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 0a20afb365e05fabd048fbaefbb313d6d7654431

#319 - Revamped build to allow different CI jobs. Restructured the build to now contain a dedicated 'docs' profile that runs just enough tests to be able to render the Asciidoctor documentation. The default test run will exclude the documentation creation tests. This speeds up the standard build as it doesn't have to run that extra test and create the reference docs each and every time. There are now two GitHub workflows: - build.yaml - to package the artifact and deploy it into the Salespoint repository (on every commit to main) - docs.yaml - triggers doc specific build and deploys the docs and the website to the server (nightly) Tweaked the site upload to avoid attempting to chmod the uploaded files as it tries to do that on the root folder and the upload process hangs on that attempt.

view details

Oliver Drotbohm

commit sha 17857578a20740f70f2e95d5558151c46ff2feae

#323 - Update readme to reflect version change back to 7.3.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 257830d5d66b028302c8491b5d00a807e77f8765

#319 - Make sure documentation is packaged and deployed.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 53b55fbb00538179af11190fe7749fdb6d7c5c0a

#319 - Make sure documentation is packaged and deployed.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha b94dc25535092e7b8f01514b8ca15ba8db2c3d2b

#319 - Make sure documentation is packaged and deployed.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 53a3eea4142d2832adc44167626e1f2d91961631

#323 - Switch version back to 7.3. Also remove redeclaration of Maven Compiler Plugin as the default setup does exactly the same.

view details

Oliver Drotbohm

commit sha a03abda065cd63f2d36302b39467f4479bebd45d

#324 - Upgrade to latest Asciidoctor.

view details

push time in 2 days

issue openedst-tu-dresden/salespoint

Switch version back to 7.3

created time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha cb2bcf7529f58957477d7e9fe5146964a07a2abd

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 688f4096a7fddd2f1d6a34c2596a74ad2aed2a9f

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha ad0c91dbbb6ca8b9f54d7ac2ad84618ddd2b6cc0

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 606519d4e51f00d7a9c4684b60ecfc812b07d611

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 514f460d38a94e083487596281d280e698c8f3c5

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 8c7b92f185b505400a2772bcdf96542f23bf6da6

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 222b6a71080fd56b01eef89e82639c7abd972db3

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 95456c6c83a9cce3a29e7eb61741aa7b97c84210

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 9999919df9d140f23410ae66a36cde3c43a22da6

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha d1494078f1d0b37cd92b0be272edc51d9d75355a

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha a8e67a83111eadd71116b7edb099209514df02c5

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha bb9565b95e86488836208d3dc6085c7a0019cfed

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha a82c7aada99a2a8b9351be10027d4ded29c486e0

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 52951276961a7d2b7af2766fe2819f3782911398

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 41316e80e6f4aeb5b2c7d1986c2e4df0755a24f3

#319 - Let CI build deploy snapshots.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 5b09df551813e1868057074db25d0c7baac53148

#322 - Upgrade to Spring doc resources 0.2.2.

view details

push time in 2 days

PR closed st-tu-dresden/salespoint

#51 - Improvements to documentation of Accountancy lifecycle: feedback requested
+213 -126

1 comment

7 changed files

odrotbohm

pr closed time in 2 days

delete branch st-tu-dresden/salespoint

delete branch : master

delete time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha be0699542dada4b25d6bea055110e643fa30d306

#318 - Switch to GitHub actions.

view details

Oliver Drotbohm

commit sha f92525c03e9057044ce889954080eca45dbfe0cd

#318 - Remove CI config for Travis.

view details

Oliver Drotbohm

commit sha 03dc30d3fe987de529699f39215bfaec2f7d60fb

#320 - Fix broken Javadoc generation. Javadoc generation fails if you point it towards a library's Javadoc that is a module when your project itself isn't. https://bugs.openjdk.java.net/browse/JDK-8240169

view details

Oliver Drotbohm

commit sha 6925837163ed2ab75eeec33ca68cd8004d0687c8

#299 - Upgrade to Moduliths 1.0.

view details

Oliver Drotbohm

commit sha 84f1484cff1ff4425308f36ad3755fb898664967

#321 - Upgrade to Spring Boot 2.3.4. Removed obsolete Maven Enforcer Plugin version number. Added Lombok annotation processor to avoid warnings during build.

view details

push time in 2 days

issue closedst-tu-dresden/salespoint

Quantities rendered from database values always contain ….00

The Lernraum revealed some weird behavior. Observably, Quantity instances loaded from the database always have decimal places. Turns out that QuantityAttributeConverter isn't applied actually. Assumingly die to Quantity being an @Embeddable.

If I actually apply the converter (by removing @Embeddable) queries start to fail, as they reference components of Quantity (like the amount) and the converter causing Hibernate to treat the value like an opaque string.

closed time in 2 days

odrotbohm

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 19bb68bc34eeb9d849984ab619b1c06aabb44019

#321 - Upgrade to Spring Boot 2.3.4. Removed obsolete Maven Enforcer Plugin version number. Added Lombok annotation processor to avoid warnings during build.

view details

push time in 2 days

issue openedst-tu-dresden/salespoint

Upgrade to Spring Boot 2.3.4

created time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha e0b30afc0944e5214f88eb38db35f1cbfdd61a6e

#299 - Upgrade to Moduliths 1.0.

view details

push time in 2 days

issue closedst-tu-dresden/salespoint

Fix broken Javadoc generation

https://bugs.openjdk.java.net/browse/JDK-8240169

closed time in 2 days

odrotbohm

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 926fb496f58ee174764327d700a48e297279aac8

#320 - Fix broken Javadoc generation. Javadoc generation fails if you point it towards a library's Javadoc that is a module when your project itself isn't. https://bugs.openjdk.java.net/browse/JDK-8240169

view details

push time in 2 days

issue openedst-tu-dresden/salespoint

Fix broken Javadoc generation

https://bugs.openjdk.java.net/browse/JDK-8240169

created time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha e58820576762339673be422cb434e17d6a1ce6a8

#318 - Remove CI config for Travis.

view details

push time in 2 days

push eventst-tu-dresden/salespoint

Oliver Drotbohm

commit sha 2f38e08cd78a7256b3cd0a78d45f4e879811a567

#318 - Switch to GitHub actions.

view details

push time in 2 days

create barnchst-tu-dresden/salespoint

branch : main

created branch time in 2 days

issue closedst-tu-dresden/salespoint

SalesPoint Javadoc search is not working

You can hover above the autocompleted names of salespointpackages but clicking leads to 404 :(

closed time in 2 days

phthalodale

issue openedrzwitserloot/lombok

[BUG] Maven delombok plugin fails on JDK 15

Describe the bug

Executing a Maven build with JDK 15 and the Maven Delombok plugin in version 1.18.12.0 leads to the following:

[ERROR] Failed to execute goal org.projectlombok:lombok-maven-plugin:1.18.12.0:delombok (default) on project salespoint-framework: Unable to delombok: InvocationTargetException: 'void com.sun.tools.javac.main.Arguments.init(java.lang.String, java.lang.String[])' -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.projectlombok:lombok-maven-plugin:1.18.12.0:delombok (default) on project salespoint-framework: Unable to delombok
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to delombok
    at lombok.maven.AbstractDelombokMojo.execute (AbstractDelombokMojo.java:196)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at lombok.launch.Delombok.delombok (Delombok.java:50)
    at lombok.maven.AbstractDelombokMojo.execute (AbstractDelombokMojo.java:175)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NoSuchMethodError: 'void com.sun.tools.javac.main.Arguments.init(java.lang.String, java.lang.String[])'
    at lombok.delombok.Delombok.delombok (Delombok.java:705)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at lombok.launch.Delombok.delombok (Delombok.java:50)
    at lombok.maven.AbstractDelombokMojo.execute (AbstractDelombokMojo.java:175)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

created time in 3 days

issue closedodrotbohm/moduliths

Migrate a reasonably-sized application to a Modulith

In order to get some real-world experience, we should migrate a Spring Boot app with more than a couple hundred lines of code to a Modulith. For this to work, the library must have matured a bit and at least a snapshot should be released to Maven Central or JCenter.

closed time in 3 days

thombergs

issue commentodrotbohm/moduliths

Migrate a reasonably-sized application to a Modulith

I think we can cross this off as we're 10 GA now and there are a couple of projects already using the library, most notably Quarano on the open-source side.

thombergs

comment created time in 3 days

issue commentodrotbohm/moduliths

Make sure Spring test context caching works properly

That seems to be working properly, even in 1.0.

odrotbohm

comment created time in 3 days

issue commentodrotbohm/moduliths

Q: How to implement a modulith where each module saves data into its own schema in a single shared database?

I wonder if that technical separation on the persistence context level has to be put in place as it clearly complicates the picture. The JPA @Table annotation allows to declare the schema an entity is supposed to live in. Using that and strictly governing that aggregates in one module must only refer to other aggregates by identifier, you should be able to get pretty far.

tomastulka

comment created time in 3 days

issue commentodrotbohm/moduliths

Feature: Report cross module transactions

That's an interesting suggestion. I wonder if you could elaborate on what this could look like. Currently we only "report" violations that are usually verified for in a test and which would break the latter. I don't think we'd want to break a build because of that because it might actually be generally acceptable if convenience trumps decoupling.

In general, we'd need to find components that invoke other components from other modules within a method marked as transactional. Tricky bit could be that that invocation of the other module component might be hidden behind an indirection: @-tx-method -> private method -> method invocation on other module component. Also, the invocation might be hidden behind an event publication that exists a listener for in the other module.

hurzelpurzel

comment created time in 3 days

issue closedodrotbohm/moduliths

Improve handling of event listeners

Currently Spring application event listeners are not properly handled by the modules abstractions. Take the following structure for example:

com.acme.orders
+ ….Order (publishes OrderCreated events)
com.acme.accounting
o ….OrderEventListener

Further assume that OrderEventListener looks like this:

@Component
class OrderEventListener {

  @EventListener
  void on(OrderCreated event) { … }
}

As we currently only inspect type dependencies and interpret them as indicator for a downstream module dependency this scenario results in accounting to have a module dependency to orders. This is clearly wrong. I suggest to alter the model setup to change to the following:

  • When collecting the module dependencies, explicitly check for modules annotated with @EventListener and make the nature of the dependency explicit (listens-to).
  • Do not consider this type dependency a module dependency or at least don't include the module referred to into the ones that need to be included when bootstrapping upstream dependencies.
  • The additional meta-information can be included in the diagrams created in #16 to distinguish between the different module relationships.

closed time in 3 days

odrotbohm

issue commentodrotbohm/moduliths

Improve handling of event listeners

That's been fixed a while ago. Event listeners are handled correctly and appear correctly in generated documentation etc.

odrotbohm

comment created time in 3 days

issue commentrzwitserloot/lombok

Allow usage of annotations as meta-annotations

I might stretch the scope of the ticket a bit but would it be terribly hard to extend the functionality to not only react on annotations present but the type implementing another one? A use case I have is the following: in the jDDD library we expose interfaces that express DDD building blocks. There's also an annotation based model but interfaces allow us to express relationship constraints using generics. One of the interfaces is Identifier. Implementations usually look like this:

@EqualsAndHashCode
@RequiredArgsConstructor(staticName = "of")
@NoArgsConstructor(access = AccessLevel.PRIVATE, force = true)
class SomeIdentifier implements Identifier { … }

Having expressed the type to be an identifier via the interface already it would be cool if I could avoid the annotations by registering:

lombok.metaAnnotations = Identifier lombok.EqualsAndHashCode lombok.RequiredArgsConstructor(staticName = "of") lombok.NoArgsConstructor(access = lombok.AccessLevel.PRIVATE, force = true)

i.e. let the trigger of the annotations to be added be an interface instead of an annotation.

lombokissues

comment created time in 3 days

issue openedodrotbohm/jddd

Introduce annotations and types for CQRS / Event Sourcing

I just spoke to @abuijze of Axon Framework and we wondered whether it'd make sense to introduce annotations and types to declare CQRS / Event Sourcing building blocks:

  • @Command – type annotation
  • @CommandHandler – method annotation
  • @(Domain)EventHandler – method annotation
  • @ViewModel / @Projection – type annotation

Axon also provides annotations for querying:

  • @Query
  • @QueryHandler

but they seem to be a little more specific to Axon rather than a CQRS / ES concept that is to be mapped to types and packages in general.

Open questions

  1. Should this be a dedicated artifact (jddd-cqrs) or a part of the already existing jddd-architecture artifact. As using CQRS / ES as implementation is a pretty significant decision, I personally tend to vote for the former as I wouldn't want to impose the types on the classpath of someone who just pulled in the jddd-architecture artifact on the classpath to e.g. demarcate layers.
  2. Axon currently provides @EventHandler but we have chosen @DomainEvent in the jddd-events module. Thus, I'd vote to name the corresponding handler annotation @DomainEventHandler for consistency.
  3. @ViewModel or @Projection? I tend to vote for the former.

created time in 3 days

PR closed odrotbohm/moduliths

Bump nokogiri from 1.10.4 to 1.10.9 in /docs dependencies

⚠️ Dependabot is rebasing this PR ⚠️

If you make any changes to it yourself then they will take precedence over the rebase.


Bumps nokogiri from 1.10.4 to 1.10.9. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sparklemotion/nokogiri/releases">nokogiri's releases</a>.</em></p> <blockquote> <h2>1.10.9 / 2020-03-01</h2> <h3>Fixed</h3> <ul> <li>[MRI] Raise an exception when Nokogiri detects a specific libxml2 edge case involving blank Schema nodes wrapped by Ruby objects that would cause a segfault. Currently no fix is available upstream, so we're preventing a dangerous operation and informing users to code around it if possible. [<a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1985">#1985</a>, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/2001">#2001</a>]</li> <li>[JRuby] Change <code>NodeSet#to_a</code> to return a RubyArray instead of Object, for compilation under JRuby 9.2.9 and later. [<a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1968">#1968</a>, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1969">#1969</a>] (Thanks, <a href="https://github.com/headius">@headius</a>!)</li> </ul> <h2>1.10.8 / 2020-02-10</h2> <h3>Security</h3> <p>[MRI] Pulled in upstream patch from libxml that addresses CVE-2020-7595. Full details are available in <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1992">#1992</a>. Note that this patch is not yet (as of 2020-02-10) in an upstream release of libxml.</p> <h2>1.10.7 / 2019-12-03</h2> <h3>Bug</h3> <ul> <li>[MRI] Ensure the patch applied in v1.10.6 works with GNU <code>patch</code>. <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1954">#1954</a></li> </ul> <h2>1.10.6 / 2019-12-03</h2> <h3>Bug</h3> <ul> <li>[MRI] Fix FreeBSD installation of vendored libxml2. [#1941, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1953">#1953</a>] (Thanks, <a href="https://github.com/nurse">@nurse</a>!)</li> </ul> <h2>1.10.5 / 2019-10-31</h2> <h3>Dependencies</h3> <ul> <li>[MRI] vendored libxml2 is updated from 2.9.9 to 2.9.10</li> <li>[MRI] vendored libxslt is updated from 1.1.33 to 1.1.34</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sparklemotion/nokogiri/blob/v1.10.9/CHANGELOG.md">nokogiri's changelog</a>.</em></p> <blockquote> <h2>1.10.9 / 2020-03-01</h2> <h3>Fixed</h3> <ul> <li>[MRI] Raise an exception when Nokogiri detects a specific libxml2 edge case involving blank Schema nodes wrapped by Ruby objects that would cause a segfault. Currently no fix is available upstream, so we're preventing a dangerous operation and informing users to code around it if possible. [<a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1985">#1985</a>, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/2001">#2001</a>]</li> <li>[JRuby] Change <code>NodeSet#to_a</code> to return a RubyArray instead of Object, for compilation under JRuby 9.2.9 and later. [<a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1968">#1968</a>, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1969">#1969</a>] (Thanks, <a href="https://github.com/headius">@headius</a>!)</li> </ul> <h2>1.10.8 / 2020-02-10</h2> <h3>Security</h3> <p>[MRI] Pulled in upstream patch from libxml that addresses CVE-2020-7595. Full details are available in <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1992">#1992</a>. Note that this patch is not yet (as of 2020-02-10) in an upstream release of libxml.</p> <h2>1.10.7 / 2019-12-03</h2> <h3>Bug</h3> <ul> <li>[MRI] Ensure the patch applied in v1.10.6 works with GNU <code>patch</code>. <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1954">#1954</a></li> </ul> <h2>1.10.6 / 2019-12-03</h2> <h3>Bug</h3> <ul> <li>[MRI] Fix FreeBSD installation of vendored libxml2. [#1941, <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1953">#1953</a>] (Thanks, <a href="https://github.com/nurse">@nurse</a>!)</li> </ul> <h2>1.10.5 / 2019-10-31</h2> <h3>Security</h3> <p>[MRI] Vendored libxslt upgraded to v1.1.34 which addresses three CVEs for libxslt:</p> <ul> <li>CVE-2019-13117</li> <li>CVE-2019-13118</li> <li>CVE-2019-18197</li> <li>CVE-2019-19956</li> </ul> <p>More details are available at <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1943">#1943</a>.</p> <h3>Dependencies</h3> <ul> <li>[MRI] vendored libxml2 is updated from 2.9.9 to 2.9.10</li> <li>[MRI] vendored libxslt is updated from 1.1.33 to 1.1.34</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sparklemotion/nokogiri/commit/e2e191de387f854619bc8a3f9b39ca687fe0bf31"><code>e2e191d</code></a> version bump to v1.10.9</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/50f8fdeae4afb8582ff6347d7aa17822a1e11242"><code>50f8fde</code></a> update CHANGELOG</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/9b5deef76aeb5e3868cafb0b0956cca3708136f3"><code>9b5deef</code></a> Change return type to RubyArray</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/ae054f750283dccb1454d71dc00d0343dc2b1c60"><code>ae054f7</code></a> update CHANGELOG for <a href="https://github-redirect.dependabot.com/sparklemotion/nokogiri/issues/1985">#1985</a></li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/71bcaf0bb1351c09e48f41f10314cb35bb4a4db4"><code>71bcaf0</code></a> Work around a bug in libxml2</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/6ce10d15d7af6ad65813a495eaf168f73eba211c"><code>6ce10d1</code></a> version bump to v1.10.8</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/2320f5bd6319dca9c68d85bbf41629bbf8052a49"><code>2320f5b</code></a> update CHANGELOG for v1.10.8</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/4a77fdb789aefed7ca65c7c7f57ad4dca0d3b209"><code>4a77fdb</code></a> remove patches from the hoe Manifest</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/570b6cbc5fbc5ee7ef969332c587b951ae35bcd0"><code>570b6cb</code></a> update to use rake-compiler ~1.1.0</li> <li><a href="https://github.com/sparklemotion/nokogiri/commit/2cdb68e95aa075ac36a08d4d82d9b410a950a051"><code>2cdb68e</code></a> backport libxml2 patch for CVE-2020-7595</li> <li>Additional commits viewable in <a href="https://github.com/sparklemotion/nokogiri/compare/v1.10.4...v1.10.9">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+1 -1

0 comment

1 changed file

dependabot[bot]

pr closed time in 4 days

more