- [#4888] Add <serializablePojos/> to allow for POJOs not to be Serializable - [#7210] Add <serializableInterfaces/> to allow for interfaces not to be Serializable
This commit is contained in:
parent
b63f64e03b
commit
a1f9d3afbf
@ -75,8 +75,10 @@ abstract class AbstractGenerator implements Generator {
|
||||
boolean generatePojosEqualsAndHashCode = false;
|
||||
boolean generatePojosToString = true;
|
||||
boolean generateImmutablePojos = false;
|
||||
boolean generateSerializablePojos = true;
|
||||
boolean generateInterfaces = false;
|
||||
boolean generateImmutableInterfaces = false;
|
||||
boolean generateSerializableInterfaces = true;
|
||||
boolean generateDaos = false;
|
||||
boolean generateJPAAnnotations = false;
|
||||
String generateJPAVersion = "";
|
||||
@ -383,6 +385,16 @@ abstract class AbstractGenerator implements Generator {
|
||||
this.generateImmutablePojos = generateImmutablePojos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateSerializablePojos() {
|
||||
return generateSerializablePojos && generatePojos();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateSerializablePojos(boolean generateSerializablePojos) {
|
||||
this.generateSerializablePojos = generateSerializablePojos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateInterfaces() {
|
||||
return generateInterfaces || generateImmutableInterfaces;
|
||||
@ -403,6 +415,16 @@ abstract class AbstractGenerator implements Generator {
|
||||
this.generateImmutableInterfaces = generateImmutableInterfaces;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateSerializableInterfaces() {
|
||||
return generateSerializableInterfaces && generateInterfaces();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateSerializableInterfaces(boolean generateSerializableInterfaces) {
|
||||
this.generateSerializableInterfaces = generateSerializableInterfaces;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateDaos() {
|
||||
return generateDaos;
|
||||
|
||||
@ -607,10 +607,14 @@ public class GenerationTool {
|
||||
generator.setGeneratePojos(g.getGenerate().isPojos());
|
||||
if (g.getGenerate().isImmutablePojos() != null)
|
||||
generator.setGenerateImmutablePojos(g.getGenerate().isImmutablePojos());
|
||||
if (g.getGenerate().isSerializablePojos() != null)
|
||||
generator.setGenerateSerializablePojos(g.getGenerate().isSerializablePojos());
|
||||
if (g.getGenerate().isInterfaces() != null)
|
||||
generator.setGenerateInterfaces(g.getGenerate().isInterfaces());
|
||||
if (g.getGenerate().isImmutableInterfaces() != null)
|
||||
generator.setGenerateImmutableInterfaces(g.getGenerate().isImmutableInterfaces());
|
||||
if (g.getGenerate().isSerializableInterfaces() != null)
|
||||
generator.setGenerateSerializableInterfaces(g.getGenerate().isSerializableInterfaces());
|
||||
if (g.getGenerate().isDaos() != null)
|
||||
generator.setGenerateDaos(g.getGenerate().isDaos());
|
||||
if (g.getGenerate().isJpaAnnotations() != null)
|
||||
|
||||
@ -38,6 +38,8 @@
|
||||
|
||||
package org.jooq.util;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
/**
|
||||
@ -229,6 +231,16 @@ public interface Generator {
|
||||
*/
|
||||
void setGenerateImmutablePojos(boolean generateImmutablePojos);
|
||||
|
||||
/**
|
||||
* Whether generated POJO's should be {@link Serializable}.
|
||||
*/
|
||||
boolean generateSerializablePojos();
|
||||
|
||||
/**
|
||||
* Whether generated POJO's should be {@link Serializable}.
|
||||
*/
|
||||
void setGenerateSerializablePojos(boolean generateSerializablePojos);
|
||||
|
||||
/**
|
||||
* Whether interfaces should be generated to be implemented by records and
|
||||
* POJO's
|
||||
@ -251,6 +263,16 @@ public interface Generator {
|
||||
*/
|
||||
void setGenerateImmutableInterfaces(boolean generateImmutableInterfaces);
|
||||
|
||||
/**
|
||||
* Whether generated interfaces should extend {@link Serializable}.
|
||||
*/
|
||||
boolean generateSerializableInterfaces();
|
||||
|
||||
/**
|
||||
* Whether generated interfaces should extend {@link Serializable}.
|
||||
*/
|
||||
void setGenerateSerializableInterfaces(boolean generateSerializableInterfaces);
|
||||
|
||||
/**
|
||||
* Whether DAO's should be generated in addition to pojos
|
||||
*/
|
||||
|
||||
@ -289,17 +289,18 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy {
|
||||
// [#1243] All generation modes can accept interfaces
|
||||
Set<String> result = new LinkedHashSet<String>(delegate.getJavaClassImplements(definition, mode));
|
||||
|
||||
// [#1528] Generated interfaces (implemented by RECORD and POJO) are
|
||||
// always Serializable
|
||||
if (mode == Mode.INTERFACE) {
|
||||
// [#1528] [#7210] Generated interfaces (implemented by RECORD and POJO) are
|
||||
// Serializable by default
|
||||
if (mode == Mode.INTERFACE
|
||||
&& generator.generateSerializableInterfaces())
|
||||
result.add(Serializable.class.getName());
|
||||
}
|
||||
|
||||
// [#1528] POJOs only implement Serializable if they don't inherit
|
||||
// Serializable from INTERFACE already
|
||||
else if (mode == Mode.POJO && !generator.generateInterfaces()) {
|
||||
// [#1528] [#4888] POJOs only implement Serializable by default if they don't inherit
|
||||
// Serializable from INTERFACE already
|
||||
else if (mode == Mode.POJO
|
||||
&& generator.generateSerializablePojos()
|
||||
&& (!generator.generateInterfaces() || !generator.generateSerializableInterfaces()))
|
||||
result.add(Serializable.class.getName());
|
||||
}
|
||||
|
||||
return new ArrayList<String>(result);
|
||||
}
|
||||
|
||||
@ -1727,9 +1727,9 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
printTableJPAAnnotation(out, (TableDefinition) tableOrUDT);
|
||||
|
||||
if (scala)
|
||||
out.println("trait %s [[before=extends ][%s]] {", className, interfaces);
|
||||
out.println("trait %s[[before= extends ][%s]] {", className, interfaces);
|
||||
else
|
||||
out.println("public interface %s [[before=extends ][%s]] {", className, interfaces);
|
||||
out.println("public interface %s[[before= extends ][%s]] {", className, interfaces);
|
||||
|
||||
List<? extends TypedElementDefinition<?>> typedElements = getTypedElements(tableOrUDT);
|
||||
for (int i = 0; i < typedElements.size(); i++) {
|
||||
@ -3070,9 +3070,8 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
printTableJPAAnnotation(out, (TableDefinition) tableOrUDT);
|
||||
|
||||
int maxLength = 0;
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT)) {
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT))
|
||||
maxLength = Math.max(maxLength, out.ref(getJavaType(column.getType(resolver(Mode.POJO)), Mode.POJO)).length());
|
||||
}
|
||||
|
||||
if (scala) {
|
||||
out.println("%sclass %s(", (generateImmutablePojos() ? "case " : ""), className);
|
||||
@ -3092,7 +3091,10 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
else {
|
||||
out.println("public class %s[[before= extends ][%s]][[before= implements ][%s]] {", className, list(superName), interfaces);
|
||||
out.printSerial();
|
||||
|
||||
if (generateSerializablePojos() || generateSerializableInterfaces())
|
||||
out.printSerial();
|
||||
|
||||
out.println();
|
||||
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT)) {
|
||||
|
||||
@ -74,10 +74,14 @@ public class Generate implements Serializable
|
||||
protected Boolean pojosToString = true;
|
||||
@XmlElement(defaultValue = "false")
|
||||
protected Boolean immutablePojos = false;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean serializablePojos = true;
|
||||
@XmlElement(defaultValue = "false")
|
||||
protected Boolean interfaces = false;
|
||||
@XmlElement(defaultValue = "false")
|
||||
protected Boolean immutableInterfaces = false;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean serializableInterfaces = true;
|
||||
@XmlElement(defaultValue = "false")
|
||||
protected Boolean daos = false;
|
||||
@XmlElement(defaultValue = "false")
|
||||
@ -640,6 +644,30 @@ public class Generate implements Serializable
|
||||
this.immutablePojos = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate serializable POJOs.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isSerializablePojos() {
|
||||
return serializablePojos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the serializablePojos property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setSerializablePojos(Boolean value) {
|
||||
this.serializablePojos = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generated interfaces to be implemented by records and/or POJOs.
|
||||
*
|
||||
@ -688,6 +716,30 @@ public class Generate implements Serializable
|
||||
this.immutableInterfaces = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate serializable interfaces.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isSerializableInterfaces() {
|
||||
return serializableInterfaces;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the serializableInterfaces property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setSerializableInterfaces(Boolean value) {
|
||||
this.serializableInterfaces = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate DAOs.
|
||||
*
|
||||
@ -1726,6 +1778,11 @@ public class Generate implements Serializable
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withSerializablePojos(Boolean value) {
|
||||
setSerializablePojos(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withInterfaces(Boolean value) {
|
||||
setInterfaces(value);
|
||||
return this;
|
||||
@ -1736,6 +1793,11 @@ public class Generate implements Serializable
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withSerializableInterfaces(Boolean value) {
|
||||
setSerializableInterfaces(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withDaos(Boolean value) {
|
||||
setDaos(value);
|
||||
return this;
|
||||
@ -1989,12 +2051,18 @@ public class Generate implements Serializable
|
||||
sb.append("<immutablePojos>");
|
||||
sb.append(immutablePojos);
|
||||
sb.append("</immutablePojos>");
|
||||
sb.append("<serializablePojos>");
|
||||
sb.append(serializablePojos);
|
||||
sb.append("</serializablePojos>");
|
||||
sb.append("<interfaces>");
|
||||
sb.append(interfaces);
|
||||
sb.append("</interfaces>");
|
||||
sb.append("<immutableInterfaces>");
|
||||
sb.append(immutableInterfaces);
|
||||
sb.append("</immutableInterfaces>");
|
||||
sb.append("<serializableInterfaces>");
|
||||
sb.append(serializableInterfaces);
|
||||
sb.append("</serializableInterfaces>");
|
||||
sb.append("<daos>");
|
||||
sb.append(daos);
|
||||
sb.append("</daos>");
|
||||
@ -2304,6 +2372,15 @@ public class Generate implements Serializable
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (serializablePojos == null) {
|
||||
if (other.serializablePojos!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!serializablePojos.equals(other.serializablePojos)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (interfaces == null) {
|
||||
if (other.interfaces!= null) {
|
||||
return false;
|
||||
@ -2322,6 +2399,15 @@ public class Generate implements Serializable
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (serializableInterfaces == null) {
|
||||
if (other.serializableInterfaces!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!serializableInterfaces.equals(other.serializableInterfaces)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (daos == null) {
|
||||
if (other.daos!= null) {
|
||||
return false;
|
||||
@ -2691,8 +2777,10 @@ public class Generate implements Serializable
|
||||
result = ((prime*result)+((pojosEqualsAndHashCode == null)? 0 :pojosEqualsAndHashCode.hashCode()));
|
||||
result = ((prime*result)+((pojosToString == null)? 0 :pojosToString.hashCode()));
|
||||
result = ((prime*result)+((immutablePojos == null)? 0 :immutablePojos.hashCode()));
|
||||
result = ((prime*result)+((serializablePojos == null)? 0 :serializablePojos.hashCode()));
|
||||
result = ((prime*result)+((interfaces == null)? 0 :interfaces.hashCode()));
|
||||
result = ((prime*result)+((immutableInterfaces == null)? 0 :immutableInterfaces.hashCode()));
|
||||
result = ((prime*result)+((serializableInterfaces == null)? 0 :serializableInterfaces.hashCode()));
|
||||
result = ((prime*result)+((daos == null)? 0 :daos.hashCode()));
|
||||
result = ((prime*result)+((jpaAnnotations == null)? 0 :jpaAnnotations.hashCode()));
|
||||
result = ((prime*result)+((jpaVersion == null)? 0 :jpaVersion.hashCode()));
|
||||
|
||||
@ -908,6 +908,10 @@ jOOQ version used for source code]]></jxb:javadoc></jxb:property></appinfo></ann
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="serializablePojos" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generated interfaces to be implemented by records and/or POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
@ -916,6 +920,10 @@ jOOQ version used for source code]]></jxb:javadoc></jxb:property></appinfo></ann
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="serializableInterfaces" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate DAOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user