Skip to content

Commit 596922b

Browse files
committed
version 0.8 notes
1 parent 5b512b3 commit 596922b

File tree

3 files changed

+94
-28
lines changed

3 files changed

+94
-28
lines changed

Documentation.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
* the API should operate. Once constructed, the descriptor is then used to
1818
* generate a set of Java source files. These files are comprised of a few
1919
* runtime classes and generated interfaces. The generated sources should
20-
* be included in your project, perhaps as a module dependency. (This project
21-
* also contains a maven plugin which allows you to regenerate your sources
22-
* on the fly. See more [here](https://github.com/UnquietCode/Flapi/wiki/Maven-Build-Plugin)).
20+
* be included in your project, perhaps as a module dependency.
21+
*
22+
* There are two build plugins availble, one for
23+
* [Maven](https://github.com/UnquietCode/Flapi/wiki/Maven-Build-Plugin)
24+
* and one for [Gradle](https://github.com/UnquietCode/Flapi/wiki/Gradle-Build-Plugin)
25+
* which allow you to regenerate your sources on the fly.
2326
*
2427
*
2528
* ### At Run Time

README.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Flapi - A fluent API generator for Java
2-
## v0.7.3 [![Build Status](https://travis-ci.org/UnquietCode/Flapi.png?branch=master)](https://travis-ci.org/UnquietCode/Flapi)
2+
## v0.8.0 [![Build Status](https://travis-ci.org/UnquietCode/Flapi.png?branch=master)](https://travis-ci.org/UnquietCode/Flapi)
33

44
[![Tip with Gratipay](https://assets.gratipay.com/gratipay.svg)](https://gratipay.com/UnquietCode) [![Tip with Bitcoin](https://assets.gratipay.com/bitcoin.png)](https://blockchain.info/address/1Ec6mzLpJQvuzXqhxfJz1h9ZwJmoHMW9BX)**Bitcoin**
55

@@ -73,7 +73,7 @@ repository and dependency in your build script:
7373
<dependency>
7474
<groupId>unquietcode.tools.flapi</groupId>
7575
<artifactId>flapi</artifactId>
76-
<version>0.7.3</version>
76+
<version>0.8</version>
7777
<scope>test</scope>
7878
</dependency>
7979
```
@@ -89,18 +89,23 @@ repositories {
8989
...
9090
9191
dependencies {
92-
testCompile 'unquietcode.tools.flapi:flapi:0.7.3'
92+
testCompile 'unquietcode.tools.flapi:flapi:0.8'
9393
}
9494
```
9595

9696
In a test define your `Descriptor` object and output the generated source code. (The
9797
[Pizza Builder](https://github.com/UnquietCode/Flapi/wiki/Pizza-Builder-Example)
9898
example is a simple descriptor you can start with.) You can also make use of the
99-
[maven plugin](https://github.com/UnquietCode/Flapi/wiki/Maven-Build-Plugin) to
99+
[gradle plugin](https://github.com/UnquietCode/Flapi/wiki/Gradle-Build-Plugin), or the
100+
[maven plugin](https://github.com/UnquietCode/Flapi/wiki/Maven-Build-Plugin), to
100101
perform the code generation.
101102

102-
At the time of writing, the project builds fine in JDK 6 and 7. However, please note that
103-
the automated builds are no longer being run against JDK 6.
103+
At the time of writing the project builds fine in JDK 6, however please note that
104+
the automated builds are no longer being run for that release. Future versions will
105+
be built using JDK 8, exposing a JDK 7 compatible public interface, and use JDK 7 as
106+
the default target for code generation, where the current default is JDK 6.
107+
108+
(PSA: If you're still using JDK 6 or lower please do something about that soon.)
104109

105110

106111
### Additional Resources
@@ -117,9 +122,8 @@ The original blog post describing Flapi.
117122

118123

119124
### What's the project's status?
120-
Version 0.7 has been released, and includes enhancements for customizing the generated code, plus several
121-
other new features and improvements. See the
122-
[Release Notes](https://github.com/UnquietCode/Flapi/wiki/Version-0.7) for the full details.
125+
Version 0.8 has been released, and includes a new Gradle build plugin, support for
126+
block mixins, and more. See the [Release Notes](./VERSION.md) for the full details.
123127

124128
### Problems?
125129
Use the [issue tracker](https://github.com/UnquietCode/Flapi/issues) to report problems encountered or new

VERSION.md

Lines changed: 75 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
1+
# Version 0.8
2+
This version includes several key features, and is also intended to be the last
3+
feature release before 1.0.
4+
5+
### Gradle Plugin
6+
A new build plugin for Gradle is available, extending the build-time support
7+
for code generation offered by the Maven plugin. See the
8+
[wiki page](https://github.com/UnquietCode/Flapi/wiki/Gradle-Build-Plugin)
9+
for more information.
10+
11+
### Block Mixins
12+
Using block mixins, it is possible to 'extend' one or more already existing
13+
blocks, reducing duplication, and covering a common use case. See the
14+
[Block Mixins](http://unquietcode.github.io/Flapi/#block%20mixins) section
15+
in the documentation for usage notes.
16+
17+
### `Head` wrapper interface
18+
Similar to the `Start<Void>` wrapper interface which was removed previously,
19+
every descriptor now includes a simple, untyped interface for public consumption
20+
named `Head`. This interface will extend whatever the internal `Start` interface
21+
demands, creating a more shelf-stable API.
22+
23+
### Features and Improvements
24+
25+
+ [#25]: new Gradle build plugin
26+
+ [#44]: support for block mixins
27+
+ [#216]: support for extended type hierarchies in annotated helpers
28+
+ [#215]: allow customization of anonymous names via the NameGenerator API
29+
+ [#214]: support for single wildcard generics in method signatures
30+
+ [#213]: new `Head` convenience class, replacing confusing uses of `Start<Void>`
31+
32+
The full list of tasks and issues included in the release is available on the project's
33+
[Issue Tracker](https://github.com/UnquietCode/Flapi/milestones/0.8).
34+
35+
------------------------------------------------
36+
137
# Version 0.7
238
The latest version includes some new features for modifying the output
3-
of the generated source code. As well, better type handling is availble
39+
of the generated source code. As well, better type handling is available
440
for arrays and generics.
541

642
### Features and Improvements
@@ -57,6 +93,10 @@ You can now create descriptors from annotated helper classes and interfaces. See
5793
### Bean Builders
5894
Similar to annotations, you can provide a class with `setXYZ(..)` and `withXYZ(..)` methods, and these will be turned into a simple builder where each method can only be called at most one time, and where a bean will be returned at the end of the chain.
5995

96+
### BREAKING CHANGE - wrapper `Start` interface requires a type parameter
97+
In order to enable proper nested blocks, all `Start` interfaces now require a
98+
type parameter to be provided. In most cases, this value will simply be `Void`.
99+
60100
## Resolved Issues
61101
Issues are now handled through GitHub, and historical issues have been migrated from JIRA.
62102

@@ -73,10 +113,6 @@ Issues are now handled through GitHub, and historical issues have been migrated
73113
+ [FLAPI-190 / #34]: Update docs and wiki with annotations info.
74114
+ [FLAPI-189 / #17]: Move issues from JIRA to GitHub
75115

76-
### BREAKING CHANGE - wrapper `Start` interface requires a type parameter
77-
In order to enable proper nested blocks, all `Start` interfaces now require a
78-
type parameter to be provided. In most cases, this value will simply be `Void`.
79-
80116
The full list of tasks and issues included in the release is available on the project's
81117
[Issue Tracker](https://github.com/UnquietCode/Flapi/milestones/0.6).
82118

@@ -223,7 +259,6 @@ The full list of tasks and issues included in the release is available on the pr
223259

224260
------------------------------------------------
225261

226-
# Version 0.3
227262
Flapi 0.3 includes several bugfixes, as well as some new features.
228263

229264
## Javadocs
@@ -239,8 +274,12 @@ Methods which are marked `atMost(..)` can now be grouped together within the sam
239274
This means that when one goes, so does the other. Use this in place of unnecessary anonymous blocks.
240275
The new documentation methods, for example, make use of this.
241276

242-
## Demonstration Video
243-
A screencast which attempts to explain the basic use of Flapi has been posted [here](http://vimeo.com/58855907).
277+
## Demos and Examples
278+
A screencast which attempts to explain the basic use of Flapi has been posted [here](http://vimeo.com/58855907/).
279+
280+
As well, a new example has been added, called PipedProcessorExample. This showcases building up computation
281+
instead of an object, by piping processes together. Find it in the
282+
[test directory](https://github.com/UnquietCode/Flapi/tree/master/src/test/java/unquietcode/tools/flapi/examples/pipes).
244283

245284
## Resolved Issues
246285

@@ -274,11 +313,24 @@ The full list of tasks and issues included in the release is available on the pr
274313
------------------------------------------------
275314

276315
# Version 0.2
277-
Notes also available at: https://github.com/UnquietCode/Flapi/wiki/v0_2
278-
JIRA: https://unquietcode.atlassian.net/secure/ReleaseNote.jspa?projectId=10160&version=10141
316+
Flapi 0.2 contains several bugfixes, as well as a complete rearchitecture of the code generation
317+
classes. More javadocs have been added, a few new features, and a few API changes. All of the examples
318+
have been updated. As well, tests have been improved with a suite of in-memory compilation tests, as
319+
well as the inclusion of example code as full-fledged tests.
279320

280-
Stable beta release. There are still some features to be added.
281-
This version includes a few notable changes:
321+
For clarity, the `once()` method when delaring methods and blocks has been replaced with `exactly(x)`.
322+
`exactly(1)` is equivalent to using `between(1, 1)`.
323+
324+
The `@Generated` annotation is now added to classes when the JDK version is set to >= 6. You can set the target JDK version in Flapi by calling `Flapi.setJDKVersion(...)` and this setting will affect how the classes are generated.
325+
326+
The most important external change is that the 'support' classes and interfaces which comprise the
327+
runtime dependencies of Flapi have been reduced. The required classes are written out with the
328+
generated ones and can be dropped into your application.
329+
330+
A new feature, implicit terminals, allows a block to automatically exit when there are no more methods
331+
left to call. See [this example](House-Builder-Example) for more information.
332+
333+
Key Features:
282334

283335
+ StateClass rearchitecture [FLAPI-83]
284336
+ common interface for implementation classes [FLAPI-67]
@@ -301,10 +353,17 @@ The full list of tasks and issues included in the release is available on the pr
301353
------------------------------------------------
302354

303355
# Version 0.1
304-
Notes also available at: https://github.com/UnquietCode/Flapi/wiki/v0_1
305-
JIRA: https://unquietcode.atlassian.net/secure/ReleaseNote.jspa?projectId=10160&version=10140
306-
307-
Initial beta release.
356+
Flapi is a fluent API generator for Java. By 'fluent' I primarily mean
357+
simplified method chaining, but also the ability to obscure methods which
358+
have been called a certain number of times. This allows a user to see
359+
compile-time errors, or helpful autocomplete suggestions while working
360+
with the API. As well, because the API is generated from a descriptor,
361+
changes are easy to integrate without spending time reworking your
362+
classes.
363+
364+
This version, 0.1, is an initial beta laying the groundwork for using
365+
Flapi. See the [Examples](https://github.com/UnquietCode/Flapi/wiki/Examples)
366+
in the wiki for more information.
308367

309368
The full list of tasks and issues included in the release is available on the project's
310369
[Issue Tracker](https://github.com/UnquietCode/Flapi/issues?q=milestone%3A0.1).

0 commit comments

Comments
 (0)