You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
12 KiB
12 KiB
Change Log
JavaPoet 1.13.0 (2020-06-18)
- New: Add support for explicit receiver parameters.
- Fix: Don't copy parameter annotations when creating a
ParameterSpec.
JavaPoet 1.12.1 (2020-01-20)
- Fix: Ignore parameter annotations in
MethodSpec.overriding().
JavaPoet 1.12.0 (2020-01-09)
- New: Add
JavaFile.writeToPath()andJavaFile.writeToFile()methods that return paths to the generated file asPathandFilerespectively. - New: Add
TypeSpec.alwaysQualify()API to avoid clashes involving nested type names. - New: Add overloads accepting
CodeBlocks toMethodSpec's control flow methods. - New: Make list fields of all
Buildertypes mutable. - New: Add
CodeBlock.clear(). - New: Allow passing a custom
CharsettoJavaFile.writeTo(). - New: Improved performance of
ClassName.simpleNames()by memoizing results. - New: Significant performance improvements for
CodeWriter.resolve()as all nested simple names of aTypeSpecget pre-computed. - New: Add
TypeName.Builder.setName()to allow overriding names passed in the constructor. - New: Add
TypeName.canonicalName(). - Fix: Use
\\Rinstead of\nas line separator inCodeWriter.emitAndIndent(). - Fix: Copy originating elements in
TypeSpec.toBuilder(). - Fix: Ensure trailing newlines in Javadocs and method bodies.
- Fix: Copy annotations when creating a
ParameterSpecfrom aVariableElement. - Fix: Properly handle classes located in empty packages in
ClassName. - Fix: Only allow
finalmodifier on aParameterSpec. - Fix: Use fully-qualified names for type names that are masked by type variable names.
JavaPoet 1.11.1 (2018-05-16)
- Fix: JavaPoet 1.11 had a regression where
TypeName.get()would throw on error types, masking other errors in an annotation processing round. This is fixed with a test to prevent future regressions!
JavaPoet 1.11.0 (2018-04-29)
- New: Support
TYPE_USEannotations on each enclosingClassName. - New: Work around a compiler bug in
TypeName.get(TypeElement). There was a problem getting an element's kind when building from source ABIs.
JavaPoet 1.10.0 (2018-01-27)
- JavaPoet now requires Java 8 or newer.
- New:
$Zas an optional newline (zero-width space) if a line may exceed 100 chars. - New:
CodeBlock.join()andCodeBlock.joining()let you join codeblocks by delimiters. - New: Add
CodeBlock.Builder.isEmpty(). - New:
addStatement(CodeBlock)overloads forCodeBlockandMethodSpec. - Fix: Include annotations when emitting type variables.
- Fix: Use the right imports for annotated type parameters.
- Fix: Don't incorrectly escape classnames that start with
$.
JavaPoet 1.9.0 (2017-05-13)
- Fix: Don't emit incorrect code when the declared type's signature references another type with the same simple name.
- Fix: Support anonymous inner classes in
ClassName.get(). - New:
MethodSpec.Builder.addNamedCode()andTypeSpec.anonymousClassBuilder(CodeBlock).
JavaPoet 1.8.0 (2016-11-09)
-
New: Basic support for line wrapping. Use
$Wto insert a Wrappable Whitespace character. It'll emit either a single space or a newline with appropriate indentation. -
New: Named arguments in
CodeBlock. These are intended to make larger code snippets easier to read:Map<String, Object> map = new LinkedHashMap<>(); map.put("count", 3); map.put("greeting", "Hello, "); map.put("system", System.class); String template = "" + "for (int i = 0; i < $count:L; i++) {\n" + " $system:T.out.println($greeting:S + list.get(i));\n" + "}\n"; CodeBlock.Builder builder = CodeBlock.builder(); builder.addNamed(template, map); -
New:
addJavadoc(CodeBlock)overloads for TypeSpec, MethodSpec, and FieldSpec. -
New:
MethodSpec.addComment()makes it easy to add a// single-line comment. -
New:
ClassName.getReflectionName()returns a string likejava.util.Map$Entry. -
Fix: Always write UTF-8. Previously JavaPoet would use the system default charset which was potentially inconsistent across environments.
-
Fix: Permit (constant) fields to be defined in annotation types.
JavaPoet 1.7.0 (2016-04-26)
- New: Support parameterized types that enclose other types, like
Outer<String>.Inner. - New:
TypeName.isBoxedPrimitive().
JavaPoet 1.6.1 (2016-03-21)
- Fix: Double quotes and backslashes in string literals were not properly quoted in 1.6.0. This is now fixed.
JavaPoet 1.6.0 (2016-03-19)
- New: Revive
CodeBlock.of(), a handy factory method for building code blocks. - New: Add
TypeSpecfactory methods that take aClassName. - New:
TypeName.annotated()adds an annotation to a type. - New:
TypeVariableName.withBounds()adds bounds to a type variable. - New:
TypeSpec.Builder.addInitializerBlock()adds an instance initializer. - Fix: Make
TypeSpec.Kindenum public. This can be used to check if aTypeSpecis a class, interface, enum, or annotation. - Fix: Don’t break import resolution on annotated types.
- Fix: Forbid unexpected modifiers like
privateon annotation members. - Fix: Deduplicate exceptions in
MethodSpec.Builder. - Fix: Treat
ErrorTypelike a regularDeclaredTypeinTypeName.get(). This should make it easier to write annotation processors.
JavaPoet 1.5.1 (2016-01-10)
- Fix: Annotated
TypeNameinstances are only equal if their annotations are equal.
JavaPoet 1.5.0 (2016-01-10)
- New:
import static! SeeJavaFile.Builder.addStaticImport()variants. - New: Overload
NameAllocator.newName(String)for creating a one-off name without a tag. - Fix: AnnotationSpec escapes character literals properly.
- Fix: Don't stack overflow when
TypeVariableNameis part ofParameterizedTypeName. - Fix: Reporting not used indexed arguments in like
add("$1S", "a", "b"). - Fix: Prevent import of types located in the default package, i.e. have no package name.
JavaPoet 1.4.0 (2015-11-13)
- New:
AnnotationSpec.get(Annotation). - New: Type annotations!
TypeName.annotated()can attach annotations like@Nullabledirectly to types. This works for both top-level types and type parameters as inList<@Nullable String>. - New:
equals()andhashCode()onAnnotationSpec,CodeBlock,FieldSpec,JavaFile,MethodSpec,ParameterSpec,TypeName, andTypeSpec. - New:
NameAllocator.clone()to refine a NameAllocator for use in an inner scope code block. - Fix: Don't stack overflow when
TypeVariableNamegets a self-referential type. - Fix: Better handling of name collisions on imports. Previously JavaPoet did the wrong thing when a referenced type and a nested types had the same name.
JavaPoet 1.3.0 (2015-09-20)
- New:
NameAllocatorAPI makes it easy to declare non-conflicting names. - New: Support annotations on enum values.
- Fix: Avoid infinite recursion in
TypeName.get(TypeMirror). - Fix: Use qualified name for conflicting simple names in the same file.
- Fix: Better messages for parameter indexing errors.
JavaPoet 1.2.0 (2015-07-04)
- New: Arguments may have positional indexes like
$1Tand$2N. Indexes can be used to refer to the same argument multiple times in a single format string. - New: Permit Javadoc on enum constants.
- New: Class initializer blocks with
addStaticBlock(). - Fix:
MethodSpec.overriding()retains annotations.
JavaPoet 1.1.0 (2015-05-25)
- New: Eager validation of argument types like
$Tand$N. - New:
MethodSpec.varargs(boolean)to generate varags methods. - New:
AnnotationSpec.get()andMethodSpec.overriding()to create annotations and methods from thejavax.lang.modelAPI. - New:
JavaFile.toJavaFileObject(). - New: Java 8
DEFAULTmodifier. - New:
toBuilder()methods to build upon objects already constructed. - New: Generate
@interfaceannotation types. - New:
TypeName.box()andTypeName.unbox()convenience APIs. - Fix:
nextControlFlow()accepts arguments. - Fix: Reject duplicate calls to set the superclass.
- Fix:
WildcardTypeName.get(WildcardType)no longer throws aNullPointerException. - Fix: Don't allow double field initialization.
JavaPoet 1.0.0 (2015-01-28)
- This update is a complete rewrite. The project name is now
javapoet. We renamed the it so you can simultaneously use the old JavaWriter API and our new builder-based APIs in one project. - Immutable value objects and builders. Instead of streaming the
.javafile from top to bottom, you now define members in whatever way is convenient. - We now use our own models for type names.
- Imports are now added automatically.
JavaWriter 2.5.1 (2014-12-03)
- New:
StringLiteraltype which encapsulates the behavior ofstringLiteral. - Fix: Use canonical name when emitting a class import.
- Fix: Apply type compression to varargs and array types.
- Fix: Restore binary compatibility with pre-2.5 versions.
JavaWriter 2.5.0 (2014-04-18)
- New: Methods in interfaces will always have no body declaration.
- New: Control flow begin declaration now supports String format arguments.
- Fix: Truncate any generic type when emitting constructors.
- Fix: Do not emit trailing whitespace after '=' at end-of-line.
JavaWriter 2.4.0 (2014-01-10)
- New: Properly indent hanging lines in field initializers.
- New:
emitEnumValuevariant which exposes a boolean of whether the current value is the last.
JavaWriter 2.3.1 (2013-12-16)
- Fix: Properly handle subpackages of
java.langincompressType.
JavaWriter 2.3.0 (2013-11-24)
- New: Configurable indent level via
setIndent. - New:
beginConstructormethod is a semantically clearer alternative for constructors. - New:
emitEnumValuesmethod emits a list of values followed by semicolon. emitImportsnow supportsClassarguments directly.- Previously-deprecated,
int-based modifier methods have been removed.
JavaWriter 2.2.1 (2013-10-23)
- Fix: Do not emit trailing whitespace for empty Javadoc lines.
JavaWriter 2.2.0 (2013-09-25)
setCompressingTypescontrols whether types are emitted as fully-qualified or not.
JavaWriter 2.1.2 (2013-08-23)
- Attempt to keep annotations on a single line.
JavaWriter 2.1.1 (2013-07-23)
- Fix:
stringLiteralnow correctly handles escapes and control characters.
JavaWriter 2.1.0 (2013-07-15)
- New: All methods now take a
SetofModifiers rather than anint. Theintmethods are now deprecated for removal in JavaPoet 1.0. - Annotations with a single "value" attribute will now omit the key.
JavaWriter 2.0.1 (2013-06-17)
- Correct casing of
emitSingleLineComment.
JavaWriter 2.0.0 (2013-06-06)
- Package name is now
com.squareup.javawriter. - Support declaring
throwsclause on methods.
JavaWriter 1.0.5 (2013-05-08)
- Fix: Fully qualify types whose simple name matches an import.
JavaWriter 1.0.4 (2013-03-15)
- Fix: Static import emit now properly supports method imports.
JavaWriter 1.0.3 (2013-02-21)
- Add support for emitting static imports.
JavaWriter 1.0.2 (2013-02-11)
- Add
typeAPI for helping build generic types. - Minor performance improvements.
JavaWriter 1.0.1 (2013-02-03)
- Expose
compressTypeAPI.
JavaWriter 1.0.0 (2013-02-01)
Initial release.