1717
1818import io .flamingock .api .template .AbstractChangeTemplate ;
1919import io .flamingock .api .template .ChangeTemplate ;
20- import io .flamingock .importer .ImporterTemplateFactory ;
21- import io .flamingock .importer .mongodb .MongoDBImporterChangeTemplate ;
2220import io .flamingock .internal .common .core .metadata .FlamingockMetadata ;
2321import io .flamingock .internal .common .core .preview .CodePreviewChange ;
2422import io .flamingock .internal .common .core .preview .PreviewMethod ;
4038import io .flamingock .internal .core .task .loaded .TemplateLoadedChange ;
4139import io .flamingock .internal .util .log .FlamingockLoggerFactory ;
4240import org .graalvm .nativeimage .hosted .Feature ;
43- import org .graalvm .nativeimage .hosted .RuntimeReflection ;
4441import org .graalvm .nativeimage .hosted .RuntimeClassInitialization ;
42+ import org .graalvm .nativeimage .hosted .RuntimeReflection ;
4543import org .slf4j .LoggerFactory ;
4644
4745import java .nio .charset .CoderResult ;
@@ -52,17 +50,6 @@ public class RegistrationFeature implements Feature {
5250
5351 private static final Logger logger = new Logger ();
5452
55- @ Override
56- public void beforeAnalysis (BeforeAnalysisAccess access ) {
57- logger .startProcess ("GraalVM classes registration and initialization" );
58- initializeInternalClassesAtBuildTime ();
59- initializeExternalClassesAtBuildTime ();
60- registerInternalClasses ();
61- registerTemplates ();
62- registerUserClasses ();
63- logger .finishedProcess ("GraalVM classes registration and initialization" );
64- }
65-
6653 private static void registerInternalClasses () {
6754 logger .startRegistrationProcess ("internal classes" );
6855
@@ -91,7 +78,6 @@ private static void registerInternalClasses() {
9178
9279 //others
9380 registerClassForReflection (CoderResult .class .getName ());
94- registerClassForReflection (ImporterTemplateFactory .class .getName ());
9581
9682
9783 logger .completedRegistrationProcess ("internal classes" );
@@ -103,10 +89,8 @@ private static void initializeInternalClassesAtBuildTime() {
10389 initializeClassAtBuildTime (AbstractLoadedChange .class );
10490 initializeClassAtBuildTime (TemplateLoadedChange .class );
10591 initializeClassAtBuildTime (ChangeTemplateManager .class );
106- initializeClassAtBuildTime (ImporterTemplateFactory .class );
10792 initializeClassAtBuildTime (RecoveryDescriptor .class );
10893 initializeClassAtBuildTime (FlamingockLoggerFactory .class );
109- initializeClassAtBuildTime (MongoDBImporterChangeTemplate .class );
11094 logger .completeInitializationProcess ("internal classes" );
11195 }
11296
@@ -116,27 +100,13 @@ private static void initializeExternalClassesAtBuildTime() {
116100 logger .completeInitializationProcess ("external classes" );
117101 }
118102
119-
120103 private static void registerUserClasses () {
121104 logger .startRegistrationProcess ("user classes" );
122105 List <String > classesToRegister = FileUtil .getClassesForRegistration ();
123106 classesToRegister .forEach (RegistrationFeature ::registerClassForReflection );
124107 logger .completedRegistrationProcess ("user classes" );
125108 }
126109
127- private void registerTemplates () {
128- logger .startRegistrationProcess ("templates" );
129- registerClassForReflection (ChangeTemplateManager .class );
130- registerClassForReflection (ChangeTemplate .class );
131- registerClassForReflection (AbstractChangeTemplate .class );
132- ChangeTemplateManager .getTemplates ().forEach (template -> {
133- registerClassForReflection (template .getClass ());
134- template .getReflectiveClasses ().forEach (RegistrationFeature ::registerClassForReflection );
135- });
136-
137- logger .completedRegistrationProcess ("templates" );
138- }
139-
140110 private static void registerClassForReflection (String className ) {
141111 try {
142112 registerClassForReflection (Class .forName (className ));
@@ -159,5 +129,29 @@ private static void initializeClassAtBuildTime(Class<?> clazz) {
159129 RuntimeClassInitialization .initializeAtBuildTime (clazz );
160130 }
161131
132+ @ Override
133+ public void beforeAnalysis (BeforeAnalysisAccess access ) {
134+ logger .startProcess ("GraalVM classes registration and initialization" );
135+ initializeInternalClassesAtBuildTime ();
136+ initializeExternalClassesAtBuildTime ();
137+ registerInternalClasses ();
138+ registerTemplates ();
139+ registerUserClasses ();
140+ logger .finishedProcess ("GraalVM classes registration and initialization" );
141+ }
142+
143+ private void registerTemplates () {
144+ logger .startRegistrationProcess ("templates" );
145+ registerClassForReflection (ChangeTemplateManager .class );
146+ registerClassForReflection (ChangeTemplate .class );
147+ registerClassForReflection (AbstractChangeTemplate .class );
148+ ChangeTemplateManager .getTemplates ().forEach (template -> {
149+ registerClassForReflection (template .getClass ());
150+ template .getReflectiveClasses ().forEach (RegistrationFeature ::registerClassForReflection );
151+ });
152+
153+ logger .completedRegistrationProcess ("templates" );
154+ }
155+
162156
163157}
0 commit comments