package jetbrains.mps.smodel.persistence.def.v9; /*Generated by MPS */ import jetbrains.mps.util.xml.XMLSAXHandler; import jetbrains.mps.smodel.loading.ModelLoadResult; import java.util.Stack; import org.xml.sax.Locator; import jetbrains.mps.smodel.SModelHeader; import jetbrains.mps.smodel.DefaultSModel; import org.xml.sax.SAXException; import org.xml.sax.Attributes; import org.xml.sax.SAXParseException; import org.jetbrains.mps.openapi.model.SModelReference; import jetbrains.mps.smodel.SModel; import jetbrains.mps.smodel.loading.ModelLoadingState; import jetbrains.mps.baseLanguage.tuples.runtime.Tuples; import org.jetbrains.mps.openapi.language.SContainmentLink; import org.jetbrains.mps.openapi.language.SConcept; import jetbrains.mps.smodel.SNode; import org.jetbrains.mps.openapi.module.SModuleReference; import jetbrains.mps.smodel.SModelLegacy; import jetbrains.mps.smodel.adapter.ids.SLanguageId; import org.jetbrains.mps.openapi.language.SLanguage; import org.jetbrains.mps.openapi.model.SNodeId; import jetbrains.mps.smodel.InterfaceSNode; import jetbrains.mps.baseLanguage.tuples.runtime.MultiTuple; import org.jetbrains.mps.openapi.language.SProperty; import org.jetbrains.mps.openapi.language.SReferenceLink; import jetbrains.mps.smodel.StaticReference; import jetbrains.mps.util.Pair; public class ModelReader9Handler extends XMLSAXHandler<ModelLoadResult> { private ModelReader9Handler.ModelElementHandler modelHandler = new ModelReader9Handler.ModelElementHandler(); private ModelReader9Handler.PersistenceElementHandler persistenceHandler = new ModelReader9Handler.PersistenceElementHandler(); private ModelReader9Handler.Model_attributeElementHandler model_attributeHandler = new ModelReader9Handler.Model_attributeElementHandler(); private ModelReader9Handler.RegistryElementHandler registryHandler = new ModelReader9Handler.RegistryElementHandler(); private ModelReader9Handler.Registry_languageElementHandler registry_languageHandler = new ModelReader9Handler.Registry_languageElementHandler(); private ModelReader9Handler.Registry_conceptElementHandler registry_conceptHandler = new ModelReader9Handler.Registry_conceptElementHandler(); private ModelReader9Handler.Registry_propertyElementHandler registry_propertyHandler = new ModelReader9Handler.Registry_propertyElementHandler(); private ModelReader9Handler.Registry_associationElementHandler registry_associationHandler = new ModelReader9Handler.Registry_associationElementHandler(); private ModelReader9Handler.Registry_aggregationElementHandler registry_aggregationHandler = new ModelReader9Handler.Registry_aggregationElementHandler(); private ModelReader9Handler.LanguagesElementHandler languagesHandler = new ModelReader9Handler.LanguagesElementHandler(); private ModelReader9Handler.Used_languageElementHandler used_languageHandler = new ModelReader9Handler.Used_languageElementHandler(); private ModelReader9Handler.Engaged_languageElementHandler engaged_languageHandler = new ModelReader9Handler.Engaged_languageElementHandler(); private ModelReader9Handler.Module_referenceElementHandler module_referenceHandler = new ModelReader9Handler.Module_referenceElementHandler(); private ModelReader9Handler.ImportsElementHandler importsHandler = new ModelReader9Handler.ImportsElementHandler(); private ModelReader9Handler.Model_importElementHandler model_importHandler = new ModelReader9Handler.Model_importElementHandler(); private ModelReader9Handler.NodeElementHandler nodeHandler = new ModelReader9Handler.NodeElementHandler(); private ModelReader9Handler.PropertyElementHandler propertyHandler = new ModelReader9Handler.PropertyElementHandler(); private ModelReader9Handler.ReferenceElementHandler referenceHandler = new ModelReader9Handler.ReferenceElementHandler(); private ModelReader9Handler.IgnoredNodeElementHandler ignoredNodeHandler = new ModelReader9Handler.IgnoredNodeElementHandler(); private ModelReader9Handler.IgnoredPropertyElementHandler ignoredPropertyHandler = new ModelReader9Handler.IgnoredPropertyElementHandler(); private ModelReader9Handler.IgnoredReferenceElementHandler ignoredReferenceHandler = new ModelReader9Handler.IgnoredReferenceElementHandler(); private Stack<ModelReader9Handler.ElementHandler> myHandlersStack = new Stack<ModelReader9Handler.ElementHandler>(); private Stack<ModelReader9Handler.ChildHandler> myChildHandlersStack = new Stack<ModelReader9Handler.ChildHandler>(); private Stack<Object> myValues = new Stack<Object>(); private Locator myLocator; private ModelLoadResult myResult; private SModelHeader my_headerParam; private IdInfoReadHelper my_readHelperParam; private DefaultSModel my_modelField; private ImportsHelper my_importHelperField; private IdEncoder my_idEncoderField; public ModelReader9Handler(SModelHeader header, IdInfoReadHelper readHelper) { my_headerParam = header; my_readHelperParam = readHelper; } public ModelLoadResult getResult() { return myResult; } @Override public void setDocumentLocator(Locator locator) { myLocator = locator; } @Override public void characters(char[] array, int start, int len) throws SAXException { ModelReader9Handler.ElementHandler current = (myHandlersStack.empty() ? (ModelReader9Handler.ElementHandler) null : myHandlersStack.peek()); if (current != null) { current.handleText(myValues.peek(), new String(array, start, len)); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { ModelReader9Handler.ElementHandler current = myHandlersStack.pop(); Object childValue = myValues.pop(); current.validate(childValue); if (myChildHandlersStack.empty()) { myResult = (ModelLoadResult) childValue; } else { ModelReader9Handler.ChildHandler ch = myChildHandlersStack.pop(); if (ch != null) { ch.apply(myValues.peek(), childValue); } } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { ModelReader9Handler.ElementHandler current = (myHandlersStack.empty() ? (ModelReader9Handler.ElementHandler) null : myHandlersStack.peek()); if (current == null) { // root current = modelHandler; } else { current = current.createChild(myValues.peek(), qName, attributes); } // check required for (String attr : current.requiredAttributes()) { if (attributes.getValue(attr) == null) { throw new SAXParseException("attribute " + attr + " is absent", null); } } Object result = current.createObject(attributes); if (myHandlersStack.empty()) { myResult = (ModelLoadResult) result; } // handle attributes for (int i = 0; i < attributes.getLength(); i++) { String name = attributes.getQName(i); String value = attributes.getValue(i); current.handleAttribute(result, name, value); } myHandlersStack.push(current); myValues.push(result); } private interface ChildHandler { void apply(Object resultObject, Object value) throws SAXException; } private class ElementHandler { private String[] requiredAttributes = new String[0]; private ElementHandler() { } protected Object createObject(Attributes attrs) throws SAXException { return null; } protected void handleAttribute(Object resultObject, String name, String value) throws SAXException { } protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { throw new SAXParseException("unknown tag: " + tagName, null); } protected void handleText(Object resultObject, String value) throws SAXException { if (value.trim().length() == 0) { return; } throw new SAXParseException("text is not accepted: '" + value + "'", null); } protected String[] requiredAttributes() { return requiredAttributes; } protected void setRequiredAttributes(String... required) { requiredAttributes = required; } protected void validate(Object resultObject) throws SAXException { } } public class ModelElementHandler extends ModelReader9Handler.ElementHandler { public ModelElementHandler() { setRequiredAttributes("ref"); } @Override protected ModelLoadResult createObject(Attributes attrs) throws SAXException { my_idEncoderField = my_readHelperParam.getIdEncoder(); SModelReference ref = my_idEncoderField.parseModelReference(attrs.getValue("ref")); my_modelField = new DefaultSModel(ref, my_headerParam); my_modelField.getSModelHeader().setPersistenceVersion(9); my_importHelperField = new ImportsHelper(ref); ModelLoadResult result = new ModelLoadResult((SModel) my_modelField, ModelLoadingState.NOT_LOADED); result.setState((my_readHelperParam.isRequestedInterfaceOnly() ? ModelLoadingState.INTERFACE_LOADED : ((my_readHelperParam.isRequestedStripImplementation() ? ModelLoadingState.NO_IMPLEMENTATION : ModelLoadingState.FULLY_LOADED)))); return result; } @Override protected void handleAttribute(Object resultObject, String name, String value) throws SAXException { ModelLoadResult result = (ModelLoadResult) resultObject; if ("doNotGenerate".equals(name)) { my_modelField.getSModelHeader().setDoNotGenerate(Boolean.parseBoolean(value)); return; } if ("content".equals(name)) { if ("header".equals(value)) { result.setContentKind(ModelLoadResult.ContentKind.MODEL_HEADER); } else if ("root".equals(value)) { result.setContentKind(ModelLoadResult.ContentKind.MODEL_ROOT); } else { throw new SAXException("unknown content attribute value: " + value); } return; } super.handleAttribute(resultObject, name, value); } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("node".equals(tagName) && checknode_8237920533349931304(resultObject, attrs)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_8237920533349931271(resultObject, value); } }); return ignoredNodeHandler; } if ("node".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_8237920533349931307(resultObject, value); } }); return nodeHandler; } if ("persistence".equals(tagName)) { myChildHandlersStack.push(null); return persistenceHandler; } if ("attribute".equals(tagName)) { myChildHandlersStack.push(null); return model_attributeHandler; } if ("languages".equals(tagName)) { myChildHandlersStack.push(null); return languagesHandler; } if ("imports".equals(tagName)) { myChildHandlersStack.push(null); return importsHandler; } if ("registry".equals(tagName)) { myChildHandlersStack.push(null); return registryHandler; } return super.createChild(resultObject, tagName, attrs); } private boolean checknode_8237920533349931304(Object resultObject, Attributes attrs) { return my_readHelperParam.isRequestedStripImplementation() && my_readHelperParam.isImplementation(my_readHelperParam.readConcept(attrs.getValue("concept"))); } private void handleChild_8237920533349931271(Object resultObject, Object value) throws SAXException { Tuples._2<SContainmentLink, SConcept> child = (Tuples._2<SContainmentLink, SConcept>) value; SConcept concept = child._1(); if (my_readHelperParam.isImplementationWithStub(concept)) { SConcept stubConcept = my_readHelperParam.getStubConcept(concept); my_modelField.addRootNode(new SNode(stubConcept)); } } private void handleChild_8237920533349931307(Object resultObject, Object value) throws SAXException { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> child = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) value; my_modelField.addRootNode(child._0()); } } public class PersistenceElementHandler extends ModelReader9Handler.ElementHandler { public PersistenceElementHandler() { } } public class Model_attributeElementHandler extends ModelReader9Handler.ElementHandler { public Model_attributeElementHandler() { setRequiredAttributes("name", "value"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_modelField.getSModelHeader().setOptionalProperty(attrs.getValue("name"), attrs.getValue("value")); return null; } } public class RegistryElementHandler extends ModelReader9Handler.ElementHandler { public RegistryElementHandler() { } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("language".equals(tagName)) { myChildHandlersStack.push(null); return registry_languageHandler; } return super.createChild(resultObject, tagName, attrs); } } public class Registry_languageElementHandler extends ModelReader9Handler.ElementHandler { public Registry_languageElementHandler() { setRequiredAttributes("id", "name"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_readHelperParam.withLanguage(attrs.getValue("id"), attrs.getValue("name")); return null; } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("concept".equals(tagName)) { myChildHandlersStack.push(null); return registry_conceptHandler; } return super.createChild(resultObject, tagName, attrs); } } public class Registry_conceptElementHandler extends ModelReader9Handler.ElementHandler { public Registry_conceptElementHandler() { setRequiredAttributes("id", "name", "index", "flags"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_readHelperParam.withConcept(attrs.getValue("id"), attrs.getValue("name"), attrs.getValue("index"), attrs.getValue("flags"), attrs.getValue("stub")); return null; } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("property".equals(tagName)) { myChildHandlersStack.push(null); return registry_propertyHandler; } if ("reference".equals(tagName)) { myChildHandlersStack.push(null); return registry_associationHandler; } if ("child".equals(tagName)) { myChildHandlersStack.push(null); return registry_aggregationHandler; } return super.createChild(resultObject, tagName, attrs); } } public class Registry_propertyElementHandler extends ModelReader9Handler.ElementHandler { public Registry_propertyElementHandler() { setRequiredAttributes("id", "name", "index"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_readHelperParam.property(attrs.getValue("id"), attrs.getValue("name"), attrs.getValue("index")); return null; } } public class Registry_associationElementHandler extends ModelReader9Handler.ElementHandler { public Registry_associationElementHandler() { setRequiredAttributes("id", "name", "index"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_readHelperParam.association(attrs.getValue("id"), attrs.getValue("name"), attrs.getValue("index")); return null; } } public class Registry_aggregationElementHandler extends ModelReader9Handler.ElementHandler { public Registry_aggregationElementHandler() { setRequiredAttributes("id", "name", "index"); } @Override protected Object createObject(Attributes attrs) throws SAXException { my_readHelperParam.aggregation(attrs.getValue("id"), attrs.getValue("name"), attrs.getValue("index"), Boolean.parseBoolean(attrs.getValue("unordered"))); return null; } } public class LanguagesElementHandler extends ModelReader9Handler.ElementHandler { public LanguagesElementHandler() { } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("use".equals(tagName)) { myChildHandlersStack.push(null); return used_languageHandler; } if ("engage".equals(tagName)) { myChildHandlersStack.push(null); return engaged_languageHandler; } if ("generationPart".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_5480414999147804036(resultObject, value); } }); return module_referenceHandler; } if ("devkit".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_5480414999147804044(resultObject, value); } }); return module_referenceHandler; } return super.createChild(resultObject, tagName, attrs); } private void handleChild_5480414999147804036(Object resultObject, Object value) throws SAXException { SModuleReference child = (SModuleReference) value; // FIXME this is transition code to support pre-MPS 3.4 engaged languages as SModuleReference // for contemporary SLanguage dependency, there's engage tag, above new SModelLegacy(my_modelField).addEngagedOnGenerationLanguage(child); } private void handleChild_5480414999147804044(Object resultObject, Object value) throws SAXException { SModuleReference child = (SModuleReference) value; my_modelField.addDevKit(child); } } public class Used_languageElementHandler extends ModelReader9Handler.ElementHandler { public Used_languageElementHandler() { setRequiredAttributes("id", "version", "name"); } @Override protected Object createObject(Attributes attrs) throws SAXException { SLanguageId langId = my_idEncoderField.parseLanguageId(attrs.getValue("id")); int langVersion = Integer.parseInt(attrs.getValue("version")); SLanguage lang = my_readHelperParam.getLanguage(langId, attrs.getValue("name")); my_modelField.addLanguage(lang); my_modelField.setLanguageImportVersion(lang, langVersion); return null; } } public class Engaged_languageElementHandler extends ModelReader9Handler.ElementHandler { public Engaged_languageElementHandler() { setRequiredAttributes("id", "name"); } @Override protected Object createObject(Attributes attrs) throws SAXException { SLanguageId langId = my_idEncoderField.parseLanguageId(attrs.getValue("id")); // use of read helper is not 100% clean code (as well as in used_languages above) // as readHelper deals with registry information, but doesn't use it for this particular call (serving merely as a factory). SLanguage lang = my_readHelperParam.getLanguage(langId, attrs.getValue("name")); my_modelField.addEngagedOnGenerationLanguage(lang); return null; } } public class Module_referenceElementHandler extends ModelReader9Handler.ElementHandler { public Module_referenceElementHandler() { setRequiredAttributes("ref"); } @Override protected SModuleReference createObject(Attributes attrs) throws SAXException { return my_idEncoderField.parseModuleReference(attrs.getValue("ref")); } } public class ImportsElementHandler extends ModelReader9Handler.ElementHandler { public ImportsElementHandler() { } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("import".equals(tagName)) { myChildHandlersStack.push(null); return model_importHandler; } return super.createChild(resultObject, tagName, attrs); } } public class Model_importElementHandler extends ModelReader9Handler.ElementHandler { public Model_importElementHandler() { setRequiredAttributes("index", "ref"); } @Override protected Object createObject(Attributes attrs) throws SAXException { SModelReference modelRef = my_idEncoderField.parseModelReference(attrs.getValue("ref")); my_importHelperField.addModelImport(attrs.getValue("index"), modelRef); if (!(Boolean.parseBoolean(attrs.getValue("implicit")))) { my_modelField.addModelImport(new SModel.ImportElement(modelRef)); } return null; } } public class NodeElementHandler extends ModelReader9Handler.ElementHandler { public NodeElementHandler() { setRequiredAttributes("concept", "id"); } @Override protected Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> createObject(Attributes attrs) throws SAXException { SConcept concept = my_readHelperParam.readConcept(attrs.getValue("concept")); boolean interfaceNode = false; if (my_readHelperParam.isRequestedInterfaceOnly()) { interfaceNode = (my_readHelperParam.isInterface(concept) || attrs.getValue("role") == null); } SNodeId nodeId; try { nodeId = my_idEncoderField.parseNodeId(attrs.getValue("id")); } catch (IdEncoder.EncodingException e) { throw new IllegalArgumentException(e); } SNode result = (interfaceNode ? new InterfaceSNode(concept, nodeId) : new SNode(concept, nodeId)); // can be root return MultiTuple.<org.jetbrains.mps.openapi.model.SNode,SContainmentLink>from(((org.jetbrains.mps.openapi.model.SNode) result), my_readHelperParam.readAggregation(attrs.getValue("role"))); } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("property".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_5480414999147804176(resultObject, value); } }); return propertyHandler; } if ("ref".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_4968492044127349726(resultObject, value); } }); return referenceHandler; } if ("node".equals(tagName) && checknode_8237920533350080210(resultObject, attrs)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_5480414999147804300(resultObject, value); } }); return ignoredNodeHandler; } if ("node".equals(tagName)) { myChildHandlersStack.push(new ModelReader9Handler.ChildHandler() { @Override public void apply(Object resultObject, Object value) throws SAXException { handleChild_5480414999147804248(resultObject, value); } }); return nodeHandler; } return super.createChild(resultObject, tagName, attrs); } private boolean checknode_8237920533350080210(Object resultObject, Attributes attrs) { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> result = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) resultObject; SConcept childConcept = my_readHelperParam.readConcept(attrs.getValue("concept")); if (my_readHelperParam.isRequestedStripImplementation() && my_readHelperParam.isImplementation(childConcept)) { return true; } return result._0() instanceof InterfaceSNode && !(my_readHelperParam.isInterface(childConcept)); } private void handleChild_5480414999147804176(Object resultObject, Object value) throws SAXException { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> result = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) resultObject; Tuples._2<SProperty, String> child = (Tuples._2<SProperty, String>) value; result._0().setProperty(child._0(), child._1()); } private void handleChild_4968492044127349726(Object resultObject, Object value) throws SAXException { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> result = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) resultObject; Tuples._4<SReferenceLink, SModelReference, SNodeId, String> child = (Tuples._4<SReferenceLink, SModelReference, SNodeId, String>) value; SModelReference targetModel = child._1(); SNodeId nodeId = child._2(); SReferenceLink link = child._0(); String resolveInfo = child._3(); StaticReference ref = new StaticReference(link, result._0(), targetModel, nodeId, resolveInfo); result._0().setReference(link, ref); } private void handleChild_5480414999147804300(Object resultObject, Object value) throws SAXException { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> result = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) resultObject; Tuples._2<SContainmentLink, SConcept> child = (Tuples._2<SContainmentLink, SConcept>) value; SContainmentLink link = child._0(); SConcept concept = child._1(); if (my_readHelperParam.isRequestedStripImplementation() && my_readHelperParam.isImplementationWithStub(concept)) { SConcept stubConcept = my_readHelperParam.getStubConcept(concept); SNode childNode = new SNode(stubConcept); result._0().addChild(link, childNode); return; } if (result._0() instanceof InterfaceSNode) { ((InterfaceSNode) result._0()).skipRole(link); } } private void handleChild_5480414999147804248(Object resultObject, Object value) throws SAXException { Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> result = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) resultObject; Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink> child = (Tuples._2<org.jetbrains.mps.openapi.model.SNode, SContainmentLink>) value; result._0().addChild(child._1(), child._0()); } } public class PropertyElementHandler extends ModelReader9Handler.ElementHandler { public PropertyElementHandler() { setRequiredAttributes("role"); } @Override protected Tuples._2<SProperty, String> createObject(Attributes attrs) throws SAXException { return MultiTuple.<SProperty,String>from(my_readHelperParam.readProperty(attrs.getValue("role")), attrs.getValue("value")); } } public class ReferenceElementHandler extends ModelReader9Handler.ElementHandler { public ReferenceElementHandler() { setRequiredAttributes("role"); } @Override protected Tuples._4<SReferenceLink, SModelReference, SNodeId, String> createObject(Attributes attrs) throws SAXException { SReferenceLink association = my_readHelperParam.readAssociation(attrs.getValue("role")); if (attrs.getValue("node") != null) { // local reference SNodeId targetNode = my_idEncoderField.parseLocalNodeReference(attrs.getValue("node")); return MultiTuple.<SReferenceLink,SModelReference,SNodeId,String>from(association, my_modelField.getReference(), targetNode, attrs.getValue("resolve")); } else { Pair<SModelReference, SNodeId> r = my_idEncoderField.parseExternalNodeReference(my_importHelperField, attrs.getValue("to")); return MultiTuple.<SReferenceLink,SModelReference,SNodeId,String>from(association, r.o1, r.o2, attrs.getValue("resolve")); } } } public class IgnoredNodeElementHandler extends ModelReader9Handler.ElementHandler { public IgnoredNodeElementHandler() { setRequiredAttributes("concept"); } @Override protected Tuples._2<SContainmentLink, SConcept> createObject(Attributes attrs) throws SAXException { return MultiTuple.<SContainmentLink,SConcept>from(my_readHelperParam.readAggregation(attrs.getValue("role")), my_readHelperParam.readConcept(attrs.getValue("concept"))); } @Override protected ModelReader9Handler.ElementHandler createChild(Object resultObject, String tagName, Attributes attrs) throws SAXException { if ("property".equals(tagName)) { myChildHandlersStack.push(null); return ignoredPropertyHandler; } if ("ref".equals(tagName)) { myChildHandlersStack.push(null); return ignoredReferenceHandler; } if ("node".equals(tagName)) { myChildHandlersStack.push(null); return ignoredNodeHandler; } return super.createChild(resultObject, tagName, attrs); } } public class IgnoredPropertyElementHandler extends ModelReader9Handler.ElementHandler { public IgnoredPropertyElementHandler() { } } public class IgnoredReferenceElementHandler extends ModelReader9Handler.ElementHandler { public IgnoredReferenceElementHandler() { } } }