Proposal Description: The *NextGenVerifier*is an enhanced version of the existing verifier tool that is part of the Glassfish Application Server. The objective of the NextGenVerifier is to improve the existing verifier in the following ways:
- Bug fixes and enhancements in the existing Verifier
- Extend the binary verification functionality to support new features
- Support for Source code verification
- Java EE 6 compliance in verification
Bug Fixes / Patches submitted We have submitted patches for the following bugs reported in the present Verifier
Code Submission We are submitting a Proof of Concept (POC) of the new improved Verifier that is planned to support the below mentioned features. The POC demonstrates the verification of a few rules based on Java Persistence API. Extending Verification Limitations of the current Verifier At present, the deployment descriptor model used by the Verifier is not extensible since it has a dependency on other modules in Glassfish
- The Verifier supports firing of rules at one level only - that is, against the descriptor model.
- There are separate models now for storing Abstract Syntax Tree (AST) in ASM and BCEL
- No support for source code verification
The new design supports the following features for verification
- Support for both binary and source code verification (Included in the POC)
- New extensible model for deployment descriptors based on the XML schema of descriptors (Included in the POC)
- JAXB-based parsing to populate the descriptor model from XML (Included in the POC)
- A common model for holding Abstract Syntax Tree irrespective of the technology used for parsing - ASM, BCEL or Java 6 Compiler API (Evolving model included in POC)
- Merging of descriptor models populated from XML and annotations (Pending)
- Verification rules can be fired at different levels - class level, descriptor level and merging level (Merging level pending)
Binary Verification Binary verifier uses ASM-based parsing of class files to populate the annotation based descriptor model and the common Java class model Source Code Verification Java 6 compiler APIs are used to parse the source code, extract the required information and create the common Java class model with the information about the classes in the source code. The annotation information from the classes is used to prepare the annotation-based descriptor model. In future, plug-ins can be developed for various IDEs based on this. Documentation Submission Java EE 6 compliance We are in the process of identifying the new verification rules for Java EE 6 compliance. We plan to submit the documentation of rules for Servlet 3.0 and JPA 2.0 specs. These rules would be implemented in Java and used in the new Verifier (that would be part of Glassfish V3). Proposal Artifacts The following artifacts of NextGenVerifier - POC are attached with this proposal:
- Detailed design document of NextGenVerifier(Design.zip).
- Code base of NextGenVerifier POC (Sourcecode.zip)
- User Guide (UserGuide.zip)
- Executable files for testing the POC (Executables.zip)
- TestFiles (TestFiles.zip)
The attached *JavaEE6Rules.zip*contains the new rules identified for the Servlet and JPA modules of Java EE 6:
|