This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/struts-intellij-plugin.git
The following commit(s) were added to refs/heads/main by this push:
new c556cc4 Show Diagram: add arrowheads on action → result edges (#125)
(#129)
c556cc4 is described below
commit c556cc4f10f50580985d76b2d612bcfa725fdc75
Author: Lukasz Lenart <[email protected]>
AuthorDate: Sun Jul 26 05:32:00 2026 +0200
Show Diagram: add arrowheads on action → result edges (#125) (#129)
* docs: design Show Diagram result edge arrowheads (#125)
Capture the approved approach: Builder-based solid + ANGLE
relationships for labeled edges; keep DEPENDENCY for package→action.
Co-authored-by: Cursor <[email protected]>
* docs: plan Show Diagram result edge arrowheads (#125)
Co-authored-by: Cursor <[email protected]>
* test(diagram): require ANGLE arrowheads on labeled Show Diagram edges
(#125)
Co-authored-by: Cursor <[email protected]>
* fix(diagram): add ANGLE arrowheads on labeled Show Diagram edges (#125)
Co-authored-by: Cursor <[email protected]>
* test(diagram): use getTargetArrow and tidy #125 docs
Co-authored-by: Cursor <[email protected]>
---------
Co-authored-by: Cursor <[email protected]>
---
CHANGELOG.md | 1 +
...26-07-26-show-diagram-result-edge-arrowheads.md | 219 +++++++++++++++++++++
...6-show-diagram-result-edge-arrowheads-design.md | 142 +++++++++++++
.../diagram/provider/StrutsDiagramApiEdge.java | 7 +-
.../diagram/StrutsDiagramDataModelMappingTest.java | 11 +-
5 files changed, 376 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8e0fb18..38eb72f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,7 @@
- Add IntelliJ **Show Diagram** support for Struts 2 configs via
`com.intellij.diagram`, alongside the existing Diagram editor tab for
comparison ([#117](https://github.com/apache/struts-intellij-plugin/issues/117))
- Show Diagram Struts config nodes use compact icon+label chrome instead of
empty UML class boxes
([#120](https://github.com/apache/struts-intellij-plugin/issues/120))
- Show Diagram uses a left-to-right hierarchic layout by default for Struts
config graphs
([#122](https://github.com/apache/struts-intellij-plugin/issues/122))
+- Show Diagram action → result edges use directed arrowheads while keeping
package → action as dashed dependencies
([#125](https://github.com/apache/struts-intellij-plugin/issues/125))
- Dependencies - hard-depend on `com.intellij.diagram` (Ultimate Diagrams)
## [261.19027.1] - 2026-07-13
diff --git
a/docs/superpowers/plans/2026-07-26-show-diagram-result-edge-arrowheads.md
b/docs/superpowers/plans/2026-07-26-show-diagram-result-edge-arrowheads.md
new file mode 100644
index 0000000..a4d1bbe
--- /dev/null
+++ b/docs/superpowers/plans/2026-07-26-show-diagram-result-edge-arrowheads.md
@@ -0,0 +1,219 @@
+# Show Diagram Result Edge Arrowheads Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use
superpowers:subagent-driven-development (recommended) or
superpowers:executing-plans to implement this plan task-by-task. Steps use
checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Make Show Diagram action → result (and other labeled) edges render
with a clear `ANGLE` target arrow while keeping package → action as dashed
`DEPENDENCY`.
+
+**Architecture:** Presentation-only fix in
`StrutsDiagramApiEdge.relationshipFor`. Empty-label edges stay
`DiagramRelationships.DEPENDENCY`. Labeled edges switch from the short no-arrow
`DiagramRelationshipInfoAdapter` constructor to
`DiagramRelationshipInfoAdapter.Builder` with solid line, `ANGLE` target arrow,
and upper-center label. Extend existing mapping-test relationship verification;
leave model, layout, Dom refresh, and Swing tab untouched.
+
+**Tech Stack:** IntelliJ IDEA Ultimate 2026.2 (262), `com.intellij.diagram`
(`DiagramRelationshipInfoAdapter.Builder`, `DiagramRelationships`,
`DiagramLineType`), JUnit 4 light tests (`BasicLightHighlightingTestCase`).
+
+**Spec:**
`docs/superpowers/specs/2026-07-26-show-diagram-result-edge-arrowheads-design.md`
+
+## Global Constraints
+
+- Target platform remains IntelliJ IDEA **2026.2** / build **262** only
(`pluginSinceBuild=262`, `pluginUntilBuild=262.*`).
+- Hard dependency on plugin id **`com.intellij.diagram`** already present — do
not change dependency shape.
+- Touch **Show Diagram edge relationship presentation only** — do **not**
modify or remove the Swing Diagram tab (`diagram.fileEditor` / `diagram.ui`).
+- Do **not** change `StrutsConfigDiagramModel` semantics, layouter extras,
compact node chrome, Dom refresh, tooltips, or navigation.
+- Keep visual distinction: empty label → `DEPENDENCY` (dashed + `ANGLE`);
non-empty label → solid + `ANGLE` + upper-center label.
+- Arrow shape for labeled edges is **`DiagramRelationshipInfo.ANGLE`** (same
chevron as `DEPENDENCY`).
+- Do **not** implement per-kind edge presets, unify all edge styles, #96–#100,
or Swing tab removal.
+- Tests gate: `./gradlew test -x rat --tests "com.intellij.struts2.diagram.*"`.
+- If Builder / arrow accessor signatures drift, confirm against local IU SDK
jar `plugins/uml/lib/uml-support.jar`.
+
+---
+
+## File Structure
+
+| File | Action | Responsibility |
+|---|---|---|
+|
`src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java`
| Modify | Assert labeled edges have solid line + `ANGLE` end/target arrow |
+|
`src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java`
| Modify | Builder-based labeled relationship with `ANGLE` target arrow |
+| `CHANGELOG.md` | Modify | Unreleased note for Show Diagram arrowheads (#125)
|
+
+No new production classes. No `plugin.xml` / Gradle dependency changes. No
fixture XML changes (`struts-diagram.xml` already has package → action and a
result edge).
+
+---
+
+### Task 1: Failing test for labeled edge arrowheads
+
+**Files:**
+- Modify:
`src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java`
+- Test:
`src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java`
+
+**Interfaces:**
+- Consumes:
+ - `DiagramEdge.getRelationship()`
+ - `DiagramRelationshipInfo.getLineType()`
+ - `DiagramRelationshipInfo.getEndArrow()` (Adapter stores Builder
`setTargetArrow` here)
+ - `DiagramRelationshipInfo.ANGLE`
+ - `DiagramLineType.SOLID`
+ - Existing helpers `apiEdgeLabel`, `centerLabelText`,
`verifyRelationshipMapping`
+- Produces: failing assertion that labeled relationships use solid line and
`ANGLE` end arrow (currently null arrows from the short adapter ctor)
+
+- [ ] **Step 1: Add import for `DiagramLineType`**
+
+In `StrutsDiagramDataModelMappingTest.java`, add:
+
+```java
+import com.intellij.diagram.presentation.DiagramLineType;
+```
+
+Keep existing `DiagramRelationshipInfo` / `DiagramRelationships` imports.
+
+- [ ] **Step 2: Strengthen `verifyRelationshipMapping`**
+
+Replace the existing `verifyRelationshipMapping` method with:
+
+```java
+ private static void verifyRelationshipMapping(@NotNull
DiagramEdge<StrutsDiagramItem> edge) {
+ String label = apiEdgeLabel(edge);
+ DiagramRelationshipInfo relationship = edge.getRelationship();
+ if (label.isEmpty()) {
+ assertSame("Unlabeled edges must use DEPENDENCY",
DiagramRelationships.DEPENDENCY, relationship);
+ }
+ else {
+ assertNotSame("Labeled edges must not use DEPENDENCY",
DiagramRelationships.DEPENDENCY, relationship);
+ assertEquals(label,
centerLabelText(relationship.getUpperCenterLabel()));
+ assertEquals("Labeled edges must be solid", DiagramLineType.SOLID,
relationship.getLineType());
+ assertSame("Labeled edges must have ANGLE target arrow",
+ DiagramRelationshipInfo.ANGLE, relationship.getEndArrow());
+ }
+ }
+```
+
+`testRefreshMapsSnapshotNodesAndEdges` already calls
`verifyRelationshipMapping` for every API edge on `struts-diagram.xml` (package
→ action unlabeled + action → result labeled as default result name). No new
test method required unless that fixture somehow lacks a labeled edge — in that
case fail fast with an explicit count assert; it should not.
+
+- [ ] **Step 3: Run test to verify it fails**
+
+Run:
+
+```bash
+./gradlew test -x rat --tests
"com.intellij.struts2.diagram.StrutsDiagramDataModelMappingTest.testRefreshMapsSnapshotNodesAndEdges"
+```
+
+Expected: FAIL on the new `assertSame(... ANGLE ...)` (or solid/line assert)
because labeled edges currently use the short adapter constructor with null
arrows.
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add
src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java
+git commit -m "$(cat <<'EOF'
+test(diagram): require ANGLE arrowheads on labeled Show Diagram edges (#125)
+
+EOF
+)"
+```
+
+---
+
+### Task 2: Builder-based labeled relationships + changelog
+
+**Files:**
+- Modify:
`src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java`
+- Modify: `CHANGELOG.md`
+- Test:
`src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java`
+
+**Interfaces:**
+- Consumes:
+ - `StrutsDiagramEdge.getLabel()`
+ - `DiagramRelationships.DEPENDENCY`
+ - `DiagramRelationshipInfoAdapter.Builder`
+ - `DiagramRelationshipInfo.ANGLE`
+ - `DiagramLineType.SOLID`
+- Produces: labeled edges with solid line, `ANGLE` target arrow, upper-center
label; unlabeled edges unchanged `DEPENDENCY`
+
+- [ ] **Step 1: Replace labeled-edge construction in `relationshipFor`**
+
+In `StrutsDiagramApiEdge.java`, replace `relationshipFor` with:
+
+```java
+ private static @NotNull DiagramRelationshipInfo relationshipFor(@NotNull
StrutsDiagramEdge edge) {
+ String label = edge.getLabel();
+ if (label.isEmpty()) {
+ return DiagramRelationships.DEPENDENCY;
+ }
+ return new DiagramRelationshipInfoAdapter.Builder()
+ .setName(label)
+ .setLineType(DiagramLineType.SOLID)
+ .setTargetArrow(DiagramRelationshipInfo.ANGLE)
+ .setUpperCenterLabel(label)
+ .create();
+ }
+```
+
+Keep existing imports; `DiagramRelationshipInfo` is already imported (needed
for `ANGLE`). No other methods in this class change.
+
+- [ ] **Step 2: Run mapping test to verify it passes**
+
+Run:
+
+```bash
+./gradlew test -x rat --tests
"com.intellij.struts2.diagram.StrutsDiagramDataModelMappingTest.testRefreshMapsSnapshotNodesAndEdges"
+```
+
+Expected: PASS.
+
+- [ ] **Step 3: Run full diagram test suite**
+
+Run:
+
+```bash
+./gradlew test -x rat --tests "com.intellij.struts2.diagram.*"
+```
+
+Expected: all diagram tests PASS (same count as before this change; currently
44 if unchanged since #124 — accept whatever the suite reports as long as zero
failures).
+
+- [ ] **Step 4: Add changelog entry**
+
+Under `## [Unreleased]` → `### Changed` in `CHANGELOG.md`, add (near the other
Show Diagram bullets):
+
+```markdown
+- Show Diagram action → result edges use directed arrowheads while keeping
package → action as dashed dependencies
([#125](https://github.com/apache/struts-intellij-plugin/issues/125))
+```
+
+- [ ] **Step 5: Manual smoke (recommended before PR)**
+
+Run:
+
+```bash
+./gradlew runIde
+```
+
+Then: open a small Struts config → Show Diagram → confirm action → result
edges show an arrow toward the result, labels like `success` remain readable,
package → action stays dashed.
+
+- [ ] **Step 6: Commit**
+
+```bash
+git add
src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java
CHANGELOG.md
+git commit -m "$(cat <<'EOF'
+fix(diagram): add ANGLE arrowheads on labeled Show Diagram edges (#125)
+
+EOF
+)"
+```
+
+---
+
+## Spec coverage checklist
+
+| Spec requirement | Task |
+|---|---|
+| Action → result clear directed arrow | Task 2 |
+| Labels remain readable (upper-center) | Task 2 (Builder
`setUpperCenterLabel`) + Task 1 asserts |
+| Package → action stays `DEPENDENCY` / distinct | Task 1 + Task 2 empty-label
branch |
+| Labeled chain/redirect same path | Task 2 (all non-empty labels) |
+| Automated relationship coverage | Task 1 |
+| Manual `runIde` check | Task 2 Step 5 |
+| Changelog | Task 2 Step 4 |
+| No model/layout/Swing/Dom changes | Global constraints + File Structure |
+
+## Out of scope (do not implement)
+
+- Per-kind RESULT vs CHAIN relationship presets
+- Unifying dashed package edges with solid result edges
+- Layout / compact nodes / Dom refresh changes
+- Swing tab removal or restyling
+- Robot / pixel assertions
+- #96–#100
diff --git
a/docs/superpowers/specs/2026-07-26-show-diagram-result-edge-arrowheads-design.md
b/docs/superpowers/specs/2026-07-26-show-diagram-result-edge-arrowheads-design.md
new file mode 100644
index 0000000..7a3fcb7
--- /dev/null
+++
b/docs/superpowers/specs/2026-07-26-show-diagram-result-edge-arrowheads-design.md
@@ -0,0 +1,142 @@
+# Show Diagram: Action → Result Edge Arrowheads
+
+**Date:** 2026-07-26
+**Status:** Approved for implementation planning
+**Related:**
[#125](https://github.com/apache/struts-intellij-plugin/issues/125); follow-up
to [#122](https://github.com/apache/struts-intellij-plugin/issues/122) /
[#124](https://github.com/apache/struts-intellij-plugin/pull/124)
+
+## Problem
+
+After the Show Diagram LTR hierarchic layout fix (#122 / #124), package →
action → result reads left-to-right correctly. Package → action edges use
`DiagramRelationships.DEPENDENCY` (dashed line + `ANGLE` arrow). Action →
result edges (and other labeled edges) are built with the short
`DiagramRelationshipInfoAdapter(name, SOLID, label)` constructor, which passes
null start/end arrows. Those edges render as plain solid curves without
arrowheads, so flow direction is harder to read.
+
+## Goals
+
+1. Action → result edges show a clear directed arrow toward the result node.
+2. Edge labels (e.g. `success`, `delete`) remain readable on the upper-center
label.
+3. Package → action stays visually distinct: dashed `DEPENDENCY` with `ANGLE`
arrow, unlabeled.
+4. Labeled chain/redirect action → action edges use the same solid + `ANGLE` +
label styling (same mapping path).
+5. Automated coverage for relationship arrow/label mapping, plus a short
manual `runIde` check.
+6. Changelog documents the Show Diagram arrowhead fix.
+
+## Non-Goals
+
+- Redesigning edge taxonomy (separate RESULT vs CHAIN presets, colors, etc.).
+- Changing layout, compact node chrome, Dom refresh, navigation, or tooltips.
+- Unifying package → action with labeled edges (dashed vs solid distinction
stays).
+- Swing Diagram tab pixel parity or Robot / UI e2e.
+- Model semantic changes in `StrutsConfigDiagramModel`.
+
+## Decisions
+
+| Question | Decision |
+|---|---|
+| Visual distinction | Keep today’s dashed unlabeled package → action vs solid
labeled result/chain edges |
+| Arrow shape for labeled edges | `DiagramRelationshipInfo.ANGLE` (same
chevron as `DEPENDENCY`) |
+| Implementation API | `DiagramRelationshipInfoAdapter.Builder` for labeled
edges |
+| Scope of arrow fix | All non-empty-label edges (action → result and labeled
chain/redirect) |
+| Model / layout changes | None — relationship presentation only |
+| Verification | Unit asserts on mapped relationships + manual `runIde` |
+
+### Alternatives considered
+
+| Approach | Verdict |
+|---|---|
+| Builder: solid + `ANGLE` + upper-center label for labeled edges; keep
`DEPENDENCY` for empty labels | **Chosen** — matches platform `DEPENDENCY`
construction; smallest clear fix |
+| Full positional `DiagramRelationshipInfoAdapter` constructor with arrow
shapes | Rejected — easy to mis-order args; less idiomatic on 262 |
+| Per-kind relationship presets (RESULT vs CHAIN vs PACKAGE) | Rejected for
#125 — out of scope redesign |
+| Unify all edges to one style | Rejected — user chose to keep dashed vs solid
distinction |
+
+## Architecture
+
+Root cause is presentation-only in the Show Diagram edge adapter. Snapshot
edges already carry direction and labels; only the Diagrams
`DiagramRelationshipInfo` lacks a target arrow for labeled edges.
+
+```
+StrutsConfigDiagramModel (unchanged)
+ └── StrutsDiagramEdge (source, target, label)
+ └── StrutsDiagramApiEdge.relationshipFor(edge)
+ ├── label empty → DiagramRelationships.DEPENDENCY
+ │ (DASHED + ANGLE target arrow, no label)
+ └── label present → DiagramRelationshipInfoAdapter.Builder
+ .setName(label)
+ .setLineType(SOLID)
+ .setTargetArrow(ANGLE)
+ .setUpperCenterLabel(label)
+ .create()
+```
+
+**Why the short constructor fails:**
+`new DiagramRelationshipInfoAdapter(label, DiagramLineType.SOLID, label)`
delegates to the full ctor with null start/end arrow shapes, so the graph
paints a plain curve.
+
+**Unchanged:** `StrutsConfigDiagramModel`, `StrutsDiagramDataModel` structure,
nodes, extras/layouter, Dom refresh, compact labels, Swing `fileEditor` / `ui`,
`plugin.xml`.
+
+## Components
+
+| Unit | Role |
+|---|---|
+| `StrutsDiagramApiEdge` | Only production change: Builder-based labeled
relationship with `ANGLE` target arrow; empty label still `DEPENDENCY` |
+| `StrutsDiagramDataModelMappingTest` | Extend relationship verification:
labeled edges keep upper-center label, solid line, target/end arrow = `ANGLE`;
unlabeled still `DEPENDENCY` |
+| Snapshot / provider / extras / Swing | Untouched |
+
+No new production classes. No `plugin.xml` changes for this issue.
+
+## Data flow
+
+1. User opens Show Diagram on a Struts config.
+2. Data model maps snapshot edges to `StrutsDiagramApiEdge`.
+3. Package → action (empty label) → dashed dependency arrow.
+4. Action → result / labeled chain-redirect (non-empty label) → solid curve
with `ANGLE` at the target and the result name as upper-center label.
+5. Dom refresh rebuilds the same mapping; styling remains presentation-only.
+
+## Error handling & edge cases
+
+| Scenario | Behavior |
+|---|---|
+| Result name missing | Model already uses `Result.DEFAULT_NAME` as label →
solid + arrow + that label |
+| Chain/redirect same-file action → action | Labeled edge → solid + `ANGLE` +
label (same path) |
+| External/unresolved result node | Still a labeled action → result edge →
solid + `ANGLE` + label |
+| Package → action | Unchanged `DEPENDENCY` |
+| Empty model / unavailable diagram | Unchanged |
+
+## Testing
+
+### Automated
+
+Extend `StrutsDiagramDataModelMappingTest.verifyRelationshipMapping` (or
sibling asserts) after mapping a fixture that includes package → action and
action → result (preferably also one labeled chain/redirect):
+
+1. Unlabeled edges: `getRelationship() == DiagramRelationships.DEPENDENCY`.
+2. Labeled edges: not `DEPENDENCY`; upper-center label equals snapshot label;
line type solid; `getTargetArrow()` / `getEndArrow()` is
`DiagramRelationshipInfo.ANGLE`.
+
+Gate: `./gradlew test -x rat --tests "com.intellij.struts2.diagram.*"`
+
+Do not assert pixel geometry or rendered Swing strokes.
+
+### Manual (`./gradlew runIde` on IU)
+
+1. Show Diagram on a small Struts config with action → JSP results.
+2. Confirm action → result edges show an arrow toward the result node.
+3. Confirm labels such as `success` / `delete` remain readable.
+4. Confirm package → action remains dashed (visually distinct).
+
+### Out of scope
+
+- Pixel/layout assertions
+- Robot / UI e2e
+- Swing tab removal or restyling
+- Tests for #96–#100
+
+## Future work (out of scope)
+
+- Remove Swing Diagram tab once Show Diagram UX is solid
+- Optional richer edge taxonomy (distinct chain vs dispatcher styles)
+- [#96](https://github.com/apache/struts-intellij-plugin/issues/96) merged
multi-file view
+- [#98](https://github.com/apache/struts-intellij-plugin/issues/98) selection
sync
+- [#99](https://github.com/apache/struts-intellij-plugin/issues/99) Structure
tool window
+- [#100](https://github.com/apache/struts-intellij-plugin/issues/100) zoom/pan
beyond platform chrome
+
+## References
+
+- Issue [#125](https://github.com/apache/struts-intellij-plugin/issues/125)
+- `com.intellij.diagram.DiagramRelationshipInfoAdapter` / `Builder`
+- `com.intellij.diagram.DiagramRelationships.DEPENDENCY`
+- `com.intellij.diagram.DiagramRelationshipInfo.ANGLE`
+- `com.intellij.struts2.diagram.provider.StrutsDiagramApiEdge`
+- Prior LTR layout design:
`docs/superpowers/specs/2026-07-26-show-diagram-ltr-layout-design.md`
diff --git
a/src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java
b/src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java
index 4a905ce..ce184a5 100644
---
a/src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java
+++
b/src/main/java/com/intellij/struts2/diagram/provider/StrutsDiagramApiEdge.java
@@ -38,6 +38,11 @@ public final class StrutsDiagramApiEdge extends
DiagramEdgeBase<StrutsDiagramIte
if (label.isEmpty()) {
return DiagramRelationships.DEPENDENCY;
}
- return new DiagramRelationshipInfoAdapter(label,
DiagramLineType.SOLID, label);
+ return new DiagramRelationshipInfoAdapter.Builder()
+ .setName(label)
+ .setLineType(DiagramLineType.SOLID)
+ .setTargetArrow(DiagramRelationshipInfo.ANGLE)
+ .setUpperCenterLabel(label)
+ .create();
}
}
diff --git
a/src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java
b/src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java
index 3d63f69..b04056f 100644
---
a/src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java
+++
b/src/test/java/com/intellij/struts2/diagram/StrutsDiagramDataModelMappingTest.java
@@ -21,6 +21,7 @@ import com.intellij.diagram.DiagramNode;
import com.intellij.diagram.DiagramProvider;
import com.intellij.diagram.DiagramRelationshipInfo;
import com.intellij.diagram.DiagramRelationships;
+import com.intellij.diagram.presentation.DiagramLineType;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Document;
@@ -199,12 +200,16 @@ public class StrutsDiagramDataModelMappingTest extends
BasicLightHighlightingTes
private static void verifyRelationshipMapping(@NotNull
DiagramEdge<StrutsDiagramItem> edge) {
String label = apiEdgeLabel(edge);
+ DiagramRelationshipInfo relationship = edge.getRelationship();
if (label.isEmpty()) {
- assertSame("Unlabeled edges must use DEPENDENCY",
DiagramRelationships.DEPENDENCY, edge.getRelationship());
+ assertSame("Unlabeled edges must use DEPENDENCY",
DiagramRelationships.DEPENDENCY, relationship);
}
else {
- assertNotSame("Labeled edges must not use DEPENDENCY",
DiagramRelationships.DEPENDENCY, edge.getRelationship());
- assertEquals(label,
centerLabelText(edge.getRelationship().getUpperCenterLabel()));
+ assertNotSame("Labeled edges must not use DEPENDENCY",
DiagramRelationships.DEPENDENCY, relationship);
+ assertEquals(label,
centerLabelText(relationship.getUpperCenterLabel()));
+ assertEquals("Labeled edges must be solid", DiagramLineType.SOLID,
relationship.getLineType());
+ assertSame("Labeled edges must have ANGLE target arrow",
+ DiagramRelationshipInfo.ANGLE,
relationship.getTargetArrow());
}
}
}