package jetbrains.mps.lang.core.plugin;
/*Generated by MPS */
import jetbrains.mps.make.facet.IFacet;
import java.util.List;
import jetbrains.mps.make.facet.ITarget;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.make.resources.IPropertiesPersistence;
import jetbrains.mps.make.facet.ITargetEx;
import jetbrains.mps.make.script.IJob;
import jetbrains.mps.make.script.IResult;
import jetbrains.mps.make.resources.IResource;
import jetbrains.mps.make.script.IJobMonitor;
import jetbrains.mps.make.resources.IPropertiesAccessor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.util.ProgressMonitor;
import jetbrains.mps.make.script.IConfig;
import jetbrains.mps.baseLanguage.tuples.runtime.Tuples;
import jetbrains.mps.make.script.IPropertiesPool;
import jetbrains.mps.baseLanguage.tuples.runtime.MultiTuple;
import jetbrains.mps.make.MakeSession;
import jetbrains.mps.make.facet.ITargetEx2;
import jetbrains.mps.smodel.resources.GResource;
import java.util.stream.IntStream;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import jetbrains.mps.make.script.IFeedback;
import jetbrains.mps.smodel.SModelOperations;
import jetbrains.mps.messages.IMessageHandler;
import jetbrains.mps.project.Project;
import jetbrains.mps.text.TextGeneratorEngine;
import java.util.concurrent.ArrayBlockingQueue;
import jetbrains.mps.text.TextGenResult;
import java.util.Map;
import org.jetbrains.mps.openapi.model.SModel;
import java.util.HashMap;
import jetbrains.mps.make.delta.IDelta;
import jetbrains.mps.internal.make.runtime.java.FileProcessor;
import java.util.concurrent.TimeUnit;
import jetbrains.mps.text.TextUnit;
import jetbrains.mps.generator.GenerationFacade;
import jetbrains.mps.make.facets.Make_Facet.Target_make;
import jetbrains.mps.internal.collections.runtime.MapSequence;
import jetbrains.mps.vfs.IFile;
import jetbrains.mps.generator.impl.DefaultStreamManager;
import jetbrains.mps.internal.make.runtime.util.StaleFilesCollector;
import jetbrains.mps.internal.make.runtime.java.FileDeltaCollector;
import jetbrains.mps.generator.impl.dependencies.GenerationDependencies;
import java.util.HashSet;
import jetbrains.mps.textgen.trace.TracingUtil;
import jetbrains.mps.generator.impl.dependencies.GenerationRootDependencies;
import jetbrains.mps.generator.impl.cache.CacheGenLayout;
import jetbrains.mps.make.java.BLDependenciesCache;
import jetbrains.mps.text.impl.BLDependenciesBuilder;
import jetbrains.mps.generator.impl.dependencies.GenerationDependenciesCache;
import jetbrains.mps.textgen.trace.TraceInfoCache;
import jetbrains.mps.text.impl.DebugInfoBuilder;
import jetbrains.mps.generator.ModelExports;
import jetbrains.mps.generator.impl.plan.CrossModelEnvironment;
import jetbrains.mps.util.IStatus;
import jetbrains.mps.vfs.FileSystem;
import jetbrains.mps.internal.collections.runtime.SetSequence;
import jetbrains.mps.smodel.resources.TResource;
import org.jetbrains.mps.openapi.model.SNodeReference;
import jetbrains.mps.smodel.resources.FResource;
import jetbrains.mps.util.JavaNameUtil;
public class TextGen_Facet extends IFacet.Stub {
private List<ITarget> targets = ListSequence.fromList(new ArrayList<ITarget>());
private IFacet.Name name = new IFacet.Name("jetbrains.mps.lang.core.TextGen");
public TextGen_Facet() {
ListSequence.fromList(targets).addElement(new TextGen_Facet.Target_configure());
ListSequence.fromList(targets).addElement(new TextGen_Facet.Target_textGen());
ListSequence.fromList(targets).addElement(new TextGen_Facet.Target_textGenToMemory());
}
public Iterable<ITarget> targets() {
return targets;
}
public Iterable<IFacet.Name> optional() {
return null;
}
public Iterable<IFacet.Name> required() {
return Sequence.fromArray(new IFacet.Name[]{new IFacet.Name("jetbrains.mps.lang.core.Generate"), new IFacet.Name("jetbrains.mps.make.facets.Make")});
}
public Iterable<IFacet.Name> extended() {
return null;
}
public IFacet.Name getName() {
return this.name;
}
public IPropertiesPersistence propertiesPersistence() {
return new TextGen_Facet.TargetProperties();
}
public static class Target_configure implements ITargetEx {
private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.configure");
public Target_configure() {
}
public IJob createJob() {
return new IJob.Stub() {
@Override
public IResult execute(final Iterable<IResource> rawInput, final IJobMonitor monitor, final IPropertiesAccessor pa, @NotNull final ProgressMonitor progressMonitor) {
Iterable<IResource> _output_21gswx_a0a = null;
final Iterable<IResource> input = (Iterable) (Iterable) rawInput;
switch (0) {
case 0:
// FIXME drop MakeSession property after 2017.2
// no-op now
default:
progressMonitor.done();
return new IResult.SUCCESS(_output_21gswx_a0a);
}
}
};
}
public IConfig createConfig() {
return null;
}
public Iterable<ITarget.Name> notAfter() {
return null;
}
public Iterable<ITarget.Name> after() {
return null;
}
public Iterable<ITarget.Name> notBefore() {
return null;
}
public Iterable<ITarget.Name> before() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGen"), new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGenToMemory")});
}
public ITarget.Name getName() {
return name;
}
public boolean isOptional() {
return false;
}
public boolean requiresInput() {
return false;
}
public boolean producesOutput() {
return false;
}
public Iterable<Class<? extends IResource>> expectedInput() {
List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>());
return rv;
}
public Iterable<Class<? extends IResource>> expectedOutput() {
return null;
}
public <T> T createParameters(Class<T> cls) {
return cls.cast(new Parameters());
}
public <T> T createParameters(Class<T> cls, T copyFrom) {
T t = createParameters(cls);
if (t != null) {
((Tuples._1) t).assign((Tuples._1) copyFrom);
}
return t;
}
public static TextGen_Facet.Target_configure.Parameters vars(IPropertiesPool ppool) {
return ppool.properties(name, TextGen_Facet.Target_configure.Parameters.class);
}
public static class Parameters extends MultiTuple._1<MakeSession> {
public Parameters() {
super();
}
public Parameters(MakeSession unused) {
super(unused);
}
public MakeSession unused(MakeSession value) {
return super._0(value);
}
public MakeSession unused() {
return super._0();
}
}
}
public static class Target_textGen implements ITargetEx2 {
private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGen");
public Target_textGen() {
}
public IJob createJob() {
return new IJob.Stub() {
@Override
public IResult execute(final Iterable<IResource> rawInput, final IJobMonitor monitor, final IPropertiesAccessor pa, @NotNull final ProgressMonitor progressMonitor) {
Iterable<IResource> _output_21gswx_a0b = null;
final Iterable<GResource> input = (Iterable<GResource>) (Iterable) rawInput;
progressMonitor.start("", IntStream.of(1000).sum());
switch (0) {
case 0:
if (Sequence.fromIterable(input).any(new IWhereFilter<GResource>() {
public boolean accept(GResource it) {
return !(it.status().isOk());
}
})) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Generation was not OK")));
return new IResult.FAILURE(_output_21gswx_a0b);
}
for (GResource resource : Sequence.fromIterable(input)) {
if (SModelOperations.getOutputLocation(resource.model()) == null) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("no output location for " + resource.model().getName())));
}
}
final IMessageHandler messageHandler = monitor.getSession().getMessageHandler();
final Project mpsProject = monitor.getSession().getProject();
final TextGeneratorEngine tgEngine = new TextGeneratorEngine(messageHandler);
// Perhaps, shall check res.status.isError(), however not sure if there
// couldn't be an output model with error state, and we'd like to see erroneous text to localize error
final Iterable<GResource> resourcesWithOutput = Sequence.fromIterable(input).where(new IWhereFilter<GResource>() {
public boolean accept(GResource it) {
return SModelOperations.getOutputLocation(it.model()) != null && it.status().getOutputModel() != null;
}
});
// configure
final boolean _generateDebugInfo = vars(pa.global()).generateDebugInfo() == null || vars(pa.global()).generateDebugInfo();
int modelsCount = Sequence.fromIterable(resourcesWithOutput).count();
final ProgressMonitor subProgress_p0a0b = progressMonitor.subTask(1000);
subProgress_p0a0b.start("Writing", modelsCount + 3);
try {
final ArrayBlockingQueue<TextGenResult> resultQueue = new ArrayBlockingQueue<TextGenResult>(modelsCount);
final Map<SModel, GResource> textGenInput2Resource = new HashMap<SModel, GResource>(modelsCount * 2);
mpsProject.getModelAccess().runReadAction(new Runnable() {
public void run() {
for (GResource res : Sequence.fromIterable(resourcesWithOutput)) {
SModel model2generate = res.status().getOutputModel();
textGenInput2Resource.put(model2generate, res);
tgEngine.schedule(model2generate, resultQueue);
}
}
});
subProgress_p0a0b.advance(3);
final Map<GResource, List<IDelta>> deltas2 = new HashMap<GResource, List<IDelta>>();
final List<FileProcessor> fileProcessors2 = ListSequence.fromList(new ArrayList<FileProcessor>());
while (modelsCount-- > 0) {
final TextGenResult tgr = resultQueue.poll(3, TimeUnit.MINUTES);
if (tgr == null) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Timeout while waiting for model text outcome, model skipped")));
continue;
}
for (TextUnit tu : tgr.getUnits()) {
if (tu.getState() == TextUnit.Status.Failed) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Failed to generate text for " + tu.getFileName())));
}
}
subProgress_p0a0b.advance(1);
subProgress_p0a0b.step(tgr.getModel().getReference().getModelName());
final GResource inputResource = textGenInput2Resource.get(tgr.getModel());
_output_21gswx_a0b = Sequence.fromIterable(_output_21gswx_a0b).concat(Sequence.fromIterable(Sequence.<IResource>singleton(new TextGenOutcomeResource(inputResource.model(), inputResource.module(), tgr))));
mpsProject.getModelAccess().runReadAction(new Runnable() {
public void run() {
Iterable<IDelta> retainedFilesDelta = RetainedUtil.retainedDeltas(inputResource.module(), Sequence.fromIterable(inputResource.retainedModels()).where(new IWhereFilter<SModel>() {
public boolean accept(SModel smd) {
return GenerationFacade.canGenerate(smd);
}
}), Target_make.vars(pa.global()).pathToFile());
MapSequence.fromMap(deltas2).put(inputResource, ListSequence.fromListWithValues(new ArrayList<IDelta>(), retainedFilesDelta));
final IFile javaOutputDir = Target_make.vars(pa.global()).pathToFile().invoke(DefaultStreamManager.Provider.getOutputDir(inputResource.model()).getPath());
final IFile cacheOutputDir = Target_make.vars(pa.global()).pathToFile().invoke(DefaultStreamManager.Provider.getCachesDir(inputResource.model()).getPath());
StaleFilesCollector staleFileCollector = new StaleFilesCollector(javaOutputDir);
staleFileCollector.recordGeneratedChildren(inputResource.model());
FileProcessor fp = new FileProcessor();
ListSequence.fromList(fileProcessors2).addElement(fp);
FileDeltaCollector javaSourcesLoc = new FileDeltaCollector(javaOutputDir, fp);
FileDeltaCollector cachesLocation = new FileDeltaCollector(cacheOutputDir, fp);
//
// Serialize outcome
GenerationDependencies genDeps = inputResource.status().getDependencies();
HashSet<String> seenFileNames = new HashSet<String>();
for (TextUnit tu : tgr.getUnits()) {
TextUnit.Status tgState = tu.getState();
assert tgState != TextUnit.Status.Undefined;
genDeps.update(TracingUtil.getInput(tu.getStartNode()), tu.getFileName());
if (tgState == TextUnit.Status.Empty) {
continue;
}
if (tgState == TextUnit.Status.Failed) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf(String.format("Text outcome for %s has been generated with errors", tu.getFileName()))));
// fall through
}
if (!(seenFileNames.add(tu.getFileName()))) {
monitor.reportFeedback(new IFeedback.WARNING(String.valueOf(String.format("Duplicate unit name %s in model %s, output likely corrupt", tu.getFileName(), tgr.getModel().getName()))));
}
javaSourcesLoc.saveStream(tu.getFileName(), tu.getBytes());
}
// let the world know unchanged files are still in use
for (GenerationRootDependencies rdep : genDeps.getUnchangedDependencies()) {
for (String fname : rdep.getFiles()) {
javaSourcesLoc.touch(fname);
}
}
//
// Update caches and auxiliary artifacts
CacheGenLayout cgl = new CacheGenLayout(messageHandler);
cgl.register(cachesLocation, BLDependenciesCache.getInstance().newCacheGenerator(new BLDependenciesBuilder().build(tgr)));
cgl.register(cachesLocation, GenerationDependenciesCache.getInstance().getGenerator());
if (_generateDebugInfo) {
cgl.register(javaSourcesLoc, TraceInfoCache.getInstance().newCacheGenerator(new DebugInfoBuilder(mpsProject.getRepository()).build(tgr)));
}
cgl.register(javaSourcesLoc, new ModelExports.CacheGen());
cgl.register(javaSourcesLoc, new CrossModelEnvironment.CacheGen());
IStatus status = cgl.serialize(inputResource.status());
if (status.isError()) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf(status.getMessage())));
}
staleFileCollector.updateDelta(javaSourcesLoc.getDelta());
new StaleFilesCollector(cacheOutputDir).updateDelta(cachesLocation.getDelta());
ListSequence.fromList(MapSequence.fromMap(deltas2).get(inputResource)).addElement(javaSourcesLoc.getDelta());
ListSequence.fromList(MapSequence.fromMap(deltas2).get(inputResource)).addElement(cachesLocation.getDelta());
fp.invalidateModel(inputResource.model());
}
});
}
// flush stream handlers
if (!(FileSystem.getInstance().runWriteTransaction(new Runnable() {
public void run() {
for (FileProcessor fp : ListSequence.fromList(fileProcessors2)) {
fp.flushChanges();
}
}
}))) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Failed to save files")));
return new IResult.FAILURE(_output_21gswx_a0b);
}
// output result
for (GResource resource : SetSequence.fromSet(MapSequence.fromMap(deltas2).keySet())) {
Iterable<IDelta> delta = MapSequence.fromMap(deltas2).get(resource);
_output_21gswx_a0b = Sequence.fromIterable(_output_21gswx_a0b).concat(Sequence.fromIterable(Sequence.<IResource>singleton(new TResource(delta, resource.module(), resource.model()))));
}
} catch (InterruptedException ex) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("TextGen interrupted")));
return new IResult.FAILURE(_output_21gswx_a0b);
} catch (Exception ex) {
// FIXME need an expression in ReportFeedbackStatement that would take Throwable and pass it to IFeedback
ex.printStackTrace();
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Exception during TextGen:" + ex.toString())));
return new IResult.FAILURE(_output_21gswx_a0b);
} finally {
tgEngine.shutdown();
subProgress_p0a0b.done();
}
default:
progressMonitor.done();
return new IResult.SUCCESS(_output_21gswx_a0b);
}
}
};
}
public IConfig createConfig() {
return null;
}
public Iterable<ITarget.Name> notAfter() {
return null;
}
public Iterable<ITarget.Name> after() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.Generate.generate"), new ITarget.Name("jetbrains.mps.lang.core.TextGen.configure")});
}
public Iterable<ITarget.Name> notBefore() {
return null;
}
public Iterable<ITarget.Name> before() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile"), new ITarget.Name("jetbrains.mps.make.facets.Make.make")});
}
public ITarget.Name getName() {
return name;
}
public boolean isOptional() {
return false;
}
public boolean requiresInput() {
return true;
}
public boolean producesOutput() {
return true;
}
public Iterable<Class<? extends IResource>> expectedInput() {
List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>());
ListSequence.fromList(rv).addElement(GResource.class);
return rv;
}
public Iterable<Class<? extends IResource>> expectedOutput() {
return null;
}
public <T> T createParameters(Class<T> cls) {
return cls.cast(new Parameters());
}
public <T> T createParameters(Class<T> cls, T copyFrom) {
T t = createParameters(cls);
if (t != null) {
((Tuples._2) t).assign((Tuples._2) copyFrom);
}
return t;
}
public int workEstimate() {
return 400;
}
public static TextGen_Facet.Target_textGen.Parameters vars(IPropertiesPool ppool) {
return ppool.properties(name, TextGen_Facet.Target_textGen.Parameters.class);
}
public static class Parameters extends MultiTuple._2<Boolean, Boolean> {
public Parameters() {
super();
}
public Parameters(Boolean unused, Boolean generateDebugInfo) {
super(unused, generateDebugInfo);
}
public Boolean unused(Boolean value) {
return super._0(value);
}
public Boolean generateDebugInfo(Boolean value) {
return super._1(value);
}
public Boolean unused() {
return super._0();
}
public Boolean generateDebugInfo() {
return super._1();
}
}
}
public static class Target_textGenToMemory implements ITargetEx2 {
private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGenToMemory");
public Target_textGenToMemory() {
}
public IJob createJob() {
return new IJob.Stub() {
@Override
public IResult execute(final Iterable<IResource> rawInput, final IJobMonitor monitor, final IPropertiesAccessor pa, @NotNull final ProgressMonitor progressMonitor) {
Iterable<IResource> _output_21gswx_a0c = null;
final Iterable<GResource> input = (Iterable<GResource>) (Iterable) rawInput;
switch (0) {
case 0:
final TextGeneratorEngine tgEngine = new TextGeneratorEngine(monitor.getSession().getMessageHandler());
try {
int modelsCount = Sequence.fromIterable(input).count();
final ArrayBlockingQueue<TextGenResult> resultQueue = new ArrayBlockingQueue<TextGenResult>(modelsCount);
for (GResource resource : Sequence.fromIterable(input)) {
final SModel model = resource.status().getOutputModel();
if (model == null) {
modelsCount--;
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Generated model in null")));
// used to be a 'failure', with text generation result collected so far.
// Now, 'failure' here would yield empty result, always.
// It looks like 'best effort' (generate all possible) is reasonable alternative.
continue;
}
monitor.getSession().getProject().getModelAccess().runReadAction(new Runnable() {
public void run() {
tgEngine.schedule(model, resultQueue);
}
});
}
while (modelsCount-- > 0) {
final TextGenResult tgr = resultQueue.poll(1, TimeUnit.MINUTES);
if (tgr == null) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Timeout while waiting for model text outcome, model skipped")));
continue;
}
Map<String, Object> texts = MapSequence.fromMap(new HashMap<String, Object>());
Map<SNodeReference, String> rootNodeToFileName = MapSequence.fromMap(new HashMap<SNodeReference, String>());
_output_21gswx_a0c = Sequence.fromIterable(_output_21gswx_a0c).concat(Sequence.fromIterable(Sequence.<IResource>singleton(new TextGenOutcomeResource(tgr.getModel(), tgr.getModel().getModule(), tgr))));
for (TextUnit tu : tgr.getUnits()) {
if (tu.getState() == TextUnit.Status.Failed) {
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("Failed to generate text for " + tu.getFileName())));
continue;
}
// compatibility code until all uses of FResource from TextGen are removed
String fname = tu.getFileName();
MapSequence.fromMap(texts).put(fname, tu);
SNodeReference sourceNode = TracingUtil.getInput(tu.getStartNode());
if (sourceNode != null) {
if ((MapSequence.fromMap(rootNodeToFileName).get(sourceNode) == null) || (fname.compareTo(MapSequence.fromMap(rootNodeToFileName).get(sourceNode)) < 0)) {
MapSequence.fromMap(rootNodeToFileName).put(sourceNode, fname);
}
}
}
_output_21gswx_a0c = Sequence.fromIterable(_output_21gswx_a0c).concat(Sequence.fromIterable(Sequence.<IResource>singleton(new FResource(JavaNameUtil.packageName(tgr.getModel()), texts, rootNodeToFileName, null, tgr.getModel()))));
}
} catch (InterruptedException ex) {
// fine, no more text generation
monitor.reportFeedback(new IFeedback.ERROR(String.valueOf("TextGen interrupted")));
} finally {
tgEngine.shutdown();
}
default:
progressMonitor.done();
return new IResult.SUCCESS(_output_21gswx_a0c);
}
}
};
}
public IConfig createConfig() {
return null;
}
public Iterable<ITarget.Name> notAfter() {
return null;
}
public Iterable<ITarget.Name> after() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.Generate.generate"), new ITarget.Name("jetbrains.mps.lang.core.TextGen.configure")});
}
public Iterable<ITarget.Name> notBefore() {
return null;
}
public Iterable<ITarget.Name> before() {
return null;
}
public ITarget.Name getName() {
return name;
}
public boolean isOptional() {
return false;
}
public boolean requiresInput() {
return true;
}
public boolean producesOutput() {
return true;
}
public Iterable<Class<? extends IResource>> expectedInput() {
List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>());
ListSequence.fromList(rv).addElement(GResource.class);
return rv;
}
public Iterable<Class<? extends IResource>> expectedOutput() {
return null;
}
public <T> T createParameters(Class<T> cls) {
return null;
}
public <T> T createParameters(Class<T> cls, T copyFrom) {
T t = createParameters(cls);
return t;
}
public int workEstimate() {
return 400;
}
}
public static class TargetProperties implements IPropertiesPersistence {
public TargetProperties() {
}
public void storeValues(Map<String, String> store, IPropertiesPool properties) {
{
ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.configure");
if (properties.hasProperties(name)) {
TextGen_Facet.Target_configure.Parameters props = properties.properties(name, TextGen_Facet.Target_configure.Parameters.class);
MapSequence.fromMap(store).put("jetbrains.mps.lang.core.TextGen.configure.unused", null);
}
}
{
ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGen");
if (properties.hasProperties(name)) {
TextGen_Facet.Target_textGen.Parameters props = properties.properties(name, TextGen_Facet.Target_textGen.Parameters.class);
MapSequence.fromMap(store).put("jetbrains.mps.lang.core.TextGen.textGen.unused", String.valueOf(props.unused()));
MapSequence.fromMap(store).put("jetbrains.mps.lang.core.TextGen.textGen.generateDebugInfo", String.valueOf(props.generateDebugInfo()));
}
}
}
public void loadValues(Map<String, String> store, IPropertiesPool properties) {
try {
{
ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.configure");
TextGen_Facet.Target_configure.Parameters props = properties.properties(name, TextGen_Facet.Target_configure.Parameters.class);
if (MapSequence.fromMap(store).containsKey("jetbrains.mps.lang.core.TextGen.configure.unused")) {
props.unused(null);
}
}
{
ITarget.Name name = new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGen");
TextGen_Facet.Target_textGen.Parameters props = properties.properties(name, TextGen_Facet.Target_textGen.Parameters.class);
if (MapSequence.fromMap(store).containsKey("jetbrains.mps.lang.core.TextGen.textGen.unused")) {
props.unused(Boolean.valueOf(MapSequence.fromMap(store).get("jetbrains.mps.lang.core.TextGen.textGen.unused")));
}
if (MapSequence.fromMap(store).containsKey("jetbrains.mps.lang.core.TextGen.textGen.generateDebugInfo")) {
props.generateDebugInfo(Boolean.valueOf(MapSequence.fromMap(store).get("jetbrains.mps.lang.core.TextGen.textGen.generateDebugInfo")));
}
}
} catch (RuntimeException re) {
}
}
}
}