1 /*******************************************************************************
2 * Copyright (c) 2012-2013 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.entitytemplates.policytemplates;
14 import javax.ws.rs.core.Response;
15 import javax.xml.namespace.QName;
17 import org.eclipse.winery.common.ids.definitions.PolicyTemplateId;
18 import org.eclipse.winery.model.tosca.TExtensibleElements;
19 import org.eclipse.winery.model.tosca.TPolicyTemplate;
20 import org.eclipse.winery.repository.backend.BackendUtils;
21 import org.eclipse.winery.repository.resources.AbstractComponentInstanceResource;
22 import org.eclipse.winery.repository.resources.IHasName;
23 import org.eclipse.winery.repository.resources.entitytemplates.IEntityTemplateResource;
24 import org.eclipse.winery.repository.resources.entitytemplates.PropertiesResource;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 public final class PolicyTemplateResource extends AbstractComponentInstanceResource implements IEntityTemplateResource<TPolicyTemplate>, IHasName {
30 private static final Logger logger = LoggerFactory.getLogger(PolicyTemplateResource.class);
34 * Constructor has to be public because of test cases
36 public PolicyTemplateResource(PolicyTemplateId id) {
41 * Convenience method to avoid casting at the caller's side.
43 public TPolicyTemplate getPolicyTemplate() {
44 return (TPolicyTemplate) this.getElement();
48 protected TExtensibleElements createNewElement() {
49 return new TPolicyTemplate();
53 public QName getType() {
54 return this.getPolicyTemplate().getType();
58 public Response setType(QName type) {
59 this.getPolicyTemplate().setType(type);
60 return BackendUtils.persist(this);
64 public Response setType(String typeStr) {
65 this.getPolicyTemplate().setType(QName.valueOf(typeStr));
66 return BackendUtils.persist(this);
70 public PropertiesResource getPropertiesResource() {
71 return new PropertiesResource(this.getPolicyTemplate(), this);
75 protected void copyIdToFields() {
76 this.getPolicyTemplate().setId(this.getId().getXmlId().getDecoded());
80 public String getName() {
81 String name = this.getPolicyTemplate().getName();
83 return this.getPolicyTemplate().getId();
90 public Response setName(String name) {
91 this.getPolicyTemplate().setName(name);
92 return BackendUtils.persist(this);