9821f7cb4e9c3c4552897a79b7af7686355d1b00
[parser.git] / verigraph / src / it / polito / verigraph / tosca / yaml / beans / NodeTemplateYaml.java
1 /*******************************************************************************\r
2  * Copyright (c) 2018 Politecnico di Torino and others.\r
3  *\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Apache License, Version 2.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.apache.org/licenses/LICENSE-2.0\r
8  *******************************************************************************/\r
9 package it.polito.verigraph.tosca.yaml.beans;\r
10 \r
11 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;\r
12 import com.fasterxml.jackson.annotation.*;\r
13 \r
14 //These annotations allow polimorphic deserialization of yaml text into beans by using the type field of each node\r
15 //In case a specified type is unknown the default implementation will be FieldModifierNode\r
16 @JsonIgnoreProperties(ignoreUnknown = true)\r
17 @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type", defaultImpl=FieldModifierNode.class, visible= true)\r
18 @JsonSubTypes({\r
19     @JsonSubTypes.Type(value = AntispamNode.class, name="verigraph.nodeTypes.Antispam"),\r
20     @JsonSubTypes.Type(value = CacheNode.class, name="verigraph.nodeTypes.Cache"),\r
21     @JsonSubTypes.Type(value = DpiNode.class, name="verigraph.nodeTypes.Dpi"),\r
22     @JsonSubTypes.Type(value = EndhostNode.class, name="verigraph.nodeTypes.Endhost"),\r
23     @JsonSubTypes.Type(value = EndpointNode.class, name="verigraph.nodeTypes.Endpoint"),\r
24     @JsonSubTypes.Type(value = FieldModifierNode.class, name="verigraph.nodeTypes.FieldModifier"),\r
25     @JsonSubTypes.Type(value = FirewallNode.class, name="verigraph.nodeTypes.Firewall"),\r
26     @JsonSubTypes.Type(value = MailClientNode.class, name="verigraph.nodeTypes.MailClient"),\r
27     @JsonSubTypes.Type(value = MailServerNode.class, name="verigraph.nodeTypes.MailServer"),\r
28     @JsonSubTypes.Type(value = NatNode.class, name="verigraph.nodeTypes.Nat"),\r
29     @JsonSubTypes.Type(value = VpnAccessNode.class, name="verigraph.nodeTypes.VpnAccess"),\r
30     @JsonSubTypes.Type(value = VpnExitNode.class, name="verigraph.nodeTypes.VpnExit"),\r
31     @JsonSubTypes.Type(value = WebClientNode.class, name="verigraph.nodeTypes.WebClient"),\r
32     @JsonSubTypes.Type(value = WebServerNode.class, name="verigraph.nodeTypes.WebServer")\r
33 })\r
34 public class NodeTemplateYaml {\r
35     private String name;\r
36     private String type;\r
37 \r
38     public String getName() {\r
39         return name;\r
40     }\r
41     public void setName(String name) {\r
42         this.name = name;\r
43     }\r
44     public String getType() {\r
45         return type;\r
46     }\r
47     public void setType(String type) {\r
48         this.type = type;\r
49     }\r
50 \r
51     //  //Generic YamlNode configuration to be extended in single nodes\r
52     //  public interface ConfigurationYaml {\r
53     //  }\r
54 \r
55 }\r