33namespace Morebec \ObjectGenerator \Domain ;
44
55
6- use Morebec \ObjectGenerator \Domain \Compiler \Compiler ;
6+ use Morebec \ObjectGenerator \Domain \Compiler \PHPObjectCompiler ;
77use Morebec \ObjectGenerator \Domain \Definition \ObjectDefinition ;
88use Morebec \ObjectGenerator \Domain \Definition \Schema \ObjectDefinitionSchema ;
99use Morebec \ObjectGenerator \Domain \Loader \DefinitionLoaderInterface ;
1010use Morebec \ObjectGenerator \Domain \ObjectReferenceDumper \ObjectReferenceDumperInterface ;
11+ use Morebec \ObjectGenerator \Domain \Validation \ObjectSchemaValidator ;
1112use Morebec \ValueObjects \File \File ;
1213use Symfony \Component \Config \Definition \Processor ;
1314
@@ -33,6 +34,11 @@ public function __construct(
3334 $ this ->dumper = $ dumper ;
3435 }
3536
37+ /**
38+ * @param File $file
39+ * @return ObjectGenerationResult
40+ * @throws Exception\FileNotFoundException
41+ */
3642 public function generateFile (File $ file ): ObjectGenerationResult
3743 {
3844 // Load definition data schema
@@ -42,34 +48,37 @@ public function generateFile(File $file): ObjectGenerationResult
4248 $ result ->setInitialSchema ($ data );
4349 return $ result ;
4450 }
45-
51+
52+ /**
53+ * @param array $schema
54+ * @return ObjectGenerationResult
55+ */
4656 public function generateFromArraySchema (array $ schema ): ObjectGenerationResult
4757 {
48- $ typeName = array_key_first ($ schema );
49- $ objectSchema = new ObjectDefinitionSchema ($ typeName );
58+ $ objectName = array_key_first ($ schema );
5059
51- // Validate schema against schema validator
52- $ processor = new Processor ();
53- $ validatedArraySchema = $ processor ->processConfiguration (
54- $ objectSchema ,
55- $ schema
56- );
60+ $ validator = new ObjectSchemaValidator ();
61+ $ validatedArraySchema = $ validator ->validate ($ objectName , $ schema );
5762
5863 // Create definition object
5964 $ definition = ObjectDefinition::createFromArray (
60- $ typeName ,
65+ $ objectName ,
6166 $ validatedArraySchema
6267 );
6368
6469 $ result = $ this ->generateFromObjectDefinition ($ definition );
6570 $ result ->setValidatedSchema ($ schema );
6671 return $ result ;
6772 }
68-
73+
74+ /**
75+ * @param ObjectDefinition $definition
76+ * @return ObjectGenerationResult
77+ */
6978 public function generateFromObjectDefinition (ObjectDefinition $ definition ): ObjectGenerationResult
7079 {
7180 // Compile Schema into class representation
72- $ compiler = new Compiler ();
81+ $ compiler = new PHPObjectCompiler ();
7382 $ object = $ compiler ->compile ($ definition );
7483
7584 // Generate code
0 commit comments