├── .DS_Store
├── fakeLombok
├── .DS_Store
├── fakeLombok.iml
├── target
│ ├── fakeLombok-1.0.jar
│ ├── classes
│ │ ├── META-INF
│ │ │ └── services
│ │ │ │ └── javax.annotation.processing.Processor
│ │ └── me
│ │ │ └── maru
│ │ │ ├── anno
│ │ │ ├── Get.class
│ │ │ └── Set.class
│ │ │ └── processor
│ │ │ ├── GetProcessor$1.class
│ │ │ ├── GetProcessor.class
│ │ │ ├── SetProcessor$1.class
│ │ │ ├── SetProcessor.class
│ │ │ ├── GetProcessor$1$1.class
│ │ │ └── SetProcessor$1$1.class
│ ├── maven-archiver
│ │ └── pom.properties
│ └── maven-status
│ │ └── maven-compiler-plugin
│ │ └── compile
│ │ └── default-compile
│ │ ├── createdFiles.lst
│ │ └── inputFiles.lst
├── src
│ └── main
│ │ └── java
│ │ └── me
│ │ └── maru
│ │ ├── anno
│ │ ├── Set.java
│ │ └── Get.java
│ │ └── processor
│ │ ├── SetProcessor.java
│ │ └── GetProcessor.java
└── pom.xml
├── annoTest
├── annoTest.iml
├── target
│ ├── maven-status
│ │ └── maven-compiler-plugin
│ │ │ ├── testCompile
│ │ │ └── default-testCompile
│ │ │ │ ├── createdFiles.lst
│ │ │ │ └── inputFiles.lst
│ │ │ └── compile
│ │ │ └── default-compile
│ │ │ ├── createdFiles.lst
│ │ │ └── inputFiles.lst
│ ├── annoTest-1.0-SNAPSHOT.jar
│ ├── classes
│ │ └── org
│ │ │ └── example
│ │ │ ├── App.class
│ │ │ └── Car.class
│ ├── test-classes
│ │ └── org
│ │ │ └── example
│ │ │ └── AppTest.class
│ └── maven-archiver
│ │ └── pom.properties
├── src
│ ├── main
│ │ └── java
│ │ │ └── org
│ │ │ └── example
│ │ │ ├── Car.java
│ │ │ └── App.java
│ └── test
│ │ └── java
│ │ └── org
│ │ └── example
│ │ └── FakeLombokTest.java
└── pom.xml
└── README.md
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/.DS_Store
--------------------------------------------------------------------------------
/fakeLombok/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/.DS_Store
--------------------------------------------------------------------------------
/annoTest/annoTest.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/fakeLombok/fakeLombok.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/fakeLombok/target/fakeLombok-1.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/fakeLombok-1.0.jar
--------------------------------------------------------------------------------
/annoTest/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst:
--------------------------------------------------------------------------------
1 | org/example/AppTest.class
2 |
--------------------------------------------------------------------------------
/annoTest/target/annoTest-1.0-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/annoTest/target/annoTest-1.0-SNAPSHOT.jar
--------------------------------------------------------------------------------
/annoTest/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:
--------------------------------------------------------------------------------
1 | org/example/App.class
2 | org/example/Car.class
3 |
--------------------------------------------------------------------------------
/annoTest/target/classes/org/example/App.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/annoTest/target/classes/org/example/App.class
--------------------------------------------------------------------------------
/annoTest/target/classes/org/example/Car.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/annoTest/target/classes/org/example/Car.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/META-INF/services/javax.annotation.processing.Processor:
--------------------------------------------------------------------------------
1 | me.maru.processor.GetProcessor
2 | me.maru.processor.SetProcessor
3 |
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/anno/Get.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/anno/Get.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/anno/Set.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/anno/Set.class
--------------------------------------------------------------------------------
/annoTest/target/test-classes/org/example/AppTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/annoTest/target/test-classes/org/example/AppTest.class
--------------------------------------------------------------------------------
/fakeLombok/target/maven-archiver/pom.properties:
--------------------------------------------------------------------------------
1 | #Generated by Maven
2 | #Fri Feb 05 21:52:39 KST 2021
3 | version=1.0
4 | groupId=me.maru
5 | artifactId=fakeLombok
6 |
--------------------------------------------------------------------------------
/annoTest/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst:
--------------------------------------------------------------------------------
1 | /Users/lee-maru/Desktop/Study/src/test/java/org/example/AppTest.java
2 |
--------------------------------------------------------------------------------
/annoTest/target/maven-archiver/pom.properties:
--------------------------------------------------------------------------------
1 | #Generated by Maven
2 | #Fri Feb 05 22:38:54 KST 2021
3 | version=1.0-SNAPSHOT
4 | groupId=org.example
5 | artifactId=annoTest
6 |
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/GetProcessor$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/GetProcessor$1.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/GetProcessor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/GetProcessor.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/SetProcessor$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/SetProcessor$1.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/SetProcessor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/SetProcessor.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/GetProcessor$1$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/GetProcessor$1$1.class
--------------------------------------------------------------------------------
/fakeLombok/target/classes/me/maru/processor/SetProcessor$1$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lee-maru/fakeLombok/HEAD/fakeLombok/target/classes/me/maru/processor/SetProcessor$1$1.class
--------------------------------------------------------------------------------
/annoTest/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:
--------------------------------------------------------------------------------
1 | /Users/lee-maru/Desktop/Study/src/main/java/org/example/Car.java
2 | /Users/lee-maru/Desktop/Study/src/main/java/org/example/App.java
3 |
--------------------------------------------------------------------------------
/annoTest/src/main/java/org/example/Car.java:
--------------------------------------------------------------------------------
1 | package org.example;
2 |
3 | import me.maru.anno.Get;
4 | import me.maru.anno.Set;
5 |
6 | @Get @Set
7 | public class Car {
8 | private String name = "로드스터 2";
9 |
10 | private String company = "테슬라";
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/annoTest/src/main/java/org/example/App.java:
--------------------------------------------------------------------------------
1 | package org.example;
2 |
3 | import me.maru.anno.Get;
4 | import me.maru.anno.Set;
5 |
6 | /**
7 | * Hello world!
8 | *
9 | */
10 | @Get @Set
11 | public class App
12 | {
13 |
14 | public static void main(String[] args) {
15 | Car car1 = new Car();
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fakeLombok/src/main/java/me/maru/anno/Set.java:
--------------------------------------------------------------------------------
1 | package me.maru.anno;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.TYPE)
9 | @Retention(RetentionPolicy.SOURCE)
10 | public @interface Set {
11 | }
12 |
--------------------------------------------------------------------------------
/fakeLombok/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:
--------------------------------------------------------------------------------
1 | me/maru/processor/GetProcessor$1.class
2 | me/maru/anno/Get.class
3 | me/maru/anno/Set.class
4 | me/maru/processor/GetProcessor$1$1.class
5 | me/maru/processor/GetProcessor.class
6 | me/maru/processor/SetProcessor.class
7 | META-INF/services/javax.annotation.processing.Processor
8 | me/maru/processor/SetProcessor$1.class
9 | me/maru/processor/SetProcessor$1$1.class
10 |
--------------------------------------------------------------------------------
/fakeLombok/src/main/java/me/maru/anno/Get.java:
--------------------------------------------------------------------------------
1 | package me.maru.anno;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * Fake lombok :
7 | * 1. 클래스 선언부 위로 선언할 시, 클래스 안에있는
8 | * 필드를 모두 인식하여, 바이트코드에서 getter 메서드를 자동생성
9 | * 2. @Get 메서드는 추 후 문제가 될 수 있으며, openApi 를 사용하여 개발한 것이
10 | * 아니라는점을 알고 사용하시길 바랍니다.
11 | *
12 | * @author maru
13 | * @since 1.0
14 | */
15 | @Documented
16 | @Target(ElementType.TYPE)
17 | @Retention(RetentionPolicy.SOURCE)
18 | public @interface Get {
19 | }
20 |
--------------------------------------------------------------------------------
/fakeLombok/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:
--------------------------------------------------------------------------------
1 | /Users/lee-maru/Downloads/projects-master/annotation-processor/fakeLombok/src/main/java/me/maru/anno/Get.java
2 | /Users/lee-maru/Downloads/projects-master/annotation-processor/fakeLombok/src/main/java/me/maru/processor/GetProcessor.java
3 | /Users/lee-maru/Downloads/projects-master/annotation-processor/fakeLombok/src/main/java/me/maru/anno/Set.java
4 | /Users/lee-maru/Downloads/projects-master/annotation-processor/fakeLombok/src/main/java/me/maru/processor/SetProcessor.java
5 |
--------------------------------------------------------------------------------
/annoTest/src/test/java/org/example/FakeLombokTest.java:
--------------------------------------------------------------------------------
1 | package org.example;
2 |
3 | import org.junit.jupiter.api.DisplayName;
4 | import org.junit.jupiter.api.Test;
5 |
6 | import static org.assertj.core.api.Assertions.assertThat;
7 |
8 | class FakeLombokTest {
9 | // given
10 | Car car1 = new Car();
11 |
12 | @Test
13 | @DisplayName("getter 메소드 테스트")
14 | void testGetter(){
15 |
16 | //when
17 | String name = car1.getName();
18 | String company = car1.getCompany();
19 |
20 | //then
21 | assertThat(name).isEqualTo("로드스터 2");
22 | assertThat(company).isEqualTo("테슬라");
23 | }
24 |
25 | @Test
26 | @DisplayName("setter 메소드 테스트")
27 | void testSetter(){
28 |
29 | //when
30 | car1.setName("소나타");
31 | car1.setCompany("현대");
32 | String name = car1.getName();
33 | String company = car1.getCompany();
34 |
35 | //then
36 | assertThat(name).isEqualTo("소나타");
37 | assertThat(company).isEqualTo("현대");
38 | }
39 |
40 |
41 | }
--------------------------------------------------------------------------------
/fakeLombok/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | 4.0.0
6 |
7 | me.maru
8 | fakeLombok
9 | 1.0
10 | fakeLombok
11 |
12 |
13 | UTF-8
14 | 1.8
15 | 1.8
16 | 1.0-rc4
17 |
18 |
19 |
20 |
21 |
22 | com.google.auto.service
23 | auto-service
24 | ${auto-service.version}
25 | true
26 |
27 |
28 |
29 | com.github.olivergondza
30 | maven-jdk-tools-wrapper
31 | 0.1
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/annoTest/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | 4.0.0
6 |
7 | org.example
8 | annoTest
9 | 1.0-SNAPSHOT
10 |
11 | annoTest
12 |
13 |
14 | UTF-8
15 | 1.8
16 | 1.8
17 |
18 |
19 |
20 |
21 |
22 | me.maru
23 | fakeLombok
24 | 1.0
25 |
26 |
27 | org.junit.jupiter
28 | junit-jupiter
29 | RELEASE
30 | test
31 |
32 |
33 | org.assertj
34 | assertj-core-java8
35 | 1.0.0m1
36 | test
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/fakeLombok/src/main/java/me/maru/processor/SetProcessor.java:
--------------------------------------------------------------------------------
1 | package me.maru.processor;
2 |
3 | import com.google.auto.service.AutoService;
4 | import com.sun.source.tree.ClassTree;
5 | import com.sun.source.tree.CompilationUnitTree;
6 | import com.sun.source.util.TreePath;
7 | import com.sun.source.util.TreePathScanner;
8 | import com.sun.source.util.Trees;
9 | import com.sun.tools.javac.code.TypeTag;
10 | import com.sun.tools.javac.processing.JavacProcessingEnvironment;
11 | import com.sun.tools.javac.tree.JCTree;
12 | import com.sun.tools.javac.tree.TreeMaker;
13 | import com.sun.tools.javac.tree.TreeTranslator;
14 | import com.sun.tools.javac.util.Context;
15 | import com.sun.tools.javac.util.List;
16 | import com.sun.tools.javac.util.Names;
17 |
18 | import javax.annotation.processing.*;
19 | import javax.lang.model.SourceVersion;
20 | import javax.lang.model.element.Element;
21 | import javax.lang.model.element.TypeElement;
22 | import javax.tools.JavaFileObject;
23 | import java.util.Set;
24 |
25 | @SupportedAnnotationTypes("me.maru.anno.Set")
26 | @SupportedSourceVersion(SourceVersion.RELEASE_8)
27 | @AutoService(Processor.class)
28 | public class SetProcessor extends AbstractProcessor {
29 | private ProcessingEnvironment processingEnvironment;
30 | private Trees trees;
31 | private TreeMaker treeMaker;
32 | private Names names;
33 | private Context context;
34 |
35 | @Override
36 | public synchronized void init(ProcessingEnvironment processingEnv) {
37 | JavacProcessingEnvironment javacProcessingEnvironment = (JavacProcessingEnvironment) processingEnv;
38 | super.init(processingEnv);
39 | this.processingEnvironment = processingEnv;
40 | this.trees = Trees.instance(processingEnv);
41 | this.context = javacProcessingEnvironment.getContext();
42 | this.treeMaker = TreeMaker.instance(context);
43 | this.names = Names.instance(context);
44 | }
45 |
46 | @Override
47 | public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) {
48 | TreePathScanner