Skip to content

Remove GWT framework#7659

Merged
labkey-jeckels merged 24 commits into
developfrom
fb_gwtDelete
May 11, 2026
Merged

Remove GWT framework#7659
labkey-jeckels merged 24 commits into
developfrom
fb_gwtDelete

Conversation

@labkey-jeckels
Copy link
Copy Markdown
Contributor

@labkey-jeckels labkey-jeckels commented May 8, 2026

Rationale

We've migrated all of our GWT apps to React. We can now remove GWT itself.

Changes

  • Remove GWT as a dependency
  • Remove GWT UI code
  • Remove GWT services and actions
  • Simplify configuration for Jackson serialization of key data transfer classes (which retain the "GWT" prefix for now)

Tasks 📍

  • Claude Code Review
  • Manual Testing
  • Test Automation

# Conflicts:
#	assay/package-lock.json
#	assay/package.json
#	assay/src/client/PlateTemplateDesigner/PlateTemplateDesigner.scss
#	assay/src/client/PlateTemplateDesigner/PlateTemplateDesigner.test.tsx
#	assay/src/client/PlateTemplateDesigner/PlateTemplateDesigner.tsx
#	assay/src/client/PlateTemplateDesigner/PlateTemplateDesigner.utils.test.ts
#	assay/src/client/PlateTemplateDesigner/components/GroupTypesPanel.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/GroupTypesPanel.tsx
#	assay/src/client/PlateTemplateDesigner/components/MultiCreateDialog.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/MultiCreateDialog.tsx
#	assay/src/client/PlateTemplateDesigner/components/RightPanel.tsx
#	assay/src/client/PlateTemplateDesigner/components/ShiftPanel.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/ShiftPanel.tsx
#	assay/src/client/PlateTemplateDesigner/components/StatusBar.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/StatusBar.tsx
#	assay/src/client/PlateTemplateDesigner/components/TabButton.tsx
#	assay/src/client/PlateTemplateDesigner/components/TemplateGrid.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/TemplateGrid.tsx
#	assay/src/client/PlateTemplateDesigner/components/WarningPanel.tsx
#	assay/src/client/PlateTemplateDesigner/components/WellGroupProperties.test.tsx
#	assay/src/client/PlateTemplateDesigner/components/WellGroupProperties.tsx
#	assay/src/client/PlateTemplateDesigner/models.test.ts
#	assay/src/client/PlateTemplateDesigner/models.ts
#	assay/src/client/entryPoints.js
#	assay/src/org/labkey/assay/PlateController.java
#	assay/src/org/labkey/assay/plate/PlateDataServiceImpl.java
#	assay/test/js/setup.ts
@labkey-jeckels
Copy link
Copy Markdown
Contributor Author

I plan to rename the classes/packages in a followup commit. That'll touch more repos.

@labkey-jeckels labkey-jeckels requested a review from a team May 11, 2026 02:56
Copy link
Copy Markdown
Contributor

@labkey-adam labkey-adam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One case that should be converted to Objects.equals(). If straightforward, clear up the line ending-only changes. Take a look at what seem like pointless local var assignments. No further review needed.

setBackgroundColor(f.getBackgroundColor());
setFilter(f.getFilter());
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line endings change?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving as-is. Diffs and annotate looks fine in IntelliJ.

{
return getPath();
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line endings change?

PipelineJob job1 = this;
List<String> errors = new ArrayList<>();
if (!PropertyUtil.nullSafeEquals(job1._activeTaskId, job2._activeTaskId))
if (!com.google.api.client.util.Objects.equal(job1._activeTaskId, job2._activeTaskId))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we just use the standard java.util.Objects.equals() instead? That's what this ends up calling.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Replaced.

}
return null;
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line endings changed


return apiOverride;
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line endings changed

{
return _label;
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line endings changed

//NOTE: the name of the assay PTID field might not always match ParticipantId. this allows us to also
//support PARTICIPANT_CONCEPT_URI
ColumnInfo ptidCol = selectColumns.stream().filter(c -> PropertyType.PARTICIPANT_CONCEPT_URI.equals(c.getConceptURI())).findFirst().orElse(null);
ColumnInfo ptidCol = selectColumns.stream().filter(c -> org.labkey.api.exp.PropertyType.PARTICIPANT_CONCEPT_URI.equals(c.getConceptURI())).findFirst().orElse(null);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't need fully qualified class here since it's imported above

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shortened

boolean enrolledChanged = cohort.isEnrolled() != newEnrolled;
boolean subjectCountChanged = !PropertyUtil.nullSafeEquals(cohort.getSubjectCount(), newSubjectCount);
boolean desciprtionChanged = !Strings.CS.equals(cohort.getDescription(), newDescription);
Object o1 = cohort.getSubjectCount();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting that this one was pulled out into a var

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rolled back that part of the edit. Not sure how/why it happened.

Integer newSubjectCount = asInteger(row.get("subjectCount"));
String newDescription = (String)row.get("description");

Object o3 = cohort.getSubjectCount();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another interesting choice. Especially since the usage below would short-circuit in some cases and not execute this line. Not that it would use many cycles, but...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rolled back that part of the edit. Not sure how/why it happened.

labkey-jeckels added a commit to LabKey/testAutomation that referenced this pull request May 11, 2026
#### Rationale
We're completely eliminating GWT from our codebase so there's no need to
have any test references to it.

#### Related Pull Requests
- LabKey/platform#7659

#### Changes
- Get rid of some locators
- Expunge some GWT-specific workarounds
- Eliminate some lint
@labkey-jeckels labkey-jeckels merged commit 97f8f2e into develop May 11, 2026
11 of 14 checks passed
@labkey-jeckels labkey-jeckels deleted the fb_gwtDelete branch May 11, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants