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.serializer;
\r
11 import java.io.IOException;
\r
12 import java.util.Map;
\r
14 import com.fasterxml.jackson.core.JsonGenerator;
\r
15 import com.fasterxml.jackson.core.JsonProcessingException;
\r
16 import com.fasterxml.jackson.databind.SerializerProvider;
\r
17 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
\r
19 import it.polito.verigraph.tosca.yaml.beans.AntispamConfigurationYaml;
\r
20 import it.polito.verigraph.tosca.yaml.beans.CacheConfigurationYaml;
\r
21 import it.polito.verigraph.tosca.yaml.beans.ConfigurationYaml;
\r
22 import it.polito.verigraph.tosca.yaml.beans.DpiConfigurationYaml;
\r
23 import it.polito.verigraph.tosca.yaml.beans.EndhostConfigurationYaml;
\r
24 import it.polito.verigraph.tosca.yaml.beans.EndpointConfigurationYaml;
\r
25 import it.polito.verigraph.tosca.yaml.beans.FieldModifierConfigurationYaml;
\r
26 import it.polito.verigraph.tosca.yaml.beans.FirewallConfigurationYaml;
\r
27 import it.polito.verigraph.tosca.yaml.beans.MailClientConfigurationYaml;
\r
28 import it.polito.verigraph.tosca.yaml.beans.MailServerConfigurationYaml;
\r
29 import it.polito.verigraph.tosca.yaml.beans.NatConfigurationYaml;
\r
30 import it.polito.verigraph.tosca.yaml.beans.VpnAccessConfigurationYaml;
\r
31 import it.polito.verigraph.tosca.yaml.beans.VpnExitConfigurationYaml;
\r
32 import it.polito.verigraph.tosca.yaml.beans.WebClientConfigurationYaml;
\r
33 import it.polito.verigraph.tosca.yaml.beans.WebServerConfigurationYaml;
\r
35 //Custom serializer for YamlToscaConfigurationObject conversion to JSON
\r
36 public class YamlConfigSerializer extends StdSerializer<ConfigurationYaml> {
\r
38 //Automatically generated VersionUID
\r
39 private static final long serialVersionUID = 9102508941195129607L;
\r
41 public YamlConfigSerializer() {
\r
45 public YamlConfigSerializer(Class<ConfigurationYaml> t) {
\r
50 public void serialize(
\r
51 ConfigurationYaml value, JsonGenerator jgen, SerializerProvider provider)
\r
52 throws IOException, JsonProcessingException {
\r
54 if(value instanceof AntispamConfigurationYaml) {
\r
55 jgen.writeStartArray();
\r
56 for(String source : ((AntispamConfigurationYaml) value).getSources()) {
\r
57 jgen.writeString(source);
\r
59 jgen.writeEndArray();
\r
61 }else if(value instanceof CacheConfigurationYaml) {
\r
62 jgen.writeStartArray();
\r
63 for(String resource : ((CacheConfigurationYaml) value).getResources()) {
\r
64 jgen.writeString(resource);
\r
66 jgen.writeEndArray();
\r
68 }else if(value instanceof DpiConfigurationYaml) {
\r
69 jgen.writeStartArray();
\r
70 for(String notAllowed : ((DpiConfigurationYaml) value).getNotAllowedList()) {
\r
71 jgen.writeString(notAllowed);
\r
73 jgen.writeEndArray();
\r
75 }else if(value instanceof EndhostConfigurationYaml) {
\r
76 jgen.writeStartArray();
\r
77 jgen.writeStartObject();
\r
79 EndhostConfigurationYaml endhost = (EndhostConfigurationYaml) value;
\r
81 if(endhost.getBody() != null)
\r
82 jgen.writeObjectField("body", endhost.getBody());
\r
83 if(endhost.getSequence() != 0)
\r
84 jgen.writeObjectField("sequence", endhost.getSequence());
\r
85 if(endhost.getProtocol() != null)
\r
86 jgen.writeObjectField("protocol", endhost.getProtocol());
\r
87 if(endhost.getEmail_from() != null)
\r
88 jgen.writeObjectField("email_from", endhost.getEmail_from());
\r
89 if(endhost.getUrl() != null)
\r
90 jgen.writeObjectField("url", endhost.getUrl());
\r
91 if(endhost.getOptions() != null)
\r
92 jgen.writeObjectField("options", endhost.getOptions());
\r
93 if(endhost.getDestination() != null)
\r
94 jgen.writeObjectField("destination", endhost.getDestination());
\r
96 jgen.writeEndObject();
\r
97 jgen.writeEndArray();
\r
99 }else if(value instanceof EndpointConfigurationYaml) {
\r
100 jgen.writeStartArray();
\r
101 jgen.writeEndArray();
\r
103 }else if(value instanceof FieldModifierConfigurationYaml) {
\r
104 jgen.writeStartArray();
\r
105 jgen.writeEndArray();
\r
107 }else if(value instanceof FirewallConfigurationYaml) {
\r
108 jgen.writeStartArray();
\r
109 FirewallConfigurationYaml fw = (FirewallConfigurationYaml) value;
\r
111 for(Map.Entry<String, String> entry : fw.getElements().entrySet()) {
\r
112 if(entry.getKey()!= null && entry.getValue() != null) {
\r
113 jgen.writeStartObject();
\r
114 jgen.writeObjectField(entry.getKey(), entry.getValue());
\r
115 jgen.writeEndObject();
\r
118 jgen.writeEndArray();
\r
120 }else if(value instanceof MailClientConfigurationYaml) {
\r
121 jgen.writeStartArray();
\r
123 if(((MailClientConfigurationYaml) value).getMailserver() != null) {
\r
124 jgen.writeStartObject();
\r
125 jgen.writeObjectField("mailserver", ((MailClientConfigurationYaml) value).getMailserver());
\r
126 jgen.writeEndObject();
\r
128 jgen.writeEndArray();
\r
130 }else if(value instanceof MailServerConfigurationYaml) {
\r
131 jgen.writeStartArray();
\r
132 jgen.writeEndArray();
\r
134 }else if(value instanceof NatConfigurationYaml) {
\r
135 jgen.writeStartArray();
\r
137 for(String source : ((NatConfigurationYaml) value).getSources()) {
\r
138 jgen.writeString(source);
\r
141 jgen.writeEndArray();
\r
143 }else if(value instanceof VpnAccessConfigurationYaml) {
\r
144 jgen.writeStartArray();
\r
146 if(((VpnAccessConfigurationYaml) value).getVpnexit()!= null) {
\r
147 jgen.writeStartObject();
\r
148 jgen.writeObjectField("vpnexit", ((VpnAccessConfigurationYaml) value).getVpnexit());
\r
149 jgen.writeEndObject();
\r
152 jgen.writeEndArray();
\r
154 }else if(value instanceof VpnExitConfigurationYaml) {
\r
155 jgen.writeStartArray();
\r
157 if(((VpnExitConfigurationYaml) value).getVpnaccess()!= null) {
\r
158 jgen.writeStartObject();
\r
159 jgen.writeObjectField("vpnaccess", ((VpnExitConfigurationYaml) value).getVpnaccess());
\r
160 jgen.writeEndObject();
\r
163 jgen.writeEndArray();
\r
165 }else if(value instanceof WebClientConfigurationYaml) {
\r
166 jgen.writeStartArray();
\r
168 if(((WebClientConfigurationYaml) value).getNameWebServer() != null) {
\r
169 jgen.writeStartObject();
\r
170 jgen.writeObjectField("webserver", ((WebClientConfigurationYaml) value).getNameWebServer());
\r
171 jgen.writeEndObject();
\r
174 jgen.writeEndArray();
\r
176 }else if(value instanceof WebServerConfigurationYaml) {
\r
177 jgen.writeStartArray();
\r
178 jgen.writeEndArray();
\r
181 jgen.writeStartArray();
\r
182 jgen.writeEndArray();
\r