Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .cursor/rules/ascii-source.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
description: Tracked source and docs must be ASCII only
alwaysApply: true
---

# ASCII source

Every file you **add or edit** must be **ASCII only** (bytes 0x00-0x7F). Scan touched paths before finishing.

Replace:

| Non-ASCII | ASCII |
| ------------------ | ----------- |
| em/en dash, minus | `-` |
| ellipsis | `...` |
| curly quotes | `'` / `"` |
| arrows | `->` / `<-` |
| non-breaking space | space |

Do not introduce Unicode symbols, emoji, or locale punctuation in code, comments, XML, or docs.

WSDL/XSD under **`src/main/resources/wsdl/`** or **`src/main/java/wsdls/`** may contain non-ASCII from ADHA sources. Do not add more. Prefer ASCII in files you author.
20 changes: 12 additions & 8 deletions .cursor/rules/documentation-standards.mdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
description: Documentation and build scripts implementor-first, Maven Central default, no secrets
description: Documentation and build scripts - implementor-first, Maven Central default, no secrets
alwaysApply: true
---

Expand All @@ -10,13 +10,13 @@ Applies when writing or editing **README**, **CONTRIBUTING**, integrator guides,
## Priority: implementors

- Primary audience: developers **consuming** published Maven artifacts.
- Contributor/maintainer workflow lives in **CONTRIBUTING.md**, **MAINTAINERS.md**, or labelled subsections not mixed into the integrator main flow.
- Do not duplicate agent workflow in README or CONTRIBUTING (**AGENTS.md** `.cursor/rules/`).
- Contributor/maintainer workflow lives in **CONTRIBUTING.md**, **MAINTAINERS.md**, or labelled subsections - not mixed into the integrator main flow.
- Do not duplicate agent workflow in README or CONTRIBUTING (**AGENTS.md** -> `.cursor/rules/`).

## Default narrative: Maven Central

- Write as if **released** coordinates are on Maven Central (no SNAPSHOT, sibling-repo checkout, or `-P` profiles in the main integrator path).
- Use **version numbers** in integrator docs not Git branch names.
- Write as if **released** coordinates are on Maven Central (no SNAPSHOT, sibling-repo checkout, or `-P...` profiles in the main integrator path).
- Use **version numbers** in integrator docs - not Git branch names.
- SNAPSHOT installs and sibling `mvn install` belong under **Local development** / **Local builds** only.

## Structure
Expand All @@ -30,21 +30,25 @@ Applies when writing or editing **README**, **CONTRIBUTING**, integrator guides,
## Paths

- **Relative paths only** (e.g. `src/main/resources/wsdl/`, `pom.xml` beside repo root).
- **Never** hardcode machine paths (`C:\`, `/Users/`, `~/`, worktree folders) in tracked docs.
- Override only when strictly required to remove ambiguity say why.
- **Never** hardcode machine paths (`C:\...`, `/Users/...`, `~/`, worktree folders) in tracked docs.
- Override only when strictly required to remove ambiguity - say why.

## Current state only

- No migration, legacy, or branch-history commentary in user-facing docs.
- Describe **what is true now**; omit "removed", "used to", and repo archaeology in integrator material.
- **CHANGELOG** entries: current release capabilities; avoid branch names and migration essays in new notes.

## Secrets MUST NOT
## Secrets - MUST NOT

- **Never** put real or plausible **passwords**, **tokens**, **API keys**, **private keys**, or **keystore passphrases** in tracked files (code, comments, examples, docs).
- Use placeholders (`<pkcs12-password>`), empty values in `.example` files, or "from your registration pack".
- See **SECURITY.md**.

## ASCII source

All tracked files you add or change must be **ASCII only**. See **`ascii-source.mdc`**.

## Override

These rules may be overridden **only when necessary** to clear ambiguity (e.g. maintainer branch mapping in **MAINTAINERS.md** or `.cursor/rules/`, clearly labelled maintainer-only).
60 changes: 60 additions & 0 deletions .cursor/rules/mhr-wsdl-project.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
description: MHR WSDL artifact repo layout, release lines, and build
alwaysApply: true
---

# mhr-wsdl-java

Maven artifact **`au.gov.nehta:mhr-wsdl`** - MHR B2B WSDL resources and pre-generated JAX-WS/JAXB types. **Not** facade clients (**mhr-b2b-client-java**). **Not** Healthcare Identifiers (**hi-wsdl-java** / **hi-b2b-client-java**).

## Documentation

Follow **`documentation-standards.mdc`**. Integrator docs use **version numbers** - not Git branch names.

The **first number** of **`au.gov.nehta:mhr-wsdl`** is the **Java SE** target. Downstream artifacts that pin this coordinate to **`${project.version}`** (including **`mhr-b2b-client`**) use the same version.

| Version | Java | XML stack | `Service` stubs |
| ------------ | ---- | ---------------------------------------------------- | ---------------- |
| **8.0.0** | 8 | **javax** / EE4J **`jaxws-rt` 2.3.x** in consumers | **12** (MHR B2B) |
| **11.0.0.1** | 11 | **Jakarta** / EE4J **`jaxws-rt` 4.0.x** in consumers | **12** (MHR B2B) |
| **17.0.0.1** | 17 | **Jakarta** / EE4J **`jaxws-rt` 4.0.x** in consumers | **12** (MHR B2B) |
| **21.0.0.1** | 21 | **Jakarta** / EE4J **`jaxws-rt` 4.0.x** in consumers | **12** (MHR B2B) |
| **24.0.0.1** | 24 | **Jakarta** / EE4J **`jaxws-rt` 4.0.x** in consumers | **12** (MHR B2B) |

**Git branch mapping (maintainers only - never in integrator docs):**

| Version | Official Git branch |
| ------------ | ------------------- |
| **8.0.0** | `java-8` |
| **11.0.0.1** | `java-11` |
| **17.0.0.1** | `java-17` |
| **21.0.0.1** | `java-21` |
| **24.0.0.1** | `java-24` |

## This 8.0.0 line

**`8.0.0-SNAPSHOT`**: Java **8**, **`javax`** committed types, **12** MHR B2B **`@WebServiceClient`** services. WSDL under **`src/main/resources/wsdl/`** and reference tree **`src/main/java/wsdls/`**. **`mhr_override/`** xmldsig package. Sources frozen - no **`wsimport`** in this POM.

## Build

- JDK **8+**, from repo root: `mvn -B "-Dgpg.skip=true" clean verify` (quote `-D` on PowerShell).
- Default build uses **committed** `src/main/java` - no wsimport.
- After wsimport regeneration: **`python scripts/fix-javadoc.py`** then **`mvn verify`** (**`doclint=all`**, **`failOnWarnings=true`**).
- Consumers add Eclipse EE4J **`com.sun.xml.ws:jaxws-rt` 2.3.7** at runtime - **not** Metro **`webservices-*`**.

## vs mhr-b2b-client-java

| | **mhr-wsdl-java** | **mhr-b2b-client-java** |
| -------- | ----------------------------------- | ---------------------------- |
| Delivers | WSDL on classpath + generated types | Facade clients, TLS, signing |
| Artifact | `mhr-wsdl` | `mhr-b2b-client` |

Publish **`mhr-wsdl`** first. Consumers that pin **`${project.version}`** (including **`mhr-b2b-client`**) use the same coordinate on each line (**8.0.0**, **11.0.0.1**, and so on).

## Doc split

- **`documentation-standards.mdc`**: implementor-first, Maven Central default, local/OS sections, relative paths, no secrets
- **`ascii-source.mdc`**: ASCII only in authored files
- **`README.md`**: integrators (Maven Central default)
- **`CONTRIBUTING.md`**: build from source, local SNAPSHOT, regeneration notes
- **`MAINTAINERS.md`**: POM / Javadoc / release internals
22 changes: 8 additions & 14 deletions .cursor/rules/multi-branch-worktrees.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ description: Use git worktree when editing multiple branches of the same reposit
alwaysApply: true
---

# Multi-branch work use git worktree
# Multi-branch work - use git worktree

When a task requires **changes on two or more branches of the same Git repository**, use **`git worktree`** do **not** hop branches with `git checkout` while carrying uncommitted edits or stashes.
When a task requires **changes on two or more branches of the same Git repository**, use **`git worktree`** - do **not** hop branches with `git checkout` while carrying uncommitted edits or stashes.

## When this applies

- Same-repo edits across release lines (e.g. `java-8-javax`, `java-11-jakarta`, `master`)
- Same-repo edits across release lines (e.g. `java-8`, `java-11`)
- Applying the same fix to several branches before commit
- Comparing or building two branches side by side

Expand All @@ -22,7 +22,7 @@ When a task requires **changes on two or more branches of the same Git repositor
## Workflow

1. **Primary clone** stays on the main working branch; do not stash-and-hop to edit other branches.
2. **Add a worktree per extra branch** (paths are local never commit them to tracked docs):
2. **Add a worktree per extra branch** (paths are local - never commit them to tracked docs):

```bash
git worktree add ../<repo>-<branch-slug> <branch>
Expand All @@ -34,18 +34,12 @@ When a task requires **changes on two or more branches of the same Git repositor
## Do not

- `git checkout` other branches with uncommitted changes (Git will block or force stash churn).
- Stash the same files across multiple branch switches causes merge conflicts on `stash pop`.
- Stash the same files across multiple branch switches - causes merge conflicts on `stash pop`.
- Put worktree directory paths in README, CONTRIBUTING, or other tracked docs (see repo **`worktrees.mdc`** / **`documentation-standards.mdc`**).

## Example (maintainer-local paths only)

```bash
# In hi-wsdl-java primary clone (on java-11-jakarta-full-wsdl)
git worktree add ../hi-wsdl-java-java-8-javax java-8-javax
git worktree add ../hi-wsdl-java-java-11-jakarta java-11-jakarta

# Apply edits in each ../hi-wsdl-java-* folder; commit per branch
# When finished:
git worktree remove ../hi-wsdl-java-java-8-javax
git worktree remove ../hi-wsdl-java-java-11-jakarta
```
git worktree add <path> java-8
git worktree add <path> java-11
```
51 changes: 0 additions & 51 deletions .cursor/rules/pcehr-compiled-wsdl-project.mdc

This file was deleted.

8 changes: 4 additions & 4 deletions .cursor/rules/worktrees.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@ Follow **`documentation-standards.mdc`** (implementor-first, Maven Central defau

| Doc | Audience | Use |
| --- | -------- | --- |
| **README**, integrator guides | Implementors | **Maven version** (`1.6.3`), Central coordinates, runtime config |
| **README**, integrator guides | Implementors | **Maven version** (`8.0.0`), Central coordinates, JAR contents (WSDL + types) |
| **CONTRIBUTING** | Contributors | Build from source, **Local builds**, OS-specific steps |
| **MAINTAINERS**, **`.cursor/rules/`** | Maintainers | POM internals; **branch mapping** only when labelled maintainer-only |

Integrator docs: **version numbers**, not Git branch names. Local/SNAPSHOT flows: **CONTRIBUTING** only.

## Do not put in tracked docs

- Hardcoded worktree or machine paths (`wt/`, `C:\`, `/Users/`, `~/`, `this worktree`, `primary clone`)
- Hardcoded worktree or machine paths (`wt/`, `C:\...`, `/Users/...`, `~/`, `this worktree`, `primary clone`)
- References to **`wt/README.md`** or other local-only layout files
- Open folder X to switch branches” — IDE/local workflow, not repo documentation
- "Open folder X to switch branches" - IDE/local workflow, not repo documentation

## Allowed (maintainer-only, when labelled)

- **Git branch mapping** table (version branch) in **MAINTAINERS.md** or agent rules
- **Git branch mapping** table (version -> branch) in **MAINTAINERS.md** or agent rules
- Generic worktree example only: `git worktree add <path> <branch>` (placeholder **`<path>`**, never a committed example)
- Optional **untracked** local notes outside the repo

Expand Down
26 changes: 26 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,27 @@
# Text files: LF in the index and on checkout (see *.bat / *.cmd below for CRLF).
# Windows: git config core.autocrlf false once per clone so Git does not fight these rules.
# After changing this file: git add --renormalize .
# Optional (less diff noise if old blobs had stray CR): git config diff.ignoreCrAtEol true
* text=auto eol=lf

# Never treat these as text (no CRLF/LF conversion)
*.class binary
*.dll binary
*.ear binary
*.jar binary
*.jks binary
*.keystore binary
*.pdf binary
*.png binary
*.gif binary
*.ico binary
*.jpeg binary
*.jpg binary
*.war binary
*.woff binary
*.woff2 binary
*.zip binary

# cmd.exe reliably parses these with CRLF; keep them out of LF normalization churn
*.bat text eol=crlf
*.cmd text eol=crlf
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@ name: CI

on:
push:
branches: [ master, main, java-8-javax-full-wsdl ]
branches: [ java-8 ]
pull_request:
branches: [ master, main, java-8-javax-full-wsdl ]
branches: [ java-8 ]

permissions:
contents: read

jobs:
build:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "8"
cache: maven
- name: Build and test
- name: Maven verify
run: mvn -B "-Dgpg.skip=true" clean verify
5 changes: 3 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ Rules: `.cursor/rules/*.mdc`. Do not duplicate in README or CONTRIBUTING.

| Concern | Rule |
|---------|------|
| ASCII only in authored files | `ascii-source.mdc` |
| Documentation and build scripts (implementor-first, Central, local, OS, paths, no secrets) | `documentation-standards.mdc` |
| PCEHR compiled WSDL scope, build, version lines | `pcehr-compiled-wsdl-project.mdc` |
| MHR WSDL scope, build, version lines | `mhr-wsdl-project.mdc` |
| Worktrees local only; versions in integrator docs | `worktrees.mdc` |
| Multi-branch edits in one repo use worktree, not checkout/stash | `multi-branch-worktrees.mdc` |
| Multi-branch edits in one repo - use worktree, not checkout/stash | `multi-branch-worktrees.mdc` |

Contributors (humans): README, CONTRIBUTING, MAINTAINERS, SECURITY, CHANGELOG.
23 changes: 18 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
# Change Log/Revision History

= 1.6.3-SNAPSHOT =
======
= 8.0.0 =
=======
- Maven **`au.gov.nehta:mhr-wsdl`** **8.0.0** (Java **8** / **`javax`**, **12** `Service` stubs). The first number of the Maven version is the targeted Java SE version. Consumers that pin **`mhr-wsdl`** to **`${project.version}`** (including **`mhr-b2b-client`**) use the same coordinate.
- Java packages and types use **`mhr`** names (`ns.mhr`, **`MHRHeader`**, **`RegisterMHRService`**). SOAP namespaces and element names remain the B2B **`pcehr`** wire contract.
- Compile: **`javax.xml.bind:jaxb-api` 2.3.1**, **`javax.xml.ws:jaxws-api` 2.3.1**, **`javax.jws:javax.jws-api` 1.1**. **`maven-enforcer-plugin`** bans Metro **`webservices-*`** and **`jakarta.*`** XML APIs. Consuming apps use **`jaxws-rt` 2.3.7** at runtime.
- POM: Sonatype Central Portal (**`central-publishing-maven-plugin`**; server id **`central`**).
- Offline unit tests: **`JavaxStackTest`**, **`MhrWsdlArtifactTest`**, **`GeneratedWsdlBindingsTest`**, **`WsdlStubContractTest`** under **`src/test/java/au/gov/nehta/mhrwsdl/`**.
- Documentation: README, CONTRIBUTING, MAINTAINERS, SECURITY.

= 1.6.3 =
=========
Historical past release (superseded by **8.0.0** on this line).
- **`1.6.3`** line: Java **8** / **`javax`** committed types and classpath WSDL (**12** `Service` stubs, MHR B2B scope).
- POM: **`provided`** compile **`jaxb-api`**, **`jaxws-api`**, **`javax.jws-api`**; **`maven-enforcer-plugin`** bans Metro **`webservices-*`** and **`jakarta.*`** (consumers use EE4J **`jaxws-rt` 2.3.7**). Build plugins aligned with **hi-wsdl-java** **`1.6.3`**.
- **`maven-javadoc-plugin`:** **`doclint=all`**, **`failOnWarnings=true`** — Javadoc repaired in source via **`scripts/fix-javadoc.py`**.
- **`maven-gpg-plugin`:** **`gpg.skip`** defaults to **`true`** for local builds.
- Offline unit tests: **`JavaxStackTest`**, **`PcehrCompiledWsdlArtifactTest`**, **`GeneratedWsdlBindingsTest`** under **`src/test/java/au/gov/nehta/pcehrwsdl/`**.
- CI: **`.github/workflows/ci.yml`** (Java **8**, **`mvn verify`**).
- Offline unit tests: **`JavaxStackTest`**, **`MhrWsdlArtifactTest`**, **`GeneratedWsdlBindingsTest`** under **`src/test/java/au/gov/nehta/mhrwsdl/`**.
- Javadoc: **`doclint=all`**, **`failOnWarnings=true`**.
- Documentation: README, CONTRIBUTING, MAINTAINERS, SECURITY.

= 1.1.1 =
Expand All @@ -21,3 +30,7 @@
= 1.0.0 =
=========
- Initial version

## Copyright

Copyright 2012 NEHTA. Copyright 2021-2026 ADHA. Apache License 2.0 - see **LICENSE.txt**.
Loading