Skip to content

Commit

Permalink
Added null checks and expection handling when creating the rune ecore…
Browse files Browse the repository at this point in the history
… index (#898)
  • Loading branch information
minesh-s-patel authored Jan 9, 2025
1 parent 0dd97e3 commit 69c2d2f
Showing 1 changed file with 56 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.regnosys.rosetta.resource;

import org.apache.log4j.Logger;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
Expand All @@ -16,46 +17,59 @@
@Singleton
public class RosettaResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy {

@Override
public boolean createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) {
if (eObject instanceof RosettaModel) {
RosettaModel model = (RosettaModel)eObject;

QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(eObject);
acceptor.accept(new RosettaModelDescription(qualifiedName, model));

return true;
} else if (eObject instanceof Attribute) {
Attribute attr = (Attribute)eObject;

QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(attr);
String typeCall = serialize(attr.getTypeCall());
String cardinality = serialize(attr.getCard());
acceptor.accept(new AttributeDescription(qualifiedName, attr, typeCall, cardinality));

return false;
} else if (eObject instanceof RosettaRule) {
RosettaRule rule = (RosettaRule)eObject;

QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(rule);
String input = serialize(rule.getInput());
String expression = serialize(rule.getExpression());
acceptor.accept(new RuleDescription(qualifiedName, rule, input, expression));

return false;
} else {
return super.createEObjectDescriptions(eObject, acceptor);
}
}

private String serialize(EObject eObject) {
if (eObject == null) {
return null;
}
INode node = NodeModelUtils.getNode(eObject);
if (node != null) {
return node.getText();
}
return null;
}
private final static Logger LOG = Logger.getLogger(RosettaResourceDescriptionStrategy.class);

@Override
public boolean createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) {
if (getQualifiedNameProvider() == null) {
return false;
}
try {
if (eObject instanceof RosettaModel) {
return createRosettaModelDescription((RosettaModel) eObject, acceptor);
} else if (eObject instanceof Attribute) {
return createAttributeDescription((Attribute) eObject, acceptor);
} else if (eObject instanceof RosettaRule) {
return createRosettaRuleDescription((RosettaRule) eObject, acceptor);
}
} catch (Exception exc) {
LOG.error(exc.getMessage(), exc);
}
return super.createEObjectDescriptions(eObject, acceptor);
}

private boolean createRosettaModelDescription(RosettaModel model, IAcceptor<IEObjectDescription> acceptor) {
QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(model);
acceptor.accept(new RosettaModelDescription(qualifiedName, model));
return true;
}

private boolean createAttributeDescription(Attribute attr, IAcceptor<IEObjectDescription> acceptor) {
QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(attr);
String typeCall = serialize(attr.getTypeCall());
String cardinality = serialize(attr.getCard());
acceptor.accept(new AttributeDescription(qualifiedName, attr, typeCall, cardinality));
return false;
}

private boolean createRosettaRuleDescription(RosettaRule rule, IAcceptor<IEObjectDescription> acceptor) {
QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(rule);
String input = serialize(rule.getInput());
String expression = serialize(rule.getExpression());
if (qualifiedName != null) {
acceptor.accept(new RuleDescription(qualifiedName, rule, input, expression));
}
return false;
}

private String serialize(EObject eObject) {
if (eObject == null) {
return null;
}
INode node = NodeModelUtils.getNode(eObject);
if (node != null) {
return node.getText();
}
return null;
}
}

0 comments on commit 69c2d2f

Please sign in to comment.