public static ReferenceTreatment createReferenceTreatment(ReferenceRealization referenceRealization, ReferenceElement reference) { final ReferenceTreatment result; if (referenceRealization.getRealizationType() == ReferenceRealizationEnum.LINK) { result = createReferenceLink(referenceRealization); } else { result = createReferenceEmbed(referenceRealization); } result.setReferenceElement(reference); boolean isDefaultRealization = referenceRealization.eContainer() instanceof ResourceAPI; if (isDefaultRealization) { markWithDefaultRealization(result); } return result; }
IScope scope_ObjectRealization_exclusivePropertyList(ReferenceRealization referenceRealization, EReference eRef) { Structure type = referenceRealization.getDataType(); if (type != null) { Collection<? extends EObject> result = getAllFeatures(type); if (referenceRealization.getRealizationType() == ReferenceRealizationEnum.LINK) { result = Lists.newArrayList(Iterables.filter(result, PrimitiveProperty.class)); } return Scopes.scopeFor(result); } return null; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public ObjectRealization getLinkDescriptor() { if (getReferenceRealization() != null) { return getReferenceRealization().getLinkDescriptor(); } return null; }
public static ReferenceRealization createReferenceEmbed(ResourceAPI context, ReferenceTreatmentDescriptor reference) { ReferenceRealization referenceEmbed = rapidmlFactory.createReferenceRealization(); referenceEmbed.setRealizationType(ReferenceRealizationEnum.EMBED); referenceEmbed.setDataType(reference.getTargetDataType()); ObjectRealization propertyList = rapidmlFactory.createObjectRealization(); referenceEmbed.setInlineObjectRealization(propertyList); return referenceEmbed; }
private ReferenceRealization createDefaultReferenceLink(ResourceAPI context, ReferenceTreatmentDescriptor reference) { ReferenceRealization referenceLink = rapidmlFactory.createReferenceRealization(); referenceLink.setRealizationType(ReferenceRealizationEnum.LINK); referenceLink.setDataType(reference.getTargetDataType()); ObjectRealization objectRealization = getLinkDescriptor(reference); if (objectRealization == null) { objectRealization = rapidmlFactory.createObjectRealization(); referenceLink.setInlineObjectRealization(objectRealization); } referenceLink.setTargetResource(getDefaultResource(reference)); // TODO move linkRelation from ReferenceTreatment to ReferenceRealization and set it here referenceLink.setProperties(objectRealization); return referenceLink; }
public ReferenceRealization buildReferenceRealization(final EffectiveRealization realization) { final ReferenceRealization referenceRealization = this.rapidmlFactory.createReferenceRealization(); referenceRealization.setRealizationType(ReferenceRealizationEnum.EMBED); referenceRealization.setEffectiveRealization(realization); referenceRealization.setDataType(realization.getType()); boolean _isEmpty = realization.getLinks().isEmpty(); boolean _not = (!_isEmpty); if (_not) { referenceRealization.setRealizationType(ReferenceRealizationEnum.LINK); final Map.Entry<String, ServiceDataResource> linkInfo = ((Map.Entry<String, ServiceDataResource>[])Conversions.unwrapArray(realization.getLinks().entrySet(), Map.Entry.class))[0]; referenceRealization.setTargetResource(linkInfo.getValue()); final Extension tag = TagUtils.addTag(referenceRealization, TagUtils.LINK_RELATION); tag.setValue(linkInfo.getKey()); } return referenceRealization; } }
IScope scope_ReferenceTreatment_referenceElement(ReferenceTreatment referenceTreatment, EReference eRef) { EObject econtainer = referenceTreatment.eContainer(); final Structure contextDataType; if (econtainer instanceof ReferenceEmbed) { contextDataType = ((ReferenceEmbed) econtainer).getReferenceElement().getDataType(); } else if (econtainer instanceof ReferenceRealization) { contextDataType = ((ReferenceTreatment) ((ReferenceRealization) econtainer).eContainer()) .getReferenceElement().getDataType(); } else if (econtainer instanceof TypedMessage) { contextDataType = ((TypedMessage) econtainer).getActualType(); } else { contextDataType = ((RealizationContainer) econtainer).getDataType(); } Iterable<ReferenceProperty> result = Iterables.filter(getAllFeatures(contextDataType), ReferenceProperty.class); if (referenceTreatment instanceof ReferenceLink) { // leave only containment references, containment reference might // not be supported in WADL/XSD generator // result = filter(result, isContainmentReferenceProperty()); } return Scopes.scopeFor(result); }
private void normalizeUserDefinedReferenceLink(final ReferenceLink referenceLink) { maybeSetReferenceRealization(referenceLink); if (TagUtils.getTagWithName(referenceLink.getReferenceRealization().getLinkDescriptor(), TagUtils.GENERATED) .isPresent() && referenceLink.getTargetResource() instanceof ServiceDataResource) { EcoreUtil.remove(referenceLink.getReferenceRealization().getLinkDescriptor()); // This is a fix for JSON Schema generator which otherwise inlines the referenceLink markWithDefaultRealization(referenceLink); NamedLinkDescriptor linkDescriptor = ((ServiceDataResource) referenceLink.getTargetResource()).getDefaultLinkDescriptor(); referenceLink.getReferenceRealization().setProperties(linkDescriptor); } // usesDefaultObjectRealization uses getAllIncludedProperties defined in // referenceTreatmentInlineLinkDescriptorProcessor if (usesDefaultObjectRealization(referenceLink)) { markWithDefaultRealization(referenceLink); } }
public ReferenceTreatment buildReferenceTreatment(final ReferenceRealization referenceRealization) { ReferenceTreatment _xifexpression = null; ReferenceRealizationEnum _realizationType = referenceRealization.getRealizationType(); boolean _equals = Objects.equal(_realizationType, ReferenceRealizationEnum.LINK); if (_equals) { _xifexpression = this.rapidmlFactory.createReferenceLink(); } else { _xifexpression = this.rapidmlFactory.createReferenceEmbed(); } final ReferenceTreatment referenceTreatment = _xifexpression; referenceTreatment.setReferenceRealization(referenceRealization); if (((referenceTreatment instanceof ReferenceLink) && TagUtils.getTagWithName(referenceRealization, TagUtils.LINK_RELATION).isPresent())) { final String linkRel = TagUtils.getTagWithName(referenceRealization, TagUtils.LINK_RELATION).get().getValue(); ((ReferenceLink) referenceTreatment).setLinkRelation(this.linkRelationRegistry.getLinkRelation(linkRel)); } ReferenceTreatmentFactory.markWithDefaultRealization(referenceTreatment); return referenceTreatment; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<ReferenceTreatment> getAllNestedReferenceTreatments() { if (getReferenceRealization() == null) { return ECollections.emptyEList(); } List<ReferenceTreatment> allReferenceTreatments = Lists.newArrayList(getReferenceRealization().getReferenceTreatments()); Iterable<ReferenceEmbed> referenceEmbeds = Iterables.filter(allReferenceTreatments, ReferenceEmbed.class); Iterable<List<ReferenceTreatment>> nestedReferenceTreatmentsAsList = Iterables.transform(referenceEmbeds, new Function<ReferenceEmbed, List<ReferenceTreatment>>() { @Override public List<ReferenceTreatment> apply(ReferenceEmbed input) { return input.getAllNestedReferenceTreatments(); } }); Iterable<ReferenceTreatment> flatNestedReferenceTreatments = Iterables.concat(nestedReferenceTreatmentsAsList); allReferenceTreatments.addAll(Lists.newArrayList(flatNestedReferenceTreatments)); return ECollections.unmodifiableEList(allReferenceTreatments); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public ResourceDefinition getTargetResource() { if (getReferenceRealization() != null) { return getReferenceRealization().getTargetResource(); } return null; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ReferenceRealization getReferenceRealizationGen() { if (referenceRealization != null && referenceRealization.eIsProxy()) { InternalEObject oldReferenceRealization = (InternalEObject)referenceRealization; referenceRealization = (ReferenceRealization)eResolveProxy(oldReferenceRealization); if (referenceRealization != oldReferenceRealization) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, RapidmlPackage.REFERENCE_TREATMENT__REFERENCE_REALIZATION, oldReferenceRealization, referenceRealization)); } } return referenceRealization; }
private boolean usesDefaultObjectRealization(ReferenceLink link) { if (link.getReferenceRealization() == null) { return true; } boolean noInlineLinkDescriptor = (link.getReferenceRealization().getInlineObjectRealization() == null) || (link.getReferenceRealization().getInlineObjectRealization().getAllIncludedProperties().isEmpty()); boolean noLinkDescriptor = (link.getLinkDescriptor() == null) || (link.getLinkDescriptor().getAllIncludedProperties().isEmpty()); return noInlineLinkDescriptor && noLinkDescriptor; }
/** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public com.reprezen.rapidml.Structure getDataType() { if (eContainer() instanceof ServiceDataResource) { return ((ServiceDataResource) eContainer()).getDataType(); } if (eContainer() instanceof TypedMessage) { return ((TypedMessage) eContainer()).getActualType(); } if (eContainer() instanceof ReferenceRealization) { ReferenceRealization realization = (ReferenceRealization) eContainer(); ReferenceTreatment treatment = realization != null ? (ReferenceTreatment) realization.eContainer() : null; return treatment != null ? treatment.getReferenceElement().getDataType() : null; } if (eContainer() instanceof ReferenceTreatment) { return ((ReferenceTreatment) eContainer()).getReferenceElement().getDataType(); } return null; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<ReferenceTreatment> getNestedReferenceTreatments() { if (getReferenceRealization() == null) { return ECollections.emptyEList(); } return getReferenceRealization().getReferenceTreatments(); } } // ReferenceEmbedImpl
if (container instanceof ReferenceRealization) { ReferenceRealization referenceRealization = (ReferenceRealization) container; dataType = referenceRealization.getDataType(); } else { dataType = getDataType(); return allIncludedProperties; if (container instanceof ReferenceRealization && ((ReferenceRealization)container).getRealizationType() == ReferenceRealizationEnum.LINK) {
private void normalizeUserDefinedReferenceEmbed(final ReferenceEmbed embed) { maybeSetReferenceRealization(embed); removeInvalidTreatments(embed.getReferenceRealization().getReferenceTreatments()); ReferenceElement property = embed.getReferenceElement(); if (property != null) { if (!isDefailtRealization(embed)) { // Need to iterate on a copy of NestedReferenceTreatments because it can be modified during // normalization, // e.g. ReferenceLink will be deleted when it's converted to ReferenceEmbed for (ReferenceTreatment treatment : new ArrayList<>( embed.getReferenceRealization().getReferenceTreatments())) { // resolve nested reference treatments maybeConvertReferenceLinkToEmbed(embed, treatment); } } } }