Skip to content

Remove stale concrete classes for interfaceOnlyTypes#2414

Merged
cmgrote merged 2 commits intomainfrom
models
Apr 16, 2026
Merged

Remove stale concrete classes for interfaceOnlyTypes#2414
cmgrote merged 2 commits intomainfrom
models

Conversation

@cmgrote
Copy link
Copy Markdown
Collaborator

@cmgrote cmgrote commented Apr 16, 2026

Summary

  • Removes 9 stale concrete asset classes and their 9 test classes — leftovers from the old ModelGeneratorV2 Java generator that were never cleaned up after the Pkl migration
  • The Pkl-based JavaRenderer intentionally lists these types in interfaceOnlyTypes (generates only I*.java interfaces, never concrete classes), but the sync workflow preserves any file it has no generated replacement for, so these orphans survived every sync

Deleted concrete classes: BI, EventStore, NoSQL, ObjectStore, SaaS, AWS, Azure, Google, Incident

Why these are safe to delete

  • No other file in the repo imports or extends any of them
  • All child asset types (e.g. KafkaTopic implements IEventStore, PowerBIDashboard implements IBI) extend Asset directly and implement the I* interfaces — never these concrete classes
  • AssetDeserializer falls back gracefully to IndistinctAsset for any typeName not found in the ClassGraph registry

What triggered this

The new catalogDatasetGuid attribute added to the Catalog supertype in atlanhq/models (GOVFOUN-212, commit 0e95aaa0cc) is correctly propagated to INoSQL, IEventStore, IObjectStore, ISaaS, and IBI interfaces, but the stale concrete classes don't implement the new getter — causing 5 compile errors in PR #2357 and every subsequent sync PR.

Deleting all 9 concrete classes and their tests prevents this class of breakage from recurring as supertypes evolve.

Relationship to PR #2357

Once this merges to main, PR #2357 (sync-models-20260324-175607) will need to be closed and retriggered from the models repo — its diff currently includes +4 modifications to the 5 now-deleted files.

Test plan

  • No other file imports the deleted classes (verified via grep)
  • ./gradlew assemble shadowJar passes
  • ./gradlew test passes

cmgrote and others added 2 commits April 16, 2026 11:25
The Pkl-based JavaRenderer intentionally generates only I*.java
interfaces for abstract category types (BI, EventStore, NoSQL,
ObjectStore, SaaS, AWS, Azure, Google, Incident). These types are
listed in `interfaceOnlyTypes` in JavaRenderer.pkl and never get
concrete class output.

The 9 concrete classes and their 9 test classes here are leftovers
from the old ModelGeneratorV2 Java generator used before the Pkl
migration. The sync workflow preserves files it has no generated
replacement for, so these were never cleaned up.

They are now stale:
- No other file imports or extends any of them
- All child asset types implement the I* interfaces directly and
  extend Asset, never these concrete classes
- The AssetDeserializer falls back to IndistinctAsset gracefully
  for any typeName not found in the ClassGraph registry

The immediate trigger is that the new `catalogDatasetGuid` attribute
added to the Catalog supertype (GOVFOUN-212) is correctly picked up
by INoSQL, IEventStore, IObjectStore, ISaaS, and IBI interfaces, but
the stale concrete classes don't implement the new getter — causing
5 compile errors in every subsequent sync PR.

Deleting all 9 concrete classes and their tests now prevents this
class of breakage from recurring as supertypes evolve.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
@cmgrote cmgrote enabled auto-merge April 16, 2026 10:26
@cmgrote cmgrote merged commit 2f49854 into main Apr 16, 2026
7 checks passed
@cmgrote cmgrote added the bug Something isn't working label Apr 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant