Feature-rich data grid integration for JWebMP with Angular 20. Provides server-driven, type-safe Java API for AG Grid 35.0.0 with enterprise features, real-time updates, server-side row model, and reactive patterns.
Built on AG Grid 35.0.0 · Angular 20 · JWebMP Core · JPMS module com.jwebmp.plugins.aggrid · Java 25+
Version: 35.0.0 — Complete AG Grid Community API with CRTP fluent builders and Angular integration.
<dependency>
<groupId>com.jwebmp.plugins</groupId>
<artifactId>aggrid</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.jwebmp.plugins:aggrid:2.0.0-SNAPSHOT")The plugin automatically includes AG Grid dependencies:
{
"dependencies": {
"ag-grid-community": "^35.0.0",
"ag-grid-angular": "^35.0.0"
}
}- Server-Driven Configuration — Define grids entirely in Java with CRTP fluent API
- Enterprise Features — Server-Side Row Model, Row Grouping, Pivoting, Excel Export, Charts
- Real-Time Updates — WebSocket integration for live data streaming
- Type-Safe Column Definitions — Leverage Java's type system for column configuration
- Reactive Data Binding — Built on Vert.x 5 for non-blocking async operations
- Angular 20 Integration — Auto-generated Angular components with change detection
- Module Registry — AllCommunityModule auto-registered via PageConfigurator
- Cell Renderers — Custom cell rendering with Java-based renderer classes
- Event Handling — Row selection, cell clicks, custom events with type-safe handlers
- Filtering & Sorting — Client-side and server-side filtering, multi-column sorting
- Pagination — Built-in pagination with configurable page sizes
- JPMS Modular — Full Java Platform Module System support
- Java 25 LTS (required)
- Maven 3.8+
- Node.js 18+ (for frontend builds)
- Angular 20+ (auto-integrated via JWebMP)
<dependency>
<groupId>com.jwebmp.plugins</groupId>
<artifactId>aggrid</artifactId>
<version>2.0.0</version>
</dependency>Or use the JWebMP BOM for version alignment:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.jwebmp</groupId>
<artifactId>jwebmp-bom</artifactId>
<version>2.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>com.jwebmp.plugins</groupId>
<artifactId>aggrid</artifactId>
</dependency>import com.jwebmp.plugins.aggrid.AgGrid;
import com.jwebmp.plugins.aggrid.options.AgGridColumnDef;
public class OrderGrid extends AgGrid<OrderGrid> {
public OrderGrid() {
super();
setHeight("600px")
.enablePagination(25)
.enableRowSelection("multiple");
// Add columns
addColumn(new AgGridColumnDef()
.setField("orderId")
.setHeaderName("Order ID")
.setWidth(100));
addColumn(new AgGridColumnDef()
.setField("status")
.setHeaderName("Status")
.setCellRenderer(StatusBadgeRenderer.class));
addColumn(new AgGridColumnDef()
.setField("amount")
.setHeaderName("Amount")
.setCellDataType("number"));
}
// Optional: server-side data fetching
@DataSource
public Uni<List<Order>> fetchData(DataSourceRequest request) {
return orderService.findPage(
request.getStartRow(),
request.getEndRow(),
request.getFilterModel(),
request.getSortModel()
);
}
}@Page
public class OrdersPage extends Div<OrdersPage> {
@Inject
private OrderGrid orderGrid;
public OrdersPage() {
super();
add(orderGrid);
}
}AG Grid Enterprise features are fully supported. Enable them via module registration:
Server-Side Row Model (millions of rows, lazy-loading):
gridOptions.setRowModelType(RowModelType.SERVER_SIDE)
.setServerSideInitialRowCount(1000);Row Grouping & Aggregation:
gridOptions.setRowGroupPanelShow(RowGroupPanelShow.ALWAYS)
.addRowGroupColumn("region")
.addValueColumn("revenue");Excel Export with Styles:
gridApi.exportDataAsExcel(new ExcelExportParams()
.setFileName("report.xlsx")
.setSheetName("Orders"));Integrated Charts:
gridApi.createRangeChart(
new CreateRangeChartParams()
.setCellRange(new CellRange().setColumns(["date", "revenue"]))
.setChartType(ChartType.LINE)
);- AG Grid Docs — Official AG Grid documentation
- AG Grid Angular — AG Grid Angular integration guide
- JWebMP Home — JWebMP framework documentation
- Backend: Java 25 LTS, Maven, GuicedEE (IoC), Vert.x 5 (reactive), Hibernate (ORM)
- Frontend: Angular 20, TypeScript, AG Grid v35.0.0+
- Integration: JWebMP Page Configurators, ServiceLoader SPI
- Data: Server-side row model, WebSocket real-time updates, transactions
- Testing: JUnit 5, Jacoco (≥80% coverage), SonarQube
src/main/java/com/jwebmp/plugins/aggrid/
├── AgGrid.java # Main CRTP component
├── options/ # Configuration POJOs
├── renderers/ # ICellRenderer implementations
├── configurators/ # Page Configurator (auto-discovery)
└── services/ # Data sources, WebSocket handlers
mvn clean testmvn clean test jacoco:report
# Open: target/site/jacoco/index.htmlmvn clean verify sonar:sonar \
-Dsonar.projectKey=JWebMP-AgGrid \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=<token>This repository uses GitHub Actions for continuous integration. Workflows include:
Trigger: git push to any branch
Actions:
- Maven clean compile
- Unit tests (JUnit 5)
- Jacoco coverage (≥80% enforcement)
- SonarQube analysis (if enabled)
- Artifact generation
Trigger: Release tag (e.g., v2.0.0)
Actions:
- Maven clean package
- GPG sign artifacts
- Deploy to Sonatype nexus
- Maven Central sync
Trigger: git push to develop branch
Actions:
- Maven clean deploy
- Publish to Sonatype snapshots
- Available immediately for downstream testing
You can trigger builds manually:
gh workflow run build.yml --ref main<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository><repository>
<id>sonatype-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>mvn clean install -DskipTests- JWebMP BOM ensures consistent versions across plugins
- Regular dependency updates via Dependabot
- CVE scanning via Maven Enforcer Plugin
- Apache 2.0 licensed
- All dependencies verified for compatibility
- SBOM (Software Bill of Materials) provided in releases
- No secrets in source code
- Environment variables for sensitive config
- GPG-signed releases
- Branch protection on
main
This project takes security seriously.
Reporting Security Vulnerabilities: Do NOT create public GitHub issues for security vulnerabilities. Please see SECURITY.md for responsible disclosure guidelines.
Key Security Features:
- ✅ No hardcoded secrets (community version has no license keys)
- ✅ Environment-based configuration
- ✅ GPG-signed releases
- ✅ OWASP Dependency-Check in CI/CD
- ✅ GitHub Dependabot enabled
- ✅ SonarQube code quality scanning
- ✅ JSpecify null-safety annotations
For detailed security information, see SECURITY.md.
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit with clear messages (
git commit -m "feat: add new feature") - Push to your fork (
git push origin feature/my-feature) - Open a Pull Request with:
- Description of changes
- Tests included
- Documentation updates
- Java: Follow JWebMP conventions (CRTP fluent APIs, proper null safety with JSpecify)
- Tests: JUnit 5, ≥80% coverage (Jacoco enforced)
- Formatting: Maven Spotless plugin enforced
- Documentation: Update README for new features
Please use GitHub Issues with:
- Clear title and description
- Steps to reproduce (if bug)
- Expected vs. actual behavior
- Java/Maven/AG Grid versions
| Aspect | Status |
|---|---|
| Version | 2.0.0-SNAPSHOT |
| AG Grid | v35.0.0+ supported |
| Java | 25 LTS (required) |
| Build | ✅ Passing |
| Coverage | ≥80% (Jacoco enforced) |
| License | Apache 2.0 |
| Maintenance | Active |
- GitHub Repository: https://github.com/JWebMP/JWebMP-AgGrid
- Issue Tracker: https://github.com/JWebMP/JWebMP-AgGrid/issues
- Maven Central: https://mvnrepository.com/artifact/com.jwebmp.plugins/aggrid
- AG Grid Docs: https://www.ag-grid.com/
- JWebMP Home: https://jwebmp.com/
Licensed under the Apache License 2.0.
Copyright 2025 JWebMP Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
- AG Grid — Enterprise data grid library
- JWebMP — Server-driven web framework
- GuicedEE — Dependency injection framework
- Vert.x — Reactive runtime
- GitHub Issues: https://github.com/JWebMP/JWebMP-AgGrid/issues
- Discussions: https://github.com/JWebMP/JWebMP-AgGrid/discussions
- Documentation: See rules/ and docs/
- Official Docs: https://www.ag-grid.com/
- Stack Overflow: Tag with
ag-grid - AG Grid Forum: https://www.ag-grid.com/support/
- JWebMP Docs: https://jwebmp.com/
- JWebMP Issues: https://github.com/JWebMP/JWebMP/issues
Made with ❤️ by the JWebMP Team