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() {
}
}
}