![JAR search and dependency download from the Maven repository](/logo.png)
com.regnosys.rosetta.tests.util.CodeGeneratorTestHelper Maven / Gradle / Ivy
package com.regnosys.rosetta.tests.util;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.regnosys.rosetta.generator.RosettaGenerator;
import com.regnosys.rosetta.generator.RosettaInternalGenerator;
import com.regnosys.rosetta.generator.java.RosettaJavaPackages;
import com.regnosys.rosetta.rosetta.RosettaModel;
import com.regnosys.rosetta.tests.compiler.InMemoryJavacCompiler;
import com.regnosys.rosetta.utils.ModelIdProvider;
import com.rosetta.model.lib.RosettaModelObject;
import com.rosetta.model.lib.RosettaModelObjectBuilder;
import com.rosetta.model.lib.meta.FieldWithMeta;
import com.rosetta.util.DottedPath;
import java.io.File;
import java.lang.reflect.Method;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import javax.inject.Inject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.generator.GeneratorContext;
import org.eclipse.xtext.util.CancelIndicator;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.eclipse.xtext.xbase.lib.StringExtensions;
import org.eclipse.xtext.xbase.testing.RegisteringFileSystemAccess;
@SuppressWarnings("all")
public class CodeGeneratorTestHelper {
@Inject
@Extension
private RosettaGenerator _rosettaGenerator;
@Inject
@Extension
private ModelHelper _modelHelper;
@Inject
@Extension
private ModelIdProvider _modelIdProvider;
public Map generateCode(final CharSequence model, final RosettaInternalGenerator generator) {
Map _xblockexpression = null;
{
final RegisteringFileSystemAccess fsa = new RegisteringFileSystemAccess();
final Resource eResource = this._modelHelper.parseRosettaWithNoErrors(model).eResource();
final Consumer _function = (RosettaModel it) -> {
DottedPath _dottedPath = this._modelIdProvider.toDottedPath(it);
final RosettaJavaPackages.RootPackage root = new RosettaJavaPackages.RootPackage(_dottedPath);
final String version = it.getVersion();
generator.generate(root, fsa, it.getElements(), version);
};
Iterables.filter(eResource.getContents(), RosettaModel.class).forEach(_function);
final Function1 _function_1 = (RegisteringFileSystemAccess.GeneratedFile it) -> {
String _javaClassName = it.getJavaClassName();
return Boolean.valueOf((_javaClassName != null));
};
final Function1 _function_2 = (RegisteringFileSystemAccess.GeneratedFile it) -> {
return it.getJavaClassName();
};
final Function1 _function_3 = (RegisteringFileSystemAccess.GeneratedFile it) -> {
return it.getContents().toString();
};
_xblockexpression = IterableExtensions.toMap(IterableExtensions.filter(fsa.getGeneratedFiles(), _function_1), _function_2, _function_3);
}
return _xblockexpression;
}
public HashMap generateCode(final CharSequence... models) {
HashMap _xblockexpression = null;
{
final Function1 _function = (RosettaModel it) -> {
return it.eResource();
};
final List eResources = ListExtensions.map(this._modelHelper.parseRosettaWithNoErrors(models), _function);
_xblockexpression = this.generateCode(eResources);
}
return _xblockexpression;
}
public HashMap generateCode(final CharSequence model) {
HashMap _xblockexpression = null;
{
final Resource eResource = this._modelHelper.parseRosettaWithNoErrors(model).eResource();
_xblockexpression = this.generateCode(Collections.unmodifiableList(CollectionLiterals.newArrayList(eResource)));
}
return _xblockexpression;
}
protected HashMap generateCode(final List resources) {
final RegisteringFileSystemAccess fsa = new RegisteringFileSystemAccess();
GeneratorContext _generatorContext = new GeneratorContext();
final Procedure1 _function = (GeneratorContext it) -> {
it.setCancelIndicator(CancelIndicator.NullImpl);
};
final GeneratorContext ctx = ObjectExtensions.operator_doubleArrow(_generatorContext, _function);
final ResourceSet resourceSet = IterableExtensions.head(resources).getResourceSet();
try {
this._rosettaGenerator.beforeAllGenerate(resourceSet, fsa, ctx);
final Consumer _function_1 = (Resource it) -> {
try {
this._rosettaGenerator.beforeGenerate(it, fsa, ctx);
this._rosettaGenerator.doGenerate(it, fsa, ctx);
} finally {
this._rosettaGenerator.afterGenerate(it, fsa, ctx);
}
};
resources.forEach(_function_1);
} finally {
this._rosettaGenerator.afterAllGenerate(resourceSet, fsa, ctx);
}
final HashMap generatedCode = CollectionLiterals.newHashMap();
final Consumer _function_1 = (RegisteringFileSystemAccess.GeneratedFile it) -> {
String _javaClassName = it.getJavaClassName();
boolean _tripleNotEquals = (_javaClassName != null);
if (_tripleNotEquals) {
generatedCode.put(it.getJavaClassName(), it.getContents().toString());
}
};
fsa.getGeneratedFiles().forEach(_function_1);
return generatedCode;
}
public HashMap generateCode(final RosettaModel model) {
HashMap _xblockexpression = null;
{
final Resource eResource = model.eResource();
_xblockexpression = this.generateCode(Collections.unmodifiableList(CollectionLiterals.newArrayList(eResource)));
}
return _xblockexpression;
}
public Map> compileToClasses(final Map code) {
return this.inMemoryCompileToClasses(code, this.getClass().getClassLoader());
}
public Map> compileJava8(final CharSequence model) {
Map> _xblockexpression = null;
{
final HashMap code = this.generateCode(model);
_xblockexpression = this.inMemoryCompileToClasses(code, this.getClass().getClassLoader());
}
return _xblockexpression;
}
public Enum> createEnumInstance(final Map> classes, final String className, final String enumValue) {
Enum> _xblockexpression = null;
{
RosettaJavaPackages.RootPackage _rootPackage = this._modelHelper.rootPackage();
String _plus = (_rootPackage + ".");
String _plus_1 = (_plus + className);
Class> _get = classes.get(_plus_1);
final Class extends Enum> myEnumClass = ((Class extends Enum>) _get);
Enum _valueOf = Enum.valueOf(myEnumClass, enumValue);
_xblockexpression = ((Enum>) _valueOf);
}
return _xblockexpression;
}
public RosettaModelObject createInstanceUsingBuilder(final Map> classes, final String className, final Map itemsToSet) {
return this.createInstanceUsingBuilder(classes, this._modelHelper.rootPackage(), className, itemsToSet);
}
public RosettaModelObject createInstanceUsingBuilder(final Map> classes, final RosettaJavaPackages.RootPackage namespace, final String className, final Map itemsToSet) {
return this.createInstanceUsingBuilder(classes, namespace, className, itemsToSet, ImmutableMap.>of());
}
public RosettaModelObject createInstanceUsingBuilder(final Map> classes, final String className, final Map itemsToSet, final Map> itemsToAddToList) {
return this.createInstanceUsingBuilder(classes, this._modelHelper.rootPackage(), className, itemsToSet, itemsToAddToList);
}
public RosettaModelObjectBuilder createBuilderInstance(final Map> classes, final RosettaJavaPackages.RootPackage namespace, final String className) {
try {
String _plus = (namespace + ".");
String _plus_1 = (_plus + className);
Object _invoke = classes.get(_plus_1).getMethod("builder").invoke(null);
return ((RosettaModelObjectBuilder) _invoke);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public RosettaModelObjectBuilder createBuilderInstance(final Map> classes, final String className) {
return this.createBuilderInstance(classes, this._modelHelper.rootPackage(), className);
}
public Object setAttribute(final RosettaModelObjectBuilder rosettaClassBuilderInstance, final String name, final Object value) {
try {
Object _xblockexpression = null;
{
Class extends RosettaModelObjectBuilder> _class = rosettaClassBuilderInstance.getClass();
String _firstUpper = StringExtensions.toFirstUpper(name);
String _plus = ("set" + _firstUpper);
Class> _class_1 = null;
if (value!=null) {
_class_1=value.getClass();
}
final Method setter = this.getMatchingMethod(_class, _plus, Collections.>unmodifiableList(CollectionLiterals.>newArrayList(_class_1)));
if ((setter == null)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("No method #");
String _firstUpper_1 = StringExtensions.toFirstUpper(name);
String _plus_1 = ("set" + _firstUpper_1);
_builder.append(_plus_1);
_builder.append("(");
Class> _class_2 = null;
if (value!=null) {
_class_2=value.getClass();
}
String _simpleName = null;
if (_class_2!=null) {
_simpleName=_class_2.getSimpleName();
}
_builder.append(_simpleName);
_builder.append(") in ");
Class extends RosettaModelObjectBuilder> _class_3 = rosettaClassBuilderInstance.getClass();
_builder.append(_class_3);
throw new RuntimeException(_builder.toString());
}
Class extends RosettaModelObjectBuilder> _class_4 = rosettaClassBuilderInstance.getClass();
String _firstUpper_2 = StringExtensions.toFirstUpper(name);
String _plus_2 = ("set" + _firstUpper_2);
Class> _class_5 = null;
if (value!=null) {
_class_5=value.getClass();
}
_xblockexpression = this.getMatchingMethod(_class_4, _plus_2, Collections.>unmodifiableList(CollectionLiterals.>newArrayList(_class_5))).invoke(rosettaClassBuilderInstance, value);
}
return _xblockexpression;
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public RosettaModelObject createInstanceUsingBuilder(final Map> classes, final RosettaJavaPackages.RootPackage namespace, final String className, final Map itemsToSet, final Map> itemsToAddToList) {
try {
String _plus = (namespace + ".");
String _plus_1 = (_plus + className);
final Class> clazz = classes.get(_plus_1);
if ((clazz == null)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Class ");
String _plus_2 = (namespace + ".");
String _plus_3 = (_plus_2 + className);
_builder.append(_plus_3);
_builder.append(" not found");
throw new RuntimeException(_builder.toString());
}
final RosettaModelObjectBuilder rosettaClassBuilderInstance = this.createBuilderInstance(classes, namespace, className);
final BiConsumer _function = (String name, Object value) -> {
this.setAttribute(rosettaClassBuilderInstance, name, value);
};
itemsToSet.forEach(_function);
final BiConsumer> _function_1 = (String name, List> objectsToAdd) -> {
final Consumer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy