+ /**
+ * @param groupModel
+ * @param members
+ * @throws XmlArtifactGenerationException
+ * if the configured widget mappings do not support the widget type of a member
+ */
+ private void processVfModuleGroup(Resource groupModel, List<NodeTemplate> members)
+ throws XmlArtifactGenerationException {
+ if (members != null && !members.isEmpty()) {
+ // Get names of the members of the service group
+ List<String> memberNames = members.stream().map(NodeTemplate::getName).collect(Collectors.toList());
+ groupModel.setMembers(memberNames);
+ for (NodeTemplate member : members) {
+ processGroupMembers(groupModel, member);
+ }
+ }
+ }
+
+ /**
+ * Process the Widget members of a VF Module Group
+ *
+ * @param group
+ * the group resource model
+ * @param member
+ * the group member to process
+ * @throws XmlArtifactGenerationException
+ * if the configured widget mappings do not support the widget type of the member
+ */
+ private void processGroupMembers(Resource group, NodeTemplate member) throws XmlArtifactGenerationException {
+ Resource resource = Model.getModelFor(member.getType());
+
+ log.debug(member.getType() + " mapped to " + resource);
+
+ if (resource.hasWidgetType("L3_NET")) {
+ // An l3-network inside a vf-module is treated as a Widget
+ resource.setModelType(ModelType.WIDGET);
+ }
+
+ if (resource.getModelType() == ModelType.WIDGET) {
+ Widget widget = Widget.createWidget(resource.getWidgetType());
+ widget.addKey(member.getName());
+ // Add the widget element encountered to the Group model
+ group.addWidget(widget);
+ }