Rule-Based Java Class Generation from JSON Messages

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Java developers face the arduous task of manually creating numerous Java classes with 'set' and 'get' methods, and existing techniques fall short in automating the generation of large sets of classes, lacking the ability to specify the location of objects and control over the generated class characteristics such as hierarchy and coding style.

Innovation Solution

A rule-based system that generates Java classes from JSON messages by applying user-configured rules, allowing for the specification of class characteristics and hierarchy, and enabling the automatic creation of Java classes from JSON messages, either retrieved from a repository or received over a network, with the option to apply precedence regimes before or after message reception.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If manual coding of Java classes is performed, then control over class characteristics is maintained, but productivity decreases due to time-consuming manual creation

Engineering Contradiction:
Improveclass generation speedVSAvoidmanual coding requirement
Core Design Contradiction:
ProductivityVSExtent of automation

Solution Approach 1:

The system enables self-service by allowing developers to define high-level rules and templates that automatically generate Java classes without manual coding. The class generation system processes JSON messages and applies user-defined rules to create classes automatically, eliminating the need for developers to manually write boilerplate code while maintaining control over class characteristics through rule-based configuration.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The invention changes parameters by transforming manual coding parameters into rule-based configuration parameters. Instead of requiring developers to specify detailed class characteristics manually, the system accepts high-level rules that define patterns for class generation. These rules are applied systematically to generate classes with appropriate characteristics, effectively changing the parameter space from detailed manual specifications to abstract rule definitions.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If legacy class generation techniques are used, then some automation is provided, but adaptability decreases due to inability to control generated class characteristics

Engineering Contradiction:
Improvecontrol over class characteristicsVSAvoidautomation capability
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The system introduces dynamics by making class generation characteristics adjustable through user-defined rules. Instead of using fixed templates, the system allows developers to dynamically configure class characteristics such as hierarchy structure, field types, and method signatures through rules that can be adapted to different JSON message formats. This dynamic rule-based approach provides both adaptability to various scenarios and maintainability through consistent rule application.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention achieves universality by creating a single rule-based system that can generate multiple types of Java classes with different characteristics. The same core system handles various class generation tasks by applying different user-defined rules, eliminating the need for separate tools for different class types. This multi-functional approach covers hierarchical classes, flat classes, and various coding styles through a unified rule-based framework.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If rule-based automatic generation is implemented, then productivity increases, but device complexity increases due to rule application mechanisms

Engineering Contradiction:
Improveautomatic class generationVSAvoidrule processing system
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system applies segmentation by dividing the rule processing into distinct phases: rule definition, rule validation, and rule application. The class generation system segments the complex rule processing into manageable components, including a rule engine that processes rules sequentially or in parallel, and a code generator that translates processed rules into Java code. This segmentation reduces the perceived complexity by organizing the rule processing into clear, separated stages.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The invention introduces an intermediary rule engine that mediates between user-defined rules and the code generation process. This intermediary layer processes and validates rules before they are applied to generate Java classes, simplifying the overall system architecture. The rule engine acts as a mediator that translates high-level user intentions into executable generation commands, reducing the complexity burden on the code generator while maintaining productivity benefits.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10558434B2Rule-based automatic class generation from a JSON message
Publication Date: 2020.02.11 ORACLE INT CORP
  • US10558434B2 patent drawing
  • US10558434B2 patent drawing
  • US10558434B2 patent drawing

AI summary

A method, system, and computer program product for Java development environments. The method commences upon receiving a set of one or more rules to be applied to one or more JSON messages, then generating of one or more Java classes respective to received JSON messages. The received JSON messages can be retrieved from a repository for JSON message files, or the JSON messages can be received by sniffing a message transmitted over a network link. The rules can be applied according to one or more precedence regimes, and applying the precedence regimes over the two or more rules can be considered in a pre-processing step performed before receiving a JSON message or can be considered after receiving a JSON message.