
# PST - Protocol Buffers String Templating

## Abstract

PST allows to quickly generate Java Sourcecode from Protocol Buffer
specifications by automating the process of boiler-plating, compilation and
field definition via templates.

## Building

Generally, PST is an integral part of the Apache Wave build process, and not
called directly. If you want to build it, you can run

  `gradle build`

but it'll usually will be built for your.

## Standalone use

If you want to test PST directly, you'll need to build a standalone version
with

  `gradle shadowJar`

which allows you check out the example via

  `java -jar build/libs/wave-pst-0.1.jar -d example -f example/example.proto example/example.st`

which will result in example/com/example/Person.java being created from the
Protobuf definition of the Person schema in example/example.proto.

The boilerplate code will be coming from example/example.st, which references
example/broto.st, providing the per-field code definitions.

## Way of working

PST generates the corresponding java code using the following steps:

* protoc is called to create Java code from example/example.proto
* the resulting Example.java is compiled using javac
* each Message definition found in the Protocol Buffer file is matched against
  example/example.st
* the resulting Java code is passed through a styler to make it more human-readable

## Use within Apache Wave

Apache Wave is using proto2 Protocol Buffers as documented in
https://developers.google.com/protocol-buffers/docs/proto .. the task
generateMessages in wave/build.gradle is responsible for combining String
Templates as per http://www.stringtemplate.org/ to Java Classes.

A quick introduction to String Templates can be found under
https://theantlrguy.atlassian.net/wiki/display/ST/Five+minute+Introduction

execve("/usr/bin/java", ["java", "-jar", "build/libs/wave-pst-0.1.jar", "-d", "example", "-f", "example/example.proto", "example/example.st"], [/* 32 vars */]) = 0
[pid 12254] execve("/usr/bin/protoc", ["protoc", "example/example.proto", "-I.", "--java_out", "/tmp/1454436070071-0"], [/* 34 vars */]) = 0
[pid 12259] execve("/usr/bin/javac", ["javac", "/tmp/1454436070071-0/com/example/Example.java", "-d", "/tmp/1454436070071-0", "-verbose", "-cp", "//tmp/1454436070071-0/:/home/count/repos/github-berlincount-incubator-wave/pst/build/libs/wave-pst-0.1.jar"], [/* 34 vars */]) = 0
