@NotNull public ConstraintsDescriptor getConstraintsDescriptor(@Nullable String fqName) { ConstraintsDescriptor descriptor = constraintsDescriptors.get(fqName); if (descriptor != null) { return descriptor; } if (!startLoad(fqName, LanguageAspect.CONSTRAINTS)) { return new IllegalConstraintsDescriptor(fqName); } try { try { LanguageRuntime languageRuntime = myLanguageRegistry.getLanguage(NameUtil.namespaceFromConceptFQName(fqName)); ConstraintsAspectDescriptor constraintsAspectDescriptor; if (languageRuntime == null) { // Then language was just renamed and was not re-generated then it can happen that it has // no LOG.warn( "No language for: " + fqName + ", while looking for constraints descriptor.", new Throwable()); constraintsAspectDescriptor = ConstraintsAspectInterpreted.getInstance(); } else { constraintsAspectDescriptor = languageRuntime.getConstraintsAspectDescriptor(); } descriptor = constraintsAspectDescriptor.getDescriptor(fqName); } catch (Throwable e) { LOG.warn("Exception while constraints descriptor creating", e); } if (descriptor == null) { descriptor = new IllegalConstraintsDescriptor(fqName); } constraintsDescriptors.put(fqName, descriptor); return descriptor; } finally { finishLoad(fqName, LanguageAspect.CONSTRAINTS); } }
private TextGenDescriptor getTextGenDescriptor(SConcept concept) { final String fqName = concept.getQualifiedName(); TextGenDescriptor descriptor = textGenDescriptors.get(fqName); if (descriptor != null) { return descriptor; } if (!startLoad(fqName, LanguageAspect.TEXT_GEN)) { return new DefaultTextGenDescriptor(); } try { LanguageRuntime languageRuntime = myLanguageRegistry.getLanguage(concept.getLanguage().getQualifiedName()); TextGenAspectDescriptor textGenAspectDescriptor; if (languageRuntime == null) { // Then language was just renamed and was not re-generated then it can happen that it has no LOG.warn( String.format( "No language for concept %s, while looking for textgen descriptor.", fqName), new Throwable()); textGenAspectDescriptor = new TextGenAspectInterpreted(); } else { textGenAspectDescriptor = languageRuntime.getTextGenAspectDescriptor(); } descriptor = textGenAspectDescriptor.getDescriptor(concept); if (descriptor == null) { descriptor = new DefaultTextGenDescriptor(); } textGenDescriptors.put(fqName, descriptor); return descriptor; } finally { finishLoad(fqName, LanguageAspect.TEXT_GEN); } }
@NotNull public BehaviorDescriptor getBehaviorDescriptor(@Nullable String fqName) { BehaviorDescriptor descriptor = behaviorDescriptors.get(fqName); if (descriptor != null) { return descriptor; } if (!startLoad(fqName, LanguageAspect.BEHAVIOR)) { return NullSafeIllegalBehaviorDescriptor.INSTANCE; } try { try { LanguageRuntime languageRuntime = myLanguageRegistry.getLanguage(NameUtil.namespaceFromConceptFQName(fqName)); if (languageRuntime == null) { LOG.warn( "No language for: " + fqName + ", while looking for behavior descriptor.", new Throwable()); } else { descriptor = languageRuntime.getBehaviorAspectDescriptor().getDescriptor(fqName); } } catch (Throwable e) { LOG.warn("Exception while behavior descriptor creating", e); } if (descriptor == null) { // descriptor = new IllegalBehaviorDescriptor(fqName); descriptor = new InterpretedBehaviorDescriptor(fqName); } behaviorDescriptors.put(fqName, descriptor); return descriptor; } finally { finishLoad(fqName, LanguageAspect.BEHAVIOR); } }
@NotNull public ConceptDescriptor getConceptDescriptor(@Nullable String fqName) { ConceptDescriptor descriptor = conceptDescriptors.get(fqName); if (descriptor != null) { return descriptor; } if (!startLoad(fqName, LanguageAspect.STRUCTURE)) { return new IllegalConceptDescriptor(fqName); } try { try { LanguageRuntime languageRuntime = LanguageRegistry.getInstance().getLanguage(NameUtil.namespaceFromConceptFQName(fqName)); if (languageRuntime == null) { LOG.warning("No language for: " + fqName); } else { descriptor = languageRuntime.getStructureAspectDescriptor().getDescriptor(fqName); } } catch (Throwable e) { LOG.warning("Exception while structure descriptor creating: " + fqName, e); } if (descriptor == null) { // todo: maybe Interpreted? descriptor = new IllegalConceptDescriptor(fqName); } conceptDescriptors.put(fqName, descriptor); return descriptor; } finally { finishLoad(fqName, LanguageAspect.STRUCTURE); } }