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
13 import com.fasterxml.jackson.core.JsonGenerator;
\r
14 import com.fasterxml.jackson.core.JsonProcessingException;
\r
15 import com.fasterxml.jackson.databind.SerializerProvider;
\r
16 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
\r
18 import it.polito.tosca.jaxb.Configuration;
\r
20 //Custom serializer for XmlToscaConfigurationObject conversion to JSON
\r
21 public class XmlConfigSerializer extends StdSerializer<Configuration> {
\r
23 //Automatically generated VersionUID
\r
24 private static final long serialVersionUID = 9102508941195129607L;
\r
26 public XmlConfigSerializer() {
\r
30 public XmlConfigSerializer(Class<Configuration> t) {
\r
35 public void serialize(
\r
36 Configuration value, JsonGenerator jgen, SerializerProvider provider)
\r
37 throws IOException, JsonProcessingException {
\r
39 if (value.getAntispamConfiguration() != null) {
\r
40 jgen.writeStartArray();
\r
41 for(String source : value.getAntispamConfiguration().getSource()) {
\r
42 jgen.writeString(source);
\r
44 jgen.writeEndArray();
\r
46 } else if (value.getCacheConfiguration() != null) {
\r
47 jgen.writeStartArray();
\r
48 for(String resource : value.getCacheConfiguration().getResource()) {
\r
49 jgen.writeString(resource);
\r
51 jgen.writeEndArray();
\r
53 } else if (value.getDpiConfiguration() != null) {
\r
54 jgen.writeStartArray();
\r
55 for(String notAllowed : value.getDpiConfiguration().getNotAllowed()) {
\r
56 jgen.writeString(notAllowed);
\r
58 jgen.writeEndArray();
\r
60 } else if (value.getEndhostConfiguration() != null) {
\r
61 jgen.writeStartArray();
\r
62 jgen.writeStartObject();
\r
64 Configuration.EndhostConfiguration endhost = value.getEndhostConfiguration();
\r
65 if (endhost.getBody() != null) jgen.writeObjectField("body", endhost.getBody());
\r
66 if (endhost.getSequence() != null) jgen.writeObjectField("sequence", endhost.getSequence());
\r
67 if (endhost.getProtocol() != null) jgen.writeObjectField("protocol", endhost.getProtocol());
\r
68 if (endhost.getEmailFrom() != null) jgen.writeObjectField("email_from", endhost.getEmailFrom());
\r
69 if (endhost.getUrl() != null) jgen.writeObjectField("url", endhost.getUrl());
\r
70 if (endhost.getOptions() != null) jgen.writeObjectField("options", endhost.getOptions());
\r
71 if (endhost.getDestination() != null) jgen.writeObjectField("destination", endhost.getDestination());
\r
73 jgen.writeEndObject();
\r
74 jgen.writeEndArray();
\r
76 } else if (value.getEndpointConfiguration() != null) {
\r
77 jgen.writeStartArray();
\r
78 jgen.writeEndArray();
\r
80 } else if (value.getFieldmodifierConfiguration() != null) {
\r
81 jgen.writeStartArray();
\r
82 jgen.writeEndArray();
\r
84 } else if (value.getFirewallConfiguration() != null) {
\r
85 jgen.writeStartArray();
\r
87 for(Configuration.FirewallConfiguration.Elements elem : value.getFirewallConfiguration().getElements()) {
\r
88 if ((elem.getSource() != null) && (elem.getDestination() != null)) {
\r
89 jgen.writeStartObject();
\r
90 jgen.writeObjectField(elem.getSource(), elem.getDestination());
\r
91 jgen.writeEndObject();
\r
95 jgen.writeEndArray();
\r
97 } else if (value.getMailclientConfiguration() != null) {
\r
98 jgen.writeStartArray();
\r
100 if (value.getMailclientConfiguration().getMailserver() != null) {
\r
101 jgen.writeStartObject();
\r
102 jgen.writeObjectField("mailserver", value.getMailclientConfiguration().getMailserver());
\r
103 jgen.writeEndObject();
\r
106 jgen.writeEndArray();
\r
108 } else if (value.getMailserverConfiguration() != null) {
\r
109 jgen.writeStartArray();
\r
110 jgen.writeEndArray();
\r
112 } else if (value.getNatConfiguration() != null) {
\r
113 jgen.writeStartArray();
\r
114 for(String source : value.getNatConfiguration().getSource()) {
\r
115 jgen.writeString(source);
\r
117 jgen.writeEndArray();
\r
119 } else if (value.getVpnaccessConfiguration() != null) {
\r
120 jgen.writeStartArray();
\r
122 if (value.getVpnaccessConfiguration().getVpnexit()!= null) {
\r
123 jgen.writeStartObject();
\r
124 jgen.writeObjectField("vpnexit", value.getVpnaccessConfiguration().getVpnexit());
\r
125 jgen.writeEndObject();
\r
128 jgen.writeEndArray();
\r
130 } else if (value.getVpnexitConfiguration() != null) {
\r
131 jgen.writeStartArray();
\r
133 if (value.getVpnexitConfiguration().getVpnaccess()!= null) {
\r
134 jgen.writeStartObject();
\r
135 jgen.writeObjectField("vpnaccess", value.getVpnexitConfiguration().getVpnaccess());
\r
136 jgen.writeEndObject();
\r
139 jgen.writeEndArray();
\r
141 } else if (value.getWebclientConfiguration() != null) {
\r
142 jgen.writeStartArray();
\r
144 if (value.getWebclientConfiguration().getNameWebServer() != null) {
\r
145 jgen.writeStartObject();
\r
146 jgen.writeObjectField("webserver", value.getWebclientConfiguration().getNameWebServer());
\r
147 jgen.writeEndObject();
\r
150 jgen.writeEndArray();
\r
152 } else if (value.getWebserverConfiguration() != null) {
\r
153 jgen.writeStartArray();
\r
154 jgen.writeEndArray();
\r
157 //Case of empty Configuration
\r
158 jgen.writeStartArray();
\r
159 jgen.writeEndArray();
\r