Compare commits
14 Commits
master
...
record-bui
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0b78ec1db | ||
|
|
d26c87c666 | ||
|
|
f8e56a40f3 | ||
|
|
5a07cf23f7 | ||
|
|
78ba53f96d | ||
|
|
0153f65121 | ||
|
|
c1e771bbbe | ||
|
|
c9ba514773 | ||
|
|
491ed4f6e0 | ||
|
|
16751508cc | ||
|
|
ee7f81c7b8 | ||
|
|
015287608b | ||
|
|
467bcc9041 | ||
|
|
666bc334ad |
24
.github/workflows/maven.yml
vendored
Normal file
24
.github/workflows/maven.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# This workflow will build a Java project with Maven
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
|
||||||
|
|
||||||
|
name: Java CI with Maven
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 15
|
||||||
|
- name: Build with Maven
|
||||||
|
run: mvn -B package --file pom.xml
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
language: java
|
|
||||||
jdk:
|
|
||||||
- openjdk15
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[](https://travis-ci.org/Randgalt/record-builder)
|
[](https://github.com/Randgalt/record-builder/actions)
|
||||||
[](https://search.maven.org/search?q=g:io.soabase.record-builder%20a:record-builder)
|
[](https://search.maven.org/search?q=g:io.soabase.record-builder%20a:record-builder)
|
||||||
|
|
||||||
# RecordBuilder - Early Access
|
# RecordBuilder - Early Access
|
||||||
@@ -203,8 +203,7 @@ public class NameAndAgeBuilder {
|
|||||||
* Return a new record built from the builder passed to the given consumer
|
* Return a new record built from the builder passed to the given consumer
|
||||||
*/
|
*/
|
||||||
default NameAndAge with(Consumer<NameAndAgeBuilder> consumer) {
|
default NameAndAge with(Consumer<NameAndAgeBuilder> consumer) {
|
||||||
NameAndAge r = _downcast(this);
|
NameAndAgeBuilder builder = with();
|
||||||
NameAndAgeBuilder builder = NameAndAgeBuilder.builder(r);
|
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
@@ -294,6 +293,7 @@ annotation. Use `packagePattern` to change this (see Javadoc for details).
|
|||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder-core</artifactId>
|
<artifactId>record-builder-core</artifactId>
|
||||||
<version>set-version-here</version>
|
<version>set-version-here</version>
|
||||||
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -340,7 +340,7 @@ Add the following to your build.gradle file:
|
|||||||
```
|
```
|
||||||
dependencies {
|
dependencies {
|
||||||
annotationProcessor 'io.soabase.record-builder:record-builder-processor:$version-goes-here'
|
annotationProcessor 'io.soabase.record-builder:record-builder-processor:$version-goes-here'
|
||||||
implementation 'io.soabase.record-builder:record-builder-core:$version-goes-here'
|
compileOnly 'io.soabase.record-builder:record-builder-core:$version-goes-here'
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
|
|||||||
6
pom.xml
6
pom.xml
@@ -5,7 +5,7 @@
|
|||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder</artifactId>
|
<artifactId>record-builder</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>1.14.ea-SNAPSHOT</version>
|
<version>1.15.jdk14</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>record-builder-core</module>
|
<module>record-builder-core</module>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
|
<project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
|
||||||
<jdk-version>15</jdk-version>
|
<jdk-version>14</jdk-version>
|
||||||
|
|
||||||
<maven-compiler-plugin-version>3.8.1</maven-compiler-plugin-version>
|
<maven-compiler-plugin-version>3.8.1</maven-compiler-plugin-version>
|
||||||
<maven-source-plugin-version>3.2.0</maven-source-plugin-version>
|
<maven-source-plugin-version>3.2.0</maven-source-plugin-version>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<url>https://github.com/randgalt/record-builder</url>
|
<url>https://github.com/randgalt/record-builder</url>
|
||||||
<connection>scm:git:https://github.com/randgalt/record-builder.git</connection>
|
<connection>scm:git:https://github.com/randgalt/record-builder.git</connection>
|
||||||
<developerConnection>scm:git:git@github.com:randgalt/record-builder.git</developerConnection>
|
<developerConnection>scm:git:git@github.com:randgalt/record-builder.git</developerConnection>
|
||||||
<tag>HEAD</tag>
|
<tag>record-builder-1.15.jdk14</tag>
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<issueManagement>
|
<issueManagement>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder</artifactId>
|
<artifactId>record-builder</artifactId>
|
||||||
<version>1.14.ea-SNAPSHOT</version>
|
<version>1.15.jdk14</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder</artifactId>
|
<artifactId>record-builder</artifactId>
|
||||||
<version>1.14.ea-SNAPSHOT</version>
|
<version>1.15.jdk14</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -134,15 +134,13 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a method that returns a pre-filled copy builder similar to:
|
Adds a method that returns a pre-filled copy builder similar to:
|
||||||
|
|
||||||
default MyRecord with(Consumer<MyRecordBuilder> consumer) {
|
default MyRecord with(Consumer<MyRecordBuilder> consumer) {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecordBuilder builder = with();
|
||||||
MyRecordBuilder builder MyRecordBuilder.builder(r);
|
|
||||||
consumer.accept(builder);
|
consumer.accept(builder);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
var codeBlockBuilder = CodeBlock.builder()
|
var codeBlockBuilder = CodeBlock.builder()
|
||||||
.add("$T $L = $L(this);\n", recordClassType.typeName(), uniqueVarName, metaData.downCastMethodName())
|
.add("$T builder = with();\n", builderClassType.typeName())
|
||||||
.add("$T builder = $L.$L($L);\n", builderClassType.typeName(), builderClassType.name(), metaData.copyMethodName(), uniqueVarName)
|
|
||||||
.add("consumer.accept(builder);\n")
|
.add("consumer.accept(builder);\n")
|
||||||
.add("return builder.build();\n");
|
.add("return builder.build();\n");
|
||||||
var consumerType = ParameterizedTypeName.get(ClassName.get(Consumer.class), builderClassType.typeName());
|
var consumerType = ParameterizedTypeName.get(ClassName.get(Consumer.class), builderClassType.typeName());
|
||||||
@@ -164,7 +162,7 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a method that returns a pre-filled copy builder similar to:
|
Adds a method that returns a pre-filled copy builder similar to:
|
||||||
|
|
||||||
default MyRecordBuilder with() {
|
default MyRecordBuilder with() {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecord r = _downcast(this);
|
||||||
return MyRecordBuilder.builder(r);
|
return MyRecordBuilder.builder(r);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@@ -201,7 +199,7 @@ class InternalRecordBuilderProcessor
|
|||||||
Adds a with method for the component similar to:
|
Adds a with method for the component similar to:
|
||||||
|
|
||||||
default MyRecord withName(String name) {
|
default MyRecord withName(String name) {
|
||||||
MyRecord r = (MyRecord)(Object)this;
|
MyRecord r = _downcast(this);
|
||||||
return new MyRecord(name, r.age());
|
return new MyRecord(name, r.age());
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@@ -529,7 +527,7 @@ class InternalRecordBuilderProcessor
|
|||||||
.add("}\n")
|
.add("}\n")
|
||||||
.add("catch (ClassCastException dummy) {\n")
|
.add("catch (ClassCastException dummy) {\n")
|
||||||
.indent()
|
.indent()
|
||||||
.add("throw new RuntimeException($S);\n", builderClassType.name() + "." + metaData.withClassName() + " can only be implemented for " + recordClassType.name())
|
.add("throw new RuntimeException($S);\n", builderClassType.name() + "." + metaData.withClassName() + " can only be implemented by " + recordClassType.name())
|
||||||
.unindent()
|
.unindent()
|
||||||
.add("}");
|
.add("}");
|
||||||
var methodSpec = MethodSpec.methodBuilder(metaData.downCastMethodName())
|
var methodSpec = MethodSpec.methodBuilder(metaData.downCastMethodName())
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder</artifactId>
|
<artifactId>record-builder</artifactId>
|
||||||
<version>1.14.ea-SNAPSHOT</version>
|
<version>1.15.jdk14</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.soabase.record-builder</groupId>
|
<groupId>io.soabase.record-builder</groupId>
|
||||||
<artifactId>record-builder-core</artifactId>
|
<artifactId>record-builder-core</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
Reference in New Issue
Block a user