public static NameHelper forModel(final ZenModel model) { NameHelper _xblockexpression = null; { String _namespace = model.getNamespace(); String _plus = (_namespace + "."); String _name = model.getName(); final String qname = (_plus + _name); NameHelper _elvis = null; NameHelper _get = NameHelper.helpers.get(qname); if (_get != null) { _elvis = _get; } else { NameHelper _xblockexpression_1 = null; { final NameHelper helper = new NameHelper(); NameHelper.helpers.put(qname, helper); _xblockexpression_1 = helper; } _elvis = _xblockexpression_1; } _xblockexpression = _elvis; } return _xblockexpression; }
public static TypeHelper forModel(final ZenModel model) { TypeHelper _xblockexpression = null; { String _namespace = model.getNamespace(); String _plus = (_namespace + "."); String _name = model.getName(); final String qname = (_plus + _name); TypeHelper _elvis = null; TypeHelper _get = TypeHelper.helpers.get(qname); if (_get != null) { _elvis = _get; } else { TypeHelper _xblockexpression_1 = null; { final TypeHelper helper = new TypeHelper(); TypeHelper.helpers.put(qname, helper); _xblockexpression_1 = helper; } _elvis = _xblockexpression_1; } _xblockexpression = _elvis; } return _xblockexpression; }
@SuppressWarnings("unused") private QualifiedName qualifiedName(ZenModel model) { if (!Strings.isEmpty(model.getNamespace())) { return QualifiedName.create(model.getNamespace().split("\\.")).append(model.getName()); //$NON-NLS-1$ } return QualifiedName.create(model.getName()); } }
/** * @param importDeclaration * import declaration * @return list of namespaces that available from imported model */ public static List<String> getImportedNamespaces(ImportDeclaration importDeclaration) { ZenModel zenModel = importDeclaration.getImportedModel(); List<String> result = new ArrayList<>(); if (zenModel != null) { String namespace = ((zenModel.getNamespace() != null) ? zenModel.getNamespace() + "." : "")// + zenModel.getName(); result.addAll(zenModel.getResourceAPIs().stream()// .map(rapi -> namespace + "." + rapi.getName()).collect(Collectors.toList())); result.addAll(zenModel.getDataModels().stream()// .map(dm -> namespace + "." + dm.getName()).collect(Collectors.toList())); Optional.ofNullable(zenModel.getSecuritySchemesLibrary())// .filter(it -> !it.getSecuritySchemes().isEmpty())// .ifPresent(it -> result.add(namespace + "." + it.getName())); } return Collections.unmodifiableList(result); }
/** * @param model * model * @return list of resource definitions that imported using import RESTfulInterfaces */ static List<ResourceDefinition> getImportedResources(ZenModel model) { ArrayList<ResourceDefinition> result = new ArrayList<>(); for (ImportDeclaration importDecl : model.getImports()) { String uri = importDecl.getImportURI(); if (!Strings.isNullOrEmpty(uri)) { Resource modelResource = importDecl.eResource(); Resource resource = getResource(modelResource, uri); if (resource != null && resource.getErrors().isEmpty() && !resource.getContents().isEmpty()) { ZenModel zenModel = (ZenModel) resource.getContents().get(0); String namespace = Strings.isNullOrEmpty(zenModel.getNamespace()) ? zenModel.getName() : zenModel .getNamespace() + "." + zenModel.getName(); //$NON-NLS-1$ for (ResourceAPI resourceAPI : zenModel.getResourceAPIs()) { String ifaceFQN = namespace + "." + resourceAPI.getName(); //$NON-NLS-1$ if (ifaceFQN.equals(importDecl.getImportedNamespace())) { result.addAll(resourceAPI.getOwnedResourceDefinitions()); } } } } } return result; }
@Override protected IScope getLocalElementsScope(IScope parent, final EObject context, final EReference reference) { IScope local = super.getLocalElementsScope(parent, context, reference); Optional<QualifiedName> localElementsQN = getLocalElementsQualifiedName(context, reference); if (localElementsQN.isPresent()) { QualifiedName importedNamespace = localElementsQN.get(); ZenModel model = context instanceof ZenModel ? (ZenModel) context : RapidmlModelUtils.getZenModel(context); if (!Strings.isEmpty(model.getNamespace())) { importedNamespace = qualifiedNameConverter.toQualifiedName(model.getNamespace()) .append(importedNamespace); } List<ImportNormalizer> namespaceResolvers = singletonList( new ImportNormalizer(importedNamespace, true, isIgnoreCase(reference))); ImportScope importScope = new ImportScope(namespaceResolvers, local, null, reference.getEReferenceType(), isIgnoreCase(reference)); return importScope; } return local; }