private void generateImplicitCollectionLinks(CollectionResource serviceDataResource, boolean hasRealizationRule) { ServiceDataResource targetResource = resourceFinder.findResource(serviceDataResource.getDataType(), true); boolean useReferenceLinkList = targetResource != null && serviceDataResource.isWithDefaultRealization() && !hasRealizationRule; serviceDataResource .setResourceRealizationKind(useReferenceLinkList ? CollectionRealizationEnum.REFERENCE_LINK_LIST : CollectionRealizationEnum.EMBEDDED_OBJECT_LIST); if (useReferenceLinkList) { ReferenceLink hyperlink = rapidmlFactory.createReferenceLink(); ReferenceTreatmentFactory.maybeSetReferenceRealization(hyperlink); hyperlink.getReferenceRealization().setTargetResource(targetResource); serviceDataResource.getReferenceTreatments().add(hyperlink); if (targetResource.getDefaultLinkDescriptor() != null) { hyperlink.getReferenceRealization().setProperties(targetResource.getDefaultLinkDescriptor()); } else { ObjectRealization linkDescriptor = rapidmlFactory.createObjectRealization(); // set container hyperlink.getReferenceRealization().setInlineObjectRealization(linkDescriptor); // Set by ReferenceTreatmentInlineLinkDescriptorProcessor for user-defined link descriptors hyperlink.getReferenceRealization().setProperties(linkDescriptor); } CollectionReferenceElement collectionReferenceElement = rapidmlFactory.createCollectionReferenceElement(); collectionReferenceElement.setCardinality(new int[] { 0, -1 }); collectionReferenceElement.setDataType(serviceDataResource.getDataType()); hyperlink.setReferenceElement(collectionReferenceElement); serviceDataResource.getReferenceElements().add(collectionReferenceElement); } }