Skip to content

Issue/71 maintain dsf linter improve log messages and review bpmn types#77

Open
khalilmalla95 wants to merge 17 commits into
developfrom
issue/71-maintain-dsf-linter-improve-log-messages-and-review-bpmn-types
Open

Issue/71 maintain dsf linter improve log messages and review bpmn types#77
khalilmalla95 wants to merge 17 commits into
developfrom
issue/71-maintain-dsf-linter-improve-log-messages-and-review-bpmn-types

Conversation

@khalilmalla95
Copy link
Copy Markdown
Collaborator

closes #71

dependabot Bot and others added 5 commits May 5, 2026 14:14
Bumps org.thymeleaf:thymeleaf from 3.1.2.RELEASE to 3.1.5.RELEASE.

---
updated-dependencies:
- dependency-name: org.thymeleaf:thymeleaf
  dependency-version: 3.1.5.RELEASE
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
DsfMultiPluginLinterTest failed with NoClassDefFoundError for
jakarta.xml.bind.annotation.XmlElement during full lint runs.

On Java 11+, JAXB is not part of the JDK. Jackson/Thymeleaf can pull in
jackson-module-jakarta-xmlbind, which requires jakarta.xml.bind.*.
Camunda only brings javax-era jakarta.xml.bind-api 2.3.3 transitively.

Declare jakarta.xml.bind-api 4.0.2 explicitly so integration tests and
linting complete without ClassNotFound/NoClassDefFoundError.
- Update linter call sites to use renamed constants
DSF processes are started via incoming messages. Enforce at least one
message start event as a direct child of the process element; start
events inside subprocesses do not count.

- Add BpmnModelUtils.isMessageStartEvent for shared detection
- Route start event linting through message vs generic paths
- Report BPMN_MESSAGE_START_EVENT_NOT_FOUND on the process when missing
- Emit SUCCESS when a valid process-level message start exists
- Add BpmnProcessLinterMessageStartEventTest (missing, present, subprocess-only)
- Assert message start with empty message name in model linter tests
- Adjust integration/golden tests for new lint types or expectations
@khalilmalla95 khalilmalla95 added this to the 0.1.3 milestone Jun 2, 2026
@khalilmalla95 khalilmalla95 requested a review from jaboehri June 2, 2026 13:18
@khalilmalla95 khalilmalla95 self-assigned this Jun 2, 2026
@khalilmalla95 khalilmalla95 added bug Something isn't working java Pull requests that update java code backend task labels Jun 2, 2026
Introduce separate LintingType constants for message start/end events,
message intermediate throw events, send tasks, and receive tasks.
Remove the generic BPMN_EVENT_NAME_EMPTY enum value.
…n present

Treat a BPMN message reference on message intermediate throw events as
informational rather than a warning.

- Rename LintingType to BPMN_MESSAGE_INTERMEDIATE_THROW_EVENT_HAS_MESSAGE_REFERENCE
- Downgrade severity from WARN to INFO when a message reference exists
- Remove the lint item when no message reference is defined
- Clarify the lint message text to mention "message reference"
…1 and v2

Fix BpmnMessageEventImplementationLinter so validation matches DSF BPE runtime
requirements for both API versions.

V1:
- Require JavaDelegate (error) for message end and intermediate throw events
- Error when the class does not extend AbstractTaskMessageSend
- Use element-specific LintingTypes for the abstract-class erroring

V2:
- Validate MessageEndEvent vs MessageIntermediateThrowEvent separately
- Use BPMN_END_EVENT_NO_INTERFACE_CLASS_IMPLEMENTING for end events
- Use BPMN_INTERMEDIATE_THROW_EVENT_NO_INTERFACE_CLASS_IMPLEMENTING for
  intermediate throw events (previously both incorrectly used the end-event type)

Add LintingType entries and BpmnMessageEventImplementationLinterTest to cover
class-not-found, wrong-interface, and regression cases per element type.
…PLE_OUTGOING_FLOWS_BUT_NAME_IS_EMPTY to WARN
Field injections provided as camunda:expression were always
reported as BPMN_FIELD_INJECTION_NOT_STRING_LITERAL. For DSF API v2,
expressions are valid; only API v1 still requires string literals.

When an expression is used under API v2, record a success item and
skip static per-field and FHIR cross-checks for that field, since
values cannot be resolved at lint time.
Rename BPMN_PRACTITIONER_ROLE_HAS_NO_VALUE_OR_NULL and
BPMN_PRACTITIONERS_HAS_NO_VALUE_OR_NULL to
BPMN_USER_TASK_LISTENER_PRACTITIONER_ROLE_INPUT_EMPTY and
BPMN_USER_TASK_LISTENER_PRACTITIONERS_INPUT_EMPTY, and move them
into the BPMN user task listener section.

Update default messages to state that the Camunda input parameter is
defined on the task listener but has no value. Adjust references in
BpmnListenerLinter and tests.
…in-dsf-linter-improve-log-messages-and-review-bpmn-types

# Conflicts:
#	linter-core/src/main/java/dev/dsf/linter/bpmn/BpmnProcessLinter.java
#	linter-core/src/main/java/dev/dsf/linter/output/LintingType.java
#	linter-core/src/main/java/dev/dsf/linter/util/bpmn/linters/BpmnEndEventLinter.java
#	linter-core/src/main/java/dev/dsf/linter/util/bpmn/linters/BpmnMessageEventImplementationLinter.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend bug Something isn't working java Pull requests that update java code task

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants