All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.regnosys.rosetta.tests.util.CustomConfigTestHelper.xtend Maven / Gradle / Ivy

There is a newer version: 9.29.0
Show newest version
package com.regnosys.rosetta.tests.util

import com.regnosys.rosetta.config.file.RosettaConfigurationFileProvider
import java.util.List
import java.util.HashMap
import com.google.inject.Injector
import com.regnosys.rosetta.RosettaRuntimeModule
import com.regnosys.rosetta.tests.RosettaInjectorProvider

class CustomConfigTestHelper {
	static def compileToClassesForModel(List> code,
		Class configurationFileProvider) {
		val codeGeneratorTestHelper = getCodeGeneratorTestHelper(configurationFileProvider)
		val generatedCode = newHashMap
		code.forEach[it.forEach[k, v|generatedCode.put(k, v)]]
		codeGeneratorTestHelper.compileToClasses(generatedCode)
	}

	static def generateCodeForModel(CharSequence model,
		Class configurationFileProvider) {
		val codeGeneratorTestHelper = getCodeGeneratorTestHelper(configurationFileProvider)
		codeGeneratorTestHelper.generateCode(model)
	}

	static def generateCodeForModel(List models,
		Class configurationFileProvider) {
		val codeGeneratorTestHelper = getCodeGeneratorTestHelper(configurationFileProvider)
		codeGeneratorTestHelper.generateCode(models)
	}

	static private def CodeGeneratorTestHelper getCodeGeneratorTestHelper(
		Class configurationFileProvider) {
		val injector = getInjector(configurationFileProvider)
		injector.getInstance(CodeGeneratorTestHelper)
	}

	static private def Injector getInjector(Class configurationFileProvider) {
		val provider = createProvider(configurationFileProvider)
		provider.getInjector
	}

	static private def RosettaCustomConfigInjectorProvider createProvider(
		Class configurationFileProvider) {

		new RosettaCustomConfigInjectorProvider() {

			override RosettaRuntimeModule createRuntimeModule() {

				new RosettaRuntimeModule() {
					override ClassLoader bindClassLoaderToInstance() {
						RosettaInjectorProvider.getClassLoader()
					}

					def Class bindRosettaConfigurationFileProvider() {
						return configurationFileProvider
					}
				}
			}
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy