summaryrefslogtreecommitdiffstats
path: root/verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java')
-rw-r--r--verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java163
1 files changed, 163 insertions, 0 deletions
diff --git a/verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java b/verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java
new file mode 100644
index 0000000..b650420
--- /dev/null
+++ b/verigraph/src/it/polito/verigraph/tosca/serializer/XmlConfigSerializer.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Politecnico di Torino and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Apache License, Version 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *******************************************************************************/
+package it.polito.verigraph.tosca.serializer;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+import it.polito.tosca.jaxb.Configuration;
+
+//Custom serializer for XmlToscaConfigurationObject conversion to JSON
+public class XmlConfigSerializer extends StdSerializer<Configuration> {
+
+ //Automatically generated VersionUID
+ private static final long serialVersionUID = 9102508941195129607L;
+
+ public XmlConfigSerializer() {
+ this(null);
+ }
+
+ public XmlConfigSerializer(Class<Configuration> t) {
+ super(t);
+ }
+
+ @Override
+ public void serialize(
+ Configuration value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+
+ if (value.getAntispamConfiguration() != null) {
+ jgen.writeStartArray();
+ for(String source : value.getAntispamConfiguration().getSource()) {
+ jgen.writeString(source);
+ }
+ jgen.writeEndArray();
+
+ } else if (value.getCacheConfiguration() != null) {
+ jgen.writeStartArray();
+ for(String resource : value.getCacheConfiguration().getResource()) {
+ jgen.writeString(resource);
+ }
+ jgen.writeEndArray();
+
+ } else if (value.getDpiConfiguration() != null) {
+ jgen.writeStartArray();
+ for(String notAllowed : value.getDpiConfiguration().getNotAllowed()) {
+ jgen.writeString(notAllowed);
+ }
+ jgen.writeEndArray();
+
+ } else if (value.getEndhostConfiguration() != null) {
+ jgen.writeStartArray();
+ jgen.writeStartObject();
+
+ Configuration.EndhostConfiguration endhost = value.getEndhostConfiguration();
+ if (endhost.getBody() != null) jgen.writeObjectField("body", endhost.getBody());
+ if (endhost.getSequence() != null) jgen.writeObjectField("sequence", endhost.getSequence());
+ if (endhost.getProtocol() != null) jgen.writeObjectField("protocol", endhost.getProtocol());
+ if (endhost.getEmailFrom() != null) jgen.writeObjectField("email_from", endhost.getEmailFrom());
+ if (endhost.getUrl() != null) jgen.writeObjectField("url", endhost.getUrl());
+ if (endhost.getOptions() != null) jgen.writeObjectField("options", endhost.getOptions());
+ if (endhost.getDestination() != null) jgen.writeObjectField("destination", endhost.getDestination());
+
+ jgen.writeEndObject();
+ jgen.writeEndArray();
+
+ } else if (value.getEndpointConfiguration() != null) {
+ jgen.writeStartArray();
+ jgen.writeEndArray();
+
+ } else if (value.getFieldmodifierConfiguration() != null) {
+ jgen.writeStartArray();
+ jgen.writeEndArray();
+
+ } else if (value.getFirewallConfiguration() != null) {
+ jgen.writeStartArray();
+
+ for(Configuration.FirewallConfiguration.Elements elem : value.getFirewallConfiguration().getElements()) {
+ if ((elem.getSource() != null) && (elem.getDestination() != null)) {
+ jgen.writeStartObject();
+ jgen.writeObjectField(elem.getSource(), elem.getDestination());
+ jgen.writeEndObject();
+ }
+ }
+
+ jgen.writeEndArray();
+
+ } else if (value.getMailclientConfiguration() != null) {
+ jgen.writeStartArray();
+
+ if (value.getMailclientConfiguration().getMailserver() != null) {
+ jgen.writeStartObject();
+ jgen.writeObjectField("mailserver", value.getMailclientConfiguration().getMailserver());
+ jgen.writeEndObject();
+ }
+
+ jgen.writeEndArray();
+
+ } else if (value.getMailserverConfiguration() != null) {
+ jgen.writeStartArray();
+ jgen.writeEndArray();
+
+ } else if (value.getNatConfiguration() != null) {
+ jgen.writeStartArray();
+ for(String source : value.getNatConfiguration().getSource()) {
+ jgen.writeString(source);
+ }
+ jgen.writeEndArray();
+
+ } else if (value.getVpnaccessConfiguration() != null) {
+ jgen.writeStartArray();
+
+ if (value.getVpnaccessConfiguration().getVpnexit()!= null) {
+ jgen.writeStartObject();
+ jgen.writeObjectField("vpnexit", value.getVpnaccessConfiguration().getVpnexit());
+ jgen.writeEndObject();
+ }
+
+ jgen.writeEndArray();
+
+ } else if (value.getVpnexitConfiguration() != null) {
+ jgen.writeStartArray();
+
+ if (value.getVpnexitConfiguration().getVpnaccess()!= null) {
+ jgen.writeStartObject();
+ jgen.writeObjectField("vpnaccess", value.getVpnexitConfiguration().getVpnaccess());
+ jgen.writeEndObject();
+ }
+
+ jgen.writeEndArray();
+
+ } else if (value.getWebclientConfiguration() != null) {
+ jgen.writeStartArray();
+
+ if (value.getWebclientConfiguration().getNameWebServer() != null) {
+ jgen.writeStartObject();
+ jgen.writeObjectField("webserver", value.getWebclientConfiguration().getNameWebServer());
+ jgen.writeEndObject();
+ }
+
+ jgen.writeEndArray();
+
+ } else if (value.getWebserverConfiguration() != null) {
+ jgen.writeStartArray();
+ jgen.writeEndArray();
+
+ } else {
+ //Case of empty Configuration
+ jgen.writeStartArray();
+ jgen.writeEndArray();
+ }
+
+ }
+}