package alien4cloud.tosca.parser.simple; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import org.yaml.snakeyaml.nodes.Node; import alien4cloud.tosca.parser.ParsingContextExecution; /** * This aspect is used to add every parsed object to the context along with it's original node. */ @Aspect @Component public class ParsingAspect { @Around("execution(* alien4cloud.tosca.parser.INodeParser.parse(..))") public Object addToContext(ProceedingJoinPoint joinPoint) throws Throwable { Object parsed = joinPoint.proceed(); if (parsed != null) { Node node = (Node) joinPoint.getArgs()[0]; ParsingContextExecution context = (ParsingContextExecution) joinPoint.getArgs()[1]; context.getObjectToNodeMap().put(parsed, node); } return parsed; } }