| Change Log |
| ========== |
| |
| JavaPoet 1.12.0 *(2020-01-09)* |
| ----------------------------- |
| |
| * New: Add `JavaFile.writeToPath()` and `JavaFile.writeToFile()` methods that return paths to the |
| generated file as `Path` and `File` respectively. |
| * New: Add `TypeSpec.alwaysQualify()` API to avoid clashes involving nested type names. |
| * New: Add overloads accepting `CodeBlock`s to `MethodSpec`'s control flow methods. |
| * New: Make list fields of all `Builder` types mutable. |
| * New: Add `CodeBlock.clear()`. |
| * New: Allow passing a custom `Charset` to `JavaFile.writeTo()`. |
| * New: Improved performance of `ClassName.simpleNames()` by memoizing results. |
| * New: Significant performance improvements for `CodeWriter.resolve()` as all nested simple names |
| of a `TypeSpec` get pre-computed. |
| * New: Add `TypeName.Builder.setName()` to allow overriding names passed in the constructor. |
| * New: Add `TypeName.canonicalName()`. |
| * Fix: Use `\\R` instead of `\n` as line separator in `CodeWriter.emitAndIndent()`. |
| * Fix: Copy originating elements in `TypeSpec.toBuilder()`. |
| * Fix: Ensure trailing newlines in Javadocs and method bodies. |
| * Fix: Copy annotations when creating a `ParameterSpec` from a `VariableElement`. |
| * Fix: Properly handle classes located in empty packages in `ClassName`. |
| * Fix: Only allow `final` modifier on a `ParameterSpec`. |
| * 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_USE` annotations on each enclosing `ClassName`. |
| * 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: `$Z` as an optional newline (zero-width space) if a line may exceed 100 chars. |
| * New: `CodeBlock.join()` and `CodeBlock.joining()` let you join codeblocks by delimiters. |
| * New: Add `CodeBlock.Builder.isEmpty()`. |
| * New: `addStatement(CodeBlock)` overloads for `CodeBlock` and `MethodSpec`. |
| * 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()` and `TypeSpec.anonymousClassBuilder(CodeBlock)`. |
| |
| |
| JavaPoet 1.8.0 *(2016-11-09)* |
| ----------------------------- |
| |
| * New: Basic support for line wrapping. Use `$W` to 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 like `java.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 `TypeSpec` factory methods that take a `ClassName`. |
| * 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.Kind` enum public. This can be used to check if a `TypeSpec` is a class, |
| interface, enum, or annotation. |
| * Fix: Don’t break import resolution on annotated types. |
| * Fix: Forbid unexpected modifiers like `private` on annotation members. |
| * Fix: Deduplicate exceptions in `MethodSpec.Builder`. |
| * Fix: Treat `ErrorType` like a regular `DeclaredType` in `TypeName.get()`. This should make it |
| easier to write annotation processors. |
| |
| |
| JavaPoet 1.5.1 *(2016-01-10)* |
| ----------------------------- |
| |
| * Fix: Annotated `TypeName` instances are only equal if their annotations are equal. |
| |
| JavaPoet 1.5.0 *(2016-01-10)* |
| ----------------------------- |
| |
| * New: `import static`! See `JavaFile.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 `TypeVariableName` is part of `ParameterizedTypeName`. |
| * 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 `@Nullable` directly to |
| types. This works for both top-level types and type parameters as in `List<@Nullable String>`. |
| * New: `equals()` and `hashCode()` on `AnnotationSpec`, `CodeBlock`, `FieldSpec`, `JavaFile`, |
| `MethodSpec`, `ParameterSpec`, `TypeName`, and `TypeSpec`. |
| * New: `NameAllocator.clone()` to refine a NameAllocator for use in an inner scope code block. |
| * Fix: Don't stack overflow when `TypeVariableName` gets 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: `NameAllocator` API 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 `$1T` and `$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 `$T` and `$N`. |
| * New: `MethodSpec.varargs(boolean)` to generate varags methods. |
| * New: `AnnotationSpec.get()` and `MethodSpec.overriding()` to create annotations and methods from |
| the `javax.lang.model` API. |
| * New: `JavaFile.toJavaFileObject()`. |
| * New: Java 8 `DEFAULT` modifier. |
| * New: `toBuilder()` methods to build upon objects already constructed. |
| * New: Generate `@interface` annotation types. |
| * New: `TypeName.box()` and `TypeName.unbox()` convenience APIs. |
| * Fix: `nextControlFlow()` accepts arguments. |
| * Fix: Reject duplicate calls to set the superclass. |
| * Fix: `WildcardTypeName.get(WildcardType)` no longer throws a `NullPointerException`. |
| * 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 `.java` file 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: `StringLiteral` type which encapsulates the behavior of `stringLiteral`. |
| * 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: `emitEnumValue` variant 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.lang` in `compressType`. |
| |
| |
| JavaWriter 2.3.0 *(2013-11-24)* |
| ------------------------------- |
| |
| * New: Configurable indent level via `setIndent`. |
| * New: `beginConstructor` method is a semantically clearer alternative for constructors. |
| * New: `emitEnumValues` method emits a list of values followed by semicolon. |
| * `emitImports` now supports `Class` arguments 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)* |
| ------------------------------- |
| |
| * `setCompressingTypes` controls 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: `stringLiteral` now correctly handles escapes and control characters. |
| |
| |
| JavaWriter 2.1.0 *(2013-07-15)* |
| ------------------------------- |
| |
| * New: All methods now take a `Set` of `Modifier`s rather than an `int`. The `int` methods 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 `throws` clause 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 `type` API for helping build generic types. |
| * Minor performance improvements. |
| |
| |
| JavaWriter 1.0.1 *(2013-02-03)* |
| ------------------------------- |
| |
| * Expose `compressType` API. |
| |
| |
| JavaWriter 1.0.0 *(2013-02-01)* |
| ------------------------------- |
| |
| Initial release. |