/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.api;
import javax.xml.namespace.QName;
import java.net.URI;
import java.util.Map;
import java.util.Set;
/**
* Описатель WEB служб из WSDL, достаточный чтобы работать на уровне сообщений.
*/
final public class ServiceDefinition {
/**
* Именованные службы.
*/
public Map<QName, Service> services;
/**
* Используемые в WSDL пространства имён.
*/
public Set<String> namespaces;
/**
* Используемые в WSDL ресурсы.
*/
public Set<URI> resources;
@Override
public String toString() {
return "{services=" + services + ", namespaces=" + namespaces + ", resources=" + resources + '}';
}
/**
* Служба SOAP.
*/
final static public class Service {
/**
* Именованные порты.
*/
public Map<QName, Port> ports;
@Override
public String toString() {
return ports == null ? "{}" : ports.toString();
}
}
/**
* Описатель HTTP порта, через который проходят SOAP-операции.
*/
final static public class Port {
/**
* Точка подключения.
*/
public String soapAddress;
/**
* Имя свзязки.
*/
public QName binding;
/**
* Имя порта.
*/
public QName port;
/**
* Именованные операции.
*/
public Map<QName, Operation> operations;
@Override
public String toString() {
return "{" +
"soapAddress='" + soapAddress + '\'' +
", binding=" + binding +
", port=" + port +
", operations=" + operations +
'}';
}
}
/**
* SOAP-oперация
*/
final static public class Operation {
/**
* HTTP заголовок SOAPAction.
*/
public String soapAction;
/**
* Входящий аргумент.
*/
public Arg in;
/**
* Исходящий аргумент.
*/
public Arg out;
@Override
public String toString() {
return "{soapAction='" + soapAction + "', in=" + in + ", out=" + out + '}';
}
}
/**
* Аргумент для SOAP-операции
*/
final static public class Arg {
/**
* Имя аргумента.
*/
public String name;
/**
* Имя типа сообщения.
*/
public QName message;
/**
* Именованные части.
*/
public Map<String, QName> parts;
@Override
public String toString() {
return "{name='" + name + "', message=" + message + ", parts=" + parts + '}';
}
}
}