001package net.gdface.codegen.webclient;
002
003import net.gdface.utils.Assert;
004import net.gdface.utils.Judge;
005
006import org.slf4j.Logger;
007import org.slf4j.LoggerFactory;
008
009public class KSoapClient<T> extends WebClient<T> implements KSoapConstants {
010        private static final Logger logger = LoggerFactory.getLogger(KSoapClient.class);
011        private final String serviceName;
012        private final String stubPackage;
013        private final String stubClassSimpleName;
014        private final String stubClassName;
015
016        public KSoapClient(Class<T> interfaceClass, Class<? extends T> refClass, Class<?> serviceClass, String serviceName,
017                        String stubPackage) {
018                super(interfaceClass, refClass, serviceClass);
019                Assert.notEmpty(stubPackage, "stubPackage");
020                this.serviceName = Judge.isEmpty(serviceName) ? serviceClass.getSimpleName() : serviceName;
021                this.stubPackage = stubPackage;
022                this.stubClassSimpleName = serviceName + "Stub";
023                this.stubClassName = new StringBuilder(this.stubPackage).append(".").append(stubClassSimpleName).toString();
024        }
025
026        @Override
027        public boolean compile() {
028                boolean compileOk = false;
029                try {
030                        if (super.compile()) {
031                                method2PortMap = createMethod2PortMapMap();
032                                addImportedClassFromMethods(method2PortMap.values());
033                                compileOk = true;
034                        }
035                } catch (NoSuchMethodException e) {
036                        logger.error(e.toString());
037                }
038                return compileOk;
039        }
040
041        /**
042         * @return serviceName
043         */
044        public String getServiceName() {
045                return serviceName;
046        }
047
048        /**
049         * @return stubPackage
050         */
051        public String getStubPackage() {
052                return stubPackage;
053        }
054
055        /**
056         * @return stubClassSimpleName
057         */
058        public String getStubClassSimpleName() {
059                return stubClassSimpleName;
060        }
061
062        /**
063         * @return stubClassName
064         */
065        public String getStubClassName() {
066                return stubClassName;
067        }
068
069}