private <T> NodeInitializer extractNodeInitializer(NodeInitializerContext<T> context) { ModelSchema<T> schema = schemaStore.getSchema(context.getModelType()); for (NodeInitializerExtractionStrategy extractor : allStrategies) { NodeInitializer nodeInitializer = extractor.extractNodeInitializer(schema, context); if (nodeInitializer != null) { return nodeInitializer; } } throw canNotConstructTypeException(context); }
private ModelTypeInitializationException canNotConstructTypeException( NodeInitializerContext<?> context) { ImmutableSortedSet.Builder<ModelType<?>> constructibleTypes = ImmutableSortedSet.orderedBy(ModelTypes.displayOrder()); for (NodeInitializerExtractionStrategy extractor : additionalStrategies) { for (ModelType<?> constructibleType : extractor.supportedTypes()) { if (context.getConstraints().isSatisfiedBy(constructibleType)) { constructibleTypes.add(constructibleType); } } } return new ModelTypeInitializationException( context, schemaStore, ScalarTypes.TYPES, constructibleTypes.build()); }