1 /*******************************************************************************
2 * Copyright (c) 2012-2013,2015 University of Stuttgart.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * and the Apache License 2.0 which both accompany this distribution,
6 * and are available at http://www.eclipse.org/legal/epl-v10.html
7 * and http://www.apache.org/licenses/LICENSE-2.0
10 * Oliver Kopp - initial API and implementation
11 *******************************************************************************/
12 package org.eclipse.winery.repository.resources.entitytypes.nodetypes;
14 import java.io.StringWriter;
15 import java.util.ArrayList;
16 import java.util.Collection;
18 import javax.ws.rs.core.Response;
19 import javax.xml.namespace.QName;
21 import org.eclipse.winery.common.ids.definitions.NodeTypeId;
22 import org.eclipse.winery.common.ids.definitions.NodeTypeImplementationId;
23 import org.eclipse.winery.repository.backend.BackendUtils;
24 import org.eclipse.winery.repository.resources.entitytypes.ImplementationsOfOneType;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 import com.fasterxml.jackson.core.JsonFactory;
29 import com.fasterxml.jackson.core.JsonGenerator;
31 public class ImplementationsOfOneNodeTypeResource extends ImplementationsOfOneType {
33 private static final Logger logger = LoggerFactory.getLogger(ImplementationsOfOneNodeTypeResource.class);
37 * The constructor is different from the usual constructors as this resource
38 * does NOT store own data, but retrieves its data solely from the
39 * associated node type
41 * @param nodeTypeId the node type id, where this list of implementations
44 public ImplementationsOfOneNodeTypeResource(NodeTypeId nodeTypeId) {
49 * required by implementations.jsp
51 * @return for each node type implementation implementing the associated
55 public String getImplementationsTableData() {
57 JsonFactory jsonFactory = new JsonFactory();
58 StringWriter tableDataSW = new StringWriter();
60 JsonGenerator jGenerator = jsonFactory.createGenerator(tableDataSW);
61 jGenerator.writeStartArray();
63 Collection<NodeTypeImplementationId> allNodeTypeImplementations = BackendUtils.getAllElementsRelatedWithATypeAttribute(NodeTypeImplementationId.class, this.getTypeId().getQName());
64 for (NodeTypeImplementationId ntiID : allNodeTypeImplementations) {
65 jGenerator.writeStartArray();
66 jGenerator.writeString(ntiID.getNamespace().getDecoded());
67 jGenerator.writeString(ntiID.getXmlId().getDecoded());
68 jGenerator.writeEndArray();
70 jGenerator.writeEndArray();
73 res = tableDataSW.toString();
74 } catch (Exception e) {
75 ImplementationsOfOneNodeTypeResource.logger.error(e.getMessage(), e);
82 public String getType() {
87 public String getTypeStr() {
92 public Response getJSON() {
93 Collection<NodeTypeImplementationId> allImplementations = BackendUtils.getAllElementsRelatedWithATypeAttribute(NodeTypeImplementationId.class, this.getTypeId().getQName());
94 ArrayList<QName> res = new ArrayList<QName>(allImplementations.size());
95 for (NodeTypeImplementationId id : allImplementations) {
96 res.add(id.getQName());
98 return Response.ok().entity(res).build();