Skip to content

Commit e7d081f

Browse files
committed
Add composition record example; integrate AutoValue builders in records
Signed-off-by: Oliver Eikemeier <[email protected]>
1 parent 5c90405 commit e7d081f

File tree

14 files changed

+152
-63
lines changed

14 files changed

+152
-63
lines changed

README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ This source demonstrates how to create value objects in Java using various annot
2323

2424
== Evaluated Libraries
2525

26-
- https://github.com/google/auto/blob/master/value/userguide/index.md[AutoValue]
26+
- https://github.com/google/auto/blob/main/value/userguide/index.md[AutoValue]
2727
- https://freebuilder.inferred.org[FreeBuilder]
2828
- https://immutables.github.io[Immutables]
2929
- https://projectlombok.org[Project Lombok]

src/main/java/com/fillmore_labs/talk/value/composition/lombok/MovieTicket.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@
1919
@Value
2020
public class MovieTicket {
2121
@NonNull String movieName;
22-
2322
long serial;
2423
}

src/main/java/com/fillmore_labs/talk/value/composition/lombok/SoldMovieTicket.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,5 @@
2020
@Value
2121
public class SoldMovieTicket {
2222
@NonNull MovieTicket ticket;
23-
2423
@NonNull Person owner;
2524
}

src/main/java/com/fillmore_labs/talk/value/composition/record/BUILD

Whitespace-only changes.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.fillmore_labs.talk.value.composition.record;
2+
3+
import com.google.auto.value.AutoBuilder;
4+
import java.util.Objects;
5+
6+
public record MovieTicket(String movieName, long serial) {
7+
public MovieTicket {
8+
Objects.requireNonNull(movieName, "movieName is a required parameter");
9+
}
10+
11+
public static Builder builder() {
12+
return new AutoBuilder_MovieTicket_Builder();
13+
}
14+
15+
@AutoBuilder(ofClass = MovieTicket.class)
16+
public abstract static class Builder {
17+
public abstract Builder movieName(String movieName);
18+
19+
public abstract Builder serial(long serial);
20+
21+
public abstract MovieTicket build();
22+
}
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.fillmore_labs.talk.value.composition.record;
2+
3+
import com.fillmore_labs.talk.value.simple.record.Person;
4+
import com.google.auto.value.AutoBuilder;
5+
import java.util.Objects;
6+
7+
public record SoldMovieTicket(MovieTicket ticket, Person owner) {
8+
public SoldMovieTicket {
9+
Objects.requireNonNull(ticket, "ticket is a required parameter");
10+
Objects.requireNonNull(owner, "owner is a required parameter");
11+
}
12+
13+
public static Builder builder() {
14+
return new AutoBuilder_SoldMovieTicket_Builder();
15+
}
16+
17+
@AutoBuilder(ofClass = SoldMovieTicket.class)
18+
public abstract static class Builder {
19+
public abstract Builder ticket(MovieTicket ticket);
20+
21+
public abstract Builder owner(Person owner);
22+
23+
public abstract SoldMovieTicket build();
24+
}
25+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/** */
2+
@CheckReturnValue
3+
@DefaultQualifier(
4+
value = NonNull.class,
5+
locations = {TypeUseLocation.PARAMETER, TypeUseLocation.RETURN})
6+
package com.fillmore_labs.talk.value.composition.record;
7+
8+
import com.google.errorprone.annotations.CheckReturnValue;
9+
import org.checkerframework.checker.nullness.qual.NonNull;
10+
import org.checkerframework.framework.qual.DefaultQualifier;
11+
import org.checkerframework.framework.qual.TypeUseLocation;

src/main/java/com/fillmore_labs/talk/value/inheritance/autovalue/SoldMovieTicket.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
@Immutable
88
@AutoValue
99
public abstract class SoldMovieTicket extends MovieTicket {
10-
1110
/* package */ SoldMovieTicket() {
1211
super();
1312
}
@@ -20,7 +19,6 @@ public static Builder builder() {
2019

2120
@AutoValue.Builder
2221
public abstract static class Builder extends MovieTicket.Builder<Builder> {
23-
2422
public abstract Builder owner(Person owner);
2523

2624
@Override

src/main/java/com/fillmore_labs/talk/value/inheritance/lombok/MovieTicket.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,5 @@
2323
@Value
2424
public class MovieTicket {
2525
@NonNull String movieName;
26-
2726
long serial;
2827
}

src/main/java/com/fillmore_labs/talk/value/simple/autovalue/Person.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public static Builder builder() {
4646
/** Builder of a person instance. */
4747
@AutoValue.Builder
4848
public abstract static class Builder {
49-
5049
/**
5150
* Set the given name. Required.
5251
*

0 commit comments

Comments
 (0)