summaryrefslogtreecommitdiffstats
path: root/winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java
diff options
context:
space:
mode:
authorhuangjian <huang.jian12@zte.com.cn>2016-08-31 16:47:33 +0800
committerhuangjian <huang.jian12@zte.com.cn>2016-08-31 16:47:33 +0800
commitfa49e78cc199526a9e33b59c5194f8e3bf0f0952 (patch)
tree3478e867a8f304266dbceca6e992cceca410ede4 /winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java
parent159d40f0011559c8f82338b29dca1bffd700f2c8 (diff)
Add winery source code
Change-Id: I1c5088121d79b71098c3cba1996c6f784737532e Issue-id: TOSCA-49 Signed-off-by: huangjian <huang.jian12@zte.com.cn>
Diffstat (limited to 'winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java')
-rw-r--r--winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java b/winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java
new file mode 100644
index 0000000..0fd3bd3
--- /dev/null
+++ b/winery/org.eclipse.winery.repository/src/main/java/org/eclipse/winery/repository/resources/entitytypes/nodetypes/reqandcapdefs/CapabilityDefinitionResource.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2012-2013 University of Stuttgart.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ * Oliver Kopp - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.winery.repository.resources.entitytypes.nodetypes.reqandcapdefs;
+
+import java.util.List;
+
+import javax.ws.rs.FormParam;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Response;
+import javax.xml.namespace.QName;
+
+import org.eclipse.winery.model.tosca.TCapabilityDefinition;
+import org.eclipse.winery.model.tosca.TCapabilityDefinition.Constraints;
+import org.eclipse.winery.model.tosca.TConstraint;
+import org.eclipse.winery.repository.backend.BackendUtils;
+import org.eclipse.winery.repository.resources.AbstractComponentInstanceResource;
+import org.eclipse.winery.repository.resources._support.IPersistable;
+import org.eclipse.winery.repository.resources._support.collections.IIdDetermination;
+import org.eclipse.winery.repository.resources.entitytypes.nodetypes.NodeTypeResource;
+
+/**
+ * Implementation similar to RequirementDefinitionResource, but with
+ * TCapabilityDefinition instead of TRequirementDefinition
+ */
+public final class CapabilityDefinitionResource extends AbstractReqOrCapDefResource<TCapabilityDefinition> {
+
+ private TCapabilityDefinition capDef;
+
+
+ /**
+ * Constructor has to follow the pattern of EnetityTResource as the
+ * constructor is invoked by reflection in EntityWithIdcollectionResource
+ *
+ * @param res the resource this req def is nested in. Has to be of Type
+ * "NodeTypeResource". Due to the implementation of
+ * org.eclipse.winery .repository.resources._support.collections.
+ * withid.EntityWithIdCollectionResource
+ * .getEntityResourceInstance(EntityT, int), we have to use
+ * "AbstractComponentInstanceResource" as type
+ */
+ public CapabilityDefinitionResource(IIdDetermination<TCapabilityDefinition> idDetermination, TCapabilityDefinition capDef, int idx, List<TCapabilityDefinition> list, AbstractComponentInstanceResource res) {
+ super(idDetermination, capDef, idx, list, (NodeTypeResource) res, CapabilityDefinitionResource.getConstraints(capDef));
+ this.capDef = capDef;
+ }
+
+ /**
+ * Quick hack to avoid internal server error
+ */
+ public CapabilityDefinitionResource(IIdDetermination<TCapabilityDefinition> idDetermination, TCapabilityDefinition capDef, int idx, List<TCapabilityDefinition> list, IPersistable res) {
+ this(idDetermination, capDef, idx, list, (AbstractComponentInstanceResource) res);
+ }
+
+ /**
+ * Fetch the list of constraints from the given definition. If the list does
+ * not exist, the list is created an stored in the given capDef
+ */
+ public static List<TConstraint> getConstraints(TCapabilityDefinition capDef) {
+ Constraints constraints = capDef.getConstraints();
+ if (constraints == null) {
+ constraints = new Constraints();
+ capDef.setConstraints(constraints);
+ }
+ return constraints.getConstraint();
+ }
+
+ public QName getType() {
+ return this.capDef.getCapabilityType();
+ }
+
+ @PUT
+ @Path("type")
+ public Response setType(@FormParam(value = "type") String value) {
+ QName qname = QName.valueOf(value);
+ this.capDef.setCapabilityType(qname);
+ return BackendUtils.persist(this.parent);
+ }
+
+ @Override
+ public String getId(TCapabilityDefinition e) {
+ return e.getName();
+ }
+}