A comprehensive, type-safe Java wrapper for AG Grid Enterprise built on the JWebMP framework. Provides a modular, fluent API for building data grids with enterprise features like charts, row grouping, server-side row models, and advanced filteringβall with full IDE autocomplete and compile-time type safety.
Key Features:
- π― Type-Safe Fluent API β CRTP pattern for compile-time safe method chaining
- π Enterprise Features β Charts, range selection, row grouping, pivot tables, server-side row models
- π§ Modular Architecture β 8 focused feature modules with @JsonUnwrapped pattern
- β¨ Full Backward Compatibility β 100% JSON compatible; no breaking changes
- π Comprehensive Docs β Architecture patterns, design decisions, and integration guides
- π Forward-Only Policy β Clean, evolving codebase with no legacy debt
β Phase 2 Complete (Dec 2, 2025) β Modular restructuring of AgGridEnterpriseOptions completed using @JsonUnwrapped pattern with 8 focused feature-area modules. See PHASE_2_MODULAR_RESTRUCTURING.md and PHASE_2_COMPLETE.md for details.
- Integrated Charts support (enableCharts)
- Range selection (enableRangeSelection)
- Side Bar (columns and filters panels)
- Row Group and Pivot panels visibility options
- Server-Side Row Model convenience
- Status Bar configuration
- Row Numbers via official grid option (rowNumbers) with helper enableRowNumbers()
- Row Grouping options: columnDef.rowGroup / rowGroupIndex / keyCreator / valueFormatter / rowGroupingHierarchy; grid options groupAllowUnbalanced, groupHideParentOfSingleChild (or "leafGroupsOnly"), groupHideOpenParents, groupHierarchyConfig
- Proper Angular TypeScript dependencies and module registration for ag-grid-enterprise
Installation
- Maven: add
com.jwebmp.plugins:aggrid-enterprise:${version}. If you import the JWebMP BOM the version aligns automatically. - This module depends on the community plugin
com.jwebmp.plugins:aggrid.
Usage
- Use AgGridEnterprise as you would AgGrid, with extra options available:
public class MyEnterpriseGrid extends AgGridEnterprise<MyEnterpriseGrid>
{
public MyEnterpriseGrid()
{
setID("myEntGrid");
// Enterprise goodies
enableCharts();
enableRangeSelection();
sideBarFiltersAndColumns();
showRowGroupPanel();
enableRowNumbers();
useServerSideRowModel();
// Define your columns & data exactly like AgGrid
getOptions().setPagination(true);
getOptions().setPaginationPageSize(25);
}
}Notes
- The Page Configurator pulls in the
ag-grid-enterprisenpm package and registersAllEnterpriseModulewith theModuleRegistry. - If you use AG Grid licensing, you can call
setEnterpriseLicenseKey("your-key")and wire it up on your app side.
This project adopts the Rules Repository (https://github.com/GuicedEE/ai-rules.git) for architecture guidance, design patterns, and code generation rules.
- PACT.md β Product architecture and contract; design decisions; integration points
- RULES.md β Project rules, tech stack (Java 25, Maven, CRTP Fluent API), behavioral rules
- GLOSSARY.md β Terminology index; topic-first composition linking to Rules Repository glossaries
- GUIDES.md β How-to guides; usage patterns; feature examples; adding new features
- IMPLEMENTATION.md β Module structure, code layout, build configuration, design patterns (updated Phase 2)
- PHASE_2_COMPLETE.md β Phase 2 completion summary: 8 modules created (1,842 lines), main class reduced 2,168 β 1,433 lines (-735/-34%), 100% JSON backward compatible
- PHASE_2_MODULAR_RESTRUCTURING.md β Phase 2 detailed implementation plan with complete results and next steps for Phase 2D (testing) and Phase 2E (documentation)
- AgGridEnterprise-Plan.md β Execution plan, checklist, and continuation prompts
- docs/PROMPT_REFERENCE.md β Configuration reference for future prompts; selected stacks, glossary composition
The enterprise Rules Repository is linked as a Git submodule at rules/. See rules/README.md for the complete rule set, topic guides, and glossaries.
Key Topics:
- Language: Java 25 LTS, Maven, Build Tooling
- Patterns: Fluent API (CRTP), MapStruct, Lombok
- Structure: JWebMP Core, AgGrid, Angular Integration
- Architecture: SDD (Specification-Driven Design), TDD (Test-Driven Docs)
- Framework: Logging (Log4j2), JSpecify (null-safety)
<dependency>
<groupId>com.jwebmp.plugins</groupId>
<artifactId>aggrid-enterprise</artifactId>
</dependency>Or use JWebMP BOM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.jwebmp</groupId>
<artifactId>jwebmp-bom</artifactId>
<version>${jwebmp.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>public class SalesGrid extends AgGridEnterprise<SalesGrid> {
public SalesGrid() {
setID("salesGrid");
// Enable enterprise features (fluent API)
enableCharts()
.enableRangeSelection()
.sideBarFiltersAndColumns()
.showRowGroupPanel();
// Configure columns and data
getOptions().setColumnDefs(List.of(
new AgGridColumnDef<>("country"),
new AgGridColumnDef<>("sales"),
new AgGridColumnDef<>("year")
));
getOptions().setPagination(true);
getOptions().setPaginationPageSize(50);
}
}Grid is automatically bound to Angular template via JWebMP code generation. Enterprise features (Charts, Range, Row Groups, etc.) are available at runtime.
- β Charts β Render charts from grid data; configurable themes (ag-default, ag-vivid, ag-material, etc.)
- β Range Selection β Select and copy cell ranges
- β Side Bar β Columns and Filters panels with user toggle
- β Status Bar β Row count, selection count, aggregation metrics
- β Row Grouping β Group by one or multiple columns; expandable groups; custom hierarchies
- β Pivot Tables β Row and column pivots with value aggregation
- β Server-Side Row Model β Lazy-load large datasets; backend provides rows on-demand
- β Row Numbers β Official AG Grid row numbering option with helper method
- Type-Safe Fluent API β CRTP pattern for compile-time safe method chaining; no Lombok @Builder
- Strongly-Typed Options β Enums and POJOs replace raw Object/Map; full IDE autocomplete
- Modular Composition (Phase 2) β 8 focused modules (@JsonUnwrapped) organizing 83 properties into feature areas:
- ChartsOptions (10 properties)
- ServerSideRowModelOptions (17 properties)
- RowGroupingOptions (22 properties)
- AggregationOptions (7 properties)
- PivotingOptions (11 properties)
- AdvancedFilteringOptions (6 properties)
- SideBarAndStatusBarOptions (3 properties)
- RangeSelectionOptions (1 property)
- Boot-Time Wiring β GuicedEE
IPageConfiguratorauto-registers enterprise npm dependencies and Angular modules - Clean Serialization β Jackson with field-level visibility and null suppression; MapStruct enum transformations
- 100% JSON Backward Compatible β @JsonUnwrapped pattern ensures identical JSON output; no breaking changes to API consumers
- Forward-Only Policy β No legacy code; all docs and references kept in sync
We welcome contributions from the open-source community! Whether you're reporting bugs, suggesting features, or submitting pull requests, your participation helps make this library better for everyone.
- Fork the repository β Create your own fork on GitHub
- Clone locally β
git clone https://github.com/YOUR_USERNAME/AgGridEnterprise.git - Create a feature branch β
git checkout -b feature/your-feature-name
When adding new enterprise features or fixes:
- Review GUIDES.md β Understand patterns and the Adding New Features section
- Follow RULES.md β Tech stack, naming conventions, behavioral rules
- Update documentation β PACT/RULES/GLOSSARY/GUIDES/IMPLEMENTATION as needed (forward-only policy)
- Write tests β Add test cases for new functionality
- Run full build β
mvn clean installto build and test - Submit PR β Include a clear description and reference any related issues
- Type Safety β Prefer enum/POJO types over raw Objects; leverage IDE autocomplete
- Fluent API β Extend CRTP pattern for method chaining; maintain backward compatibility
- Documentation β Keep RULES, GUIDES, and inline comments in sync with code changes
- Forward-Only Policy β No legacy code; deprecate rather than remove; update all references
See GUIDES.md - Adding New Features for detailed instructions.
Found a bug? Have a feature request?
- Check existing issues β Search GitHub Issues first
- Create a new issue β Provide:
- Clear description of the problem or feature
- Steps to reproduce (for bugs)
- Expected vs. actual behavior
- Environment details (Java version, Maven version, etc.)
- Keep commits focused β One feature or fix per PR
- Write descriptive messages β Reference issues (#123) in commit messages
- Update CHANGELOG β Document your changes
- Follow the style guide β Consistent formatting and naming conventions
- Request review β Core maintainers will review and provide feedback
Apache 2.0 β See LICENSE for full details.
This project is open-source and freely available for commercial and personal use.
This is part of the JWebMP ecosystem β a collection of open-source Java web UI components and frameworks:
- JWebMP β Main Java Web UI Framework (Apache 2.0)
- AgGrid Community Plugin β Community-tier AgGrid plugin (Apache 2.0)
- Rules Repository β Enterprise architecture patterns and design guides (Apache 2.0)
- GuicedEE β Guice-based enterprise framework with dependency injection (Apache 2.0)
All projects are open-source and actively maintained by the community.
- GitHub Issues β Report bugs & request features
- GitHub Discussions β Ask questions & share ideas
- Maven Central β View all versions
This project extends AG Grid Enterprise with a type-safe Java wrapper, following the same patterns used in:
- WebAwesomePro β builds on WebAwesome
- FullCalendarPro β builds on FullCalendar
Special thanks to the JWebMP and GuicedEE communities for foundational work on fluent API patterns, modular architecture, and forward-only design practices.