made API classes final

This commit is contained in:
Sander Hautvast 2020-11-16 17:50:08 +01:00
parent df5b271ef2
commit 3598ace9bf
9 changed files with 31 additions and 11 deletions

View file

@ -8,7 +8,7 @@ import java.util.*;
/**
* Models a constructor
*/
public class BeeConstructor extends CodeContainer {
public final class BeeConstructor extends CodeContainer {
private BeeConstructor(Set<MethodAccessFlags> accessFlags,
List<BeeParameter> formalParameters,

View file

@ -7,7 +7,10 @@ import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
public class BeeField {
/**
* Models a field in a BeeClass
*/
public final class BeeField {
private final Set<FieldAccessFlags> accessFlags = new HashSet<>();
private final Class<?> type;

View file

@ -7,6 +7,9 @@ import nl.sander.beejava.flags.MethodAccessFlags;
import java.util.*;
import java.util.stream.Collectors;
/**
* Models a method in a BeeClass
*/
public final class BeeMethod extends CodeContainer {
private final String name;

View file

@ -3,7 +3,7 @@ package nl.sander.beejava.api;
/**
* Contains the name of the package for a class
*/
public class BeePackage {
public final class BeePackage {
private final String name;

View file

@ -5,7 +5,7 @@ import java.util.Objects;
/**
* Models a formal parameter in a method declaration.
*/
public class BeeParameter {
public final class BeeParameter {
private final Class<?> type;
private final String name;

View file

@ -13,7 +13,7 @@ import java.util.Set;
* End users need to create an instance of this class (using the Builder) and add all fields, methods etc.
* Once created the BeeSource object is immutable.
*/
public class BeeSource {
public final class BeeSource {
private final Version classFileVersion;
private final BeePackage beePackage;
private final Set<ClassAccessFlags> accessFlags = new HashSet<>();

View file

@ -11,7 +11,7 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class CodeLine {
public final class CodeLine {
private final int linenumber;
private final Opcode opcode;
private Ref ref;

View file

@ -19,7 +19,7 @@ public class TestData {
.withAccessFlags(PUBLIC, SUPER)
.withSimpleName("EmptyBean")
.withSuperClass(Object.class) // Not mandatory, like in java sourcecode
.withConstructors(createConstructor()) // There's no default constructor in beejava. The user must always add them
.withConstructors(createDefaultConstructor()) // There's no default constructor in beejava. The user must always add them
.build();
}
@ -31,7 +31,7 @@ public class TestData {
.withSimpleName("EmptyBean")
.withSuperClass(Object.class) // Not mandatory, like in java sourcecode
.withInterfaces(Serializable.class)
.withConstructors(createConstructor()) // There's no default constructor in beejava. The user must always add them
.withConstructors(createDefaultConstructor()) // There's no default constructor in beejava. The user must always add them
.build();
}
@ -64,7 +64,7 @@ public class TestData {
.withPackage("nl.sander.beejava.test")
.withAccessFlags(PUBLIC, SUPER)
.withSimpleName("ClassWithReferences")
.withConstructors(createConstructor()) // There's no default constructor in beejava. The user must always add them
.withConstructors(createDefaultConstructor()) // There's no default constructor in beejava. The user must always add them
.withMethods(print1, print2)
.build();
}
@ -101,7 +101,7 @@ public class TestData {
.build();
}
private static BeeConstructor createConstructor() throws ClassNotFoundException {
public static BeeConstructor createDefaultConstructor() throws ClassNotFoundException {
return BeeConstructor.builder()
.withAccessFlags(MethodAccessFlags.PUBLIC)
.withCode(

View file

@ -5,10 +5,13 @@ import nl.sander.beejava.CompiledClass;
import nl.sander.beejava.Compiler;
import nl.sander.beejava.TestData;
import nl.sander.beejava.api.BeeSource;
import nl.sander.beejava.api.Version;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Constructor;
import static nl.sander.beejava.flags.ClassAccessFlags.PUBLIC;
import static nl.sander.beejava.flags.ClassAccessFlags.SUPER;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
@ -20,7 +23,7 @@ public class EmptyBeanTest {
@Test
public void testEmptyBean() throws Exception {
// Arrange
BeeSource emptyClass = TestData.createEmptyClass();
BeeSource emptyClass = createEmptyClass();
// Act
CompiledClass compiledClass = Compiler.compile(emptyClass);
@ -37,4 +40,15 @@ public class EmptyBeanTest {
assertNotNull(instance);
}
private BeeSource createEmptyClass() throws ClassNotFoundException {
return BeeSource.builder()
.withClassFileVersion(Version.V14)
.withPackage("nl.sander.beejava.test")
.withAccessFlags(PUBLIC, SUPER)
.withSimpleName("EmptyBean")
.withSuperClass(Object.class) // Not mandatory, like in java sourcecode
.withConstructors(TestData.createDefaultConstructor()) // There's no default constructor in beejava. The user must always add them
.build();
}
}