Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ enum State {
KT_CHECKCAST, // optional kotlin state
KT_LABEL, // optional kotlin state
EMPTY,
GETFIELD,
MAYBE_UNSUPPORTED
}

Expand Down Expand Up @@ -222,15 +223,18 @@ boolean consumeVisitFieldInsn(int opcode, String owner, String name, String desc
}
}
flush();
if (opcode == GETFIELD) {
state = State.GETFIELD;
}
return false;
}

/**
* Return true when a OneToMany or ManyToMany is not initialised in a supported manor.
*/
private boolean unsupportedInitialisation() {
if (state == State.ALOAD) {
// allow constructor initialisation of a OneToMany
if (state == State.ALOAD || state == State.GETFIELD) {
// allow constructor initialisation of a OneToMany via constructor arg or builder
return false;
}
return state == State.MAYBE_UNSUPPORTED
Expand Down
10 changes: 10 additions & 0 deletions test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
</dependency>
</dependencies>

<build>
Expand All @@ -104,6 +109,11 @@
<version>3.11.0</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
</path>
<path>
<groupId>io.ebean</groupId>
<artifactId>querybean-generator</artifactId>
Expand Down
15 changes: 15 additions & 0 deletions test/src/test/java/test/model/lombok/App.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package test.model.lombok;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class App {

@Id
long id;

@Column
String name;
}
133 changes: 133 additions & 0 deletions test/src/test/java/test/model/lombok/Msock.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package test.model.lombok;

import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.Table;
import lombok.Generated;

import java.util.List;

@Entity
@Table(name = "stock")
public class Msock {

private String name;
private String code;
@ManyToMany(fetch = FetchType.LAZY)
private List<App> myapps;

@Generated
public Msock() {
}

@Generated
protected Msock(Msock.StockBuilder<?, ?> b) {
this.name = b.name;
this.code = b.code;
this.myapps = b.apps;
}

@Generated
public Msock(String name, String code, List<App> apps) {
this.name = name;
this.code = code;
this.myapps = apps;
}

@Generated
public static Msock.StockBuilder<?, ?> builder() {
return new Msock.StockBuilderImpl();
}

@Generated
public String getName() {
return this.name;
}

@Generated
public void setName(String name) {
this.name = name;
}

@Generated
public String getCode() {
return this.code;
}

@Generated
public void setCode(String code) {
this.code = code;
}

@Generated
public List<App> getApps() {
return this.myapps;
}

@Generated
public void setApps(List<App> myapps) {
this.myapps = myapps;
}

@Generated
public abstract static class StockBuilder<C extends Msock, B extends Msock.StockBuilder<C, B>> {
@Generated
private String name;
@Generated
private String code;
@Generated
private List<App> apps;

public StockBuilder() {
}

@Generated
public B name(String name) {
this.name = name;
return this.self();
}

@Generated
public B code(String code) {
this.code = code;
return this.self();
}

@Generated
public B apps(List<App> apps) {
this.apps = apps;
return this.self();
}

@Generated
protected abstract B self();

@Generated
public abstract C build();

@Generated
public String toString() {
String var10000 = this.name;
return "Stock.StockBuilder(name=" + var10000 + ", code=" + this.code + ", apps=" + String.valueOf(this.apps) + ")";
}
}

@Generated
private static final class StockBuilderImpl extends Msock.StockBuilder<Msock, Msock.StockBuilderImpl> {
@Generated
private StockBuilderImpl() {
}

@Generated
protected StockBuilderImpl self() {
return this;
}

@Generated
public Msock build() {
return new Msock(this);
}
}
}