1 /*******************************************************************************
\r
2 * Copyright (c) 2018 Politecnico di Torino and others.
\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
11 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
\r
12 import com.fasterxml.jackson.annotation.*;
\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
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
34 public class NodeTemplateYaml {
\r
35 private String name;
\r
36 private String type;
\r
38 public String getName() {
\r
41 public void setName(String name) {
\r
44 public String getType() {
\r
47 public void setType(String type) {
\r
51 // //Generic YamlNode configuration to be extended in single nodes
\r
52 // public interface ConfigurationYaml {
\r