diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriter.java index 91819badcc..9f4d026b0f 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriter.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriter.java @@ -71,6 +71,7 @@ public class JavaSourceCodeWriter implements SourceCodeWriter { typeModifiers.put(Modifier::isStatic, "static"); typeModifiers.put(Modifier::isFinal, "final"); typeModifiers.put(Modifier::isStrict, "strictfp"); + typeModifiers.put(Modifier::isInterface, "interface"); TYPE_MODIFIERS = typeModifiers; Map, String> fieldModifiers = new LinkedHashMap<>(); fieldModifiers.put(Modifier::isPublic, "public"); @@ -121,7 +122,13 @@ private void writeTo(SourceStructure structure, JavaCompilationUnit compilationU for (JavaTypeDeclaration type : compilationUnit.getTypeDeclarations()) { writeAnnotations(writer, type, writer::println); writeModifiers(writer, TYPE_MODIFIERS, type.getModifiers()); - writer.print("class " + type.getName()); + + if (!Modifier.isInterface(type.getModifiers())) { + writer.print("class "); + } + + writer.print(type.getName()); + if (type.getExtends() != null) { writer.print(" extends " + getUnqualifiedName(type.getExtends())); } diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriterTests.java index 9f98121e7e..3a53a5618a 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/language/java/JavaSourceCodeWriterTests.java @@ -133,6 +133,16 @@ void shouldAddExtendsAndImplements() throws IOException { "class Test extends TestParent implements Interface1, Interface2 {", "", "}"); } + @Test + void shouldAddInterface() throws IOException { + JavaSourceCode sourceCode = new JavaSourceCode(); + JavaCompilationUnit compilationUnit = sourceCode.createCompilationUnit("com.example", "Test"); + JavaTypeDeclaration test = compilationUnit.createTypeDeclaration("Test"); + test.modifiers(Modifier.INTERFACE); + List lines = writeSingleType(sourceCode, "com/example/Test.java"); + assertThat(lines).containsExactly("package com.example;", "", "interface Test {", "", "}"); + } + @Test void method() throws IOException { JavaSourceCode sourceCode = new JavaSourceCode();