It doesn’t take a rocket scientist to create a better (relational) file format for JavaScript than XML

Douglas Crockford (Inventor of JSON)

EO - Elastic Objects

Elastic Objects give JSON messages a type to instantiate typed Objects on the server side in any place of an arbitrary object tree.

A special object type - the Call - with a generic execute method offers functionality.

With a typed JSON it's possible to build web services with one generic endpoint similar to GraphQL. New calls in java just need an entry in the model configurations. And for the configured calls a new resource just needs an entry in file configurations or sql configurations.

A client could send (typed) data and calls in any combination. The following working examples using html forms should show what's possible.

Simple Calls
SinusValueCall

SinusValueCall compute the sinus from the ≡sourcePath "squareDegree". The result will set in the ≡targetPath "sinusValue".

File Calls

To allow access to files on the server side there are the file configurations with role permissions and the file location.

Read a Flat File

FileReadCall will resolve public.txt from the FileConfig.json#L302

The content of the file will set to the ≡targetPath "xyz".

Accessing An Excel File

XlsxReadCall resolve the ≡fileConfigKey "AnObject.xlsx:test" in FileConfig.json#L2

The resulting list of maps is set to ≡targetPath "values".

Combining Data Request and Rendering

There is a template call which can be combined with a data call:

Render a List in a Table

≡CsvSimpleReadCall reads ≡AnObject.csv . \ It will store a list of maps in ≡targetPath "/data/csv"

≡TemplateResourceCall use ≡sourcePath "/data/csv" as input. After rendering with ≡table.tpl the result is stored under ≡targetPath "_asTemplate"

Template Endpoint

WebEo.java has the generic endpoint "eo-template". Here one can send template content directly.

Templates contains marked typed JSON to offer functionality in any kind of text.

myString myInt myBoolean
value1 1 true
value2 2 false
value3 3 false

This table is created by embedded calls in a short form:

Essentially these calls are the same as the following:

Csv, Excel and DB Together

All implemented list read calls are integrated in that editable template:

≡TemplateResourceCall will the render the data with ≡table.tpl

Intention

Current concepts for computer communication using typed RPC pattern, if it's SOAP, REST or GraphQL.

As a result one need a lot of similar framework specific code for configuration and/or classes . Coding in such a procedural pattern is the boring part of being a programmer.

The original intention was to generate these boring parts by templates and some structured information. The .builder with the sheet eo.xlsx generate parts of this project.

These templates using the same typed JSON for the active parts.

Conclusion

As a microservice architecture EO with version 0.8 is a nice "Proof of Concept" in Java: With a simple tiny type JSON extension one could build services with a more object oriented approach.

The potential possibilities with bulletproofed database access or implementations in other programming languages are huge and far beyond a single person can realize.

So any ideas to bring it to a broader base are welcome.

Meanwhile focus will be the usage as a toolbox for the manipulation Java Objects and generation of code.

Libraries
Some parts of EO in verson 0.8.0 are deployed to maven central:
This Page Elements
Get Method: WebEoGet.java
Post Method: WebEo.java
Page-Template: ≡ContentPage.html
Header: Header.html
Content-Directory:⊚docs
Navigation: ≡docs_Nav.html
Content: index.html
Footer: Footer.html
Postversion of this page: