Skip to content

Audit HasIdentifier usage and complete Identifiers.java #433

Closed

Description

@hpehl

Summary

PR #432 introduced Identifiers.java with 20 static constants covering the configuration finder columns and items. This issue tracks a comprehensive audit of all HasIdentifier usage across the halOP codebase to ensure Identifiers.java is complete.

Background

halOP has two element identification mechanisms for the dave test suite:

Mechanism Source Dave sync Selector Use case
OUIA IDs OuiaIds.java pnpm sync:ouia → ids.ts [data-ouia-component-id="..."] Buttons, badges, modals, form items, toolbars
Identifiers Identifiers.java pnpm sync:identifiers → identifiers.ts [data-identifier="..."] FinderColumns, FinderItems, Breadcrumbs, Tabs, TreeViewItems, DataListItems

Identifiers.java currently has constants for configuration finder columns/items, breadcrumb root, and tasks. But many more PFJ components implement HasIdentifier and are used throughout halOP.

Tasks

1. Audit PFJ HasIdentifier components used in halOP

Using Serena's code intelligence, trace all instantiations of PFJ components that implement HasIdentifier:

  • BreadcrumbItem — used in ResourceBreadcrumb, TasksPage
  • DataListItem — used in ResourceList
  • FinderColumn, FinderItem — used in configuration finder
  • FormGroup — used in DefaultFormItem
  • MenuItem — used in filter dropdowns, resource menus
  • NavigationItem — used in sidebar navigation
  • Tab — used in ResourceTabs
  • TreeViewItem — used in ModelBrowserEngine
  • Tr (table row) — used in attribute/operations tables
  • Others: Label, Alert, ToolbarItem, AccordionItem, etc.

2. Classify identifier values

For each usage, determine:

  • Static — identifier known at compile time → add constant to Identifiers.java
  • Dynamic — derived from runtime data → covered by buildIdentifier() or fromTemplate()
  • Not needed — internal component, not a test target

3. Add missing constants to Identifiers.java

Add static constants for all identifiers that dave tests would need to target. Keep the flat sorted format matching OuiaIds.java.

4. Verify AddressTemplate.identifier() delegation

PR #432 changed AddressTemplate.identifier() to delegate to Identifiers.fromTemplate(). Verify this doesn't break any existing behavior (same logic, just centralized).

Acceptance Criteria

  • All PFJ HasIdentifier usages in halOP are audited
  • All static identifiers are centralized in Identifiers.java
  • Dynamic identifier conventions are documented in Identifiers.java Javadoc
  • AddressTemplate.identifier() delegates to Identifiers.fromTemplate()
  • dave's pnpm sync:identifiers successfully picks up all constants

Related

Activity

  1. hpehl commented on Oct 20, 2026

    @hpehl
    MemberAuthor

    Resolved in commit 0bbee72 on the identifiers branch.

    All acceptance criteria completed:

    • All PFJ HasIdentifier usages in halOP audited (17 components traced)
    • All static identifiers centralized in Identifiers.java (20 → 62 constants)
    • Dynamic identifier conventions documented in Identifiers.java Javadoc
    • AddressTemplate.identifier() delegates to Identifiers.fromTemplate() (from PR feat: add and complete Identifiers.java for HasIdentifier contract with dave #432)
    • 18 source files updated to reference Identifiers.* instead of string literals
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions