package jetbrains.mps.build.util; /*Generated by MPS */ import java.util.concurrent.ConcurrentMap; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.generator.template.TemplateQueryContext; import java.util.concurrent.ConcurrentHashMap; import jetbrains.mps.util.containers.ConcurrentHashSet; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; public class GenerationUtil { public GenerationUtil() { } public static <K, V> ConcurrentMap<K, V> getSessionMap(SNode project, TemplateQueryContext genContext, String prefix) { String key = getKey(prefix, genContext, project); ConcurrentMap<K, V> map = (ConcurrentMap<K, V>) genContext.getSessionObject(key); if (map == null) { map = new ConcurrentHashMap<K, V>(); genContext.putSessionObject(key, map); } return map; } public static <K, V> ConcurrentMap<K, V> getTransientMap(SNode project, TemplateQueryContext genContext, String prefix) { String key = getKey(prefix, genContext, project); ConcurrentMap<K, V> map = (ConcurrentMap<K, V>) genContext.getTransientObject(key); if (map == null) { map = new ConcurrentHashMap<K, V>(); genContext.putTransientObject(key, map); } return map; } public static <K> ConcurrentHashSet<K> getSessionSet(SNode project, TemplateQueryContext genContext, String prefix) { String key = getKey(prefix, genContext, project); ConcurrentHashSet<K> set = (ConcurrentHashSet<K>) genContext.getSessionObject(key); if (set == null) { set = new ConcurrentHashSet<K>(); genContext.putSessionObject(key, set); } return set; } private static String getKey(String prefix, TemplateQueryContext genContext, SNode project) { return prefix + '/' + SModelOperations.getModelName(genContext.getOriginalInputModel()) + '/' + SPropertyOperations.getString(project, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } }