diff --git a/src/main/java/org/chobit/wp/WPClient.java b/src/main/java/org/chobit/wp/WPClient.java index f209afc..a1a97cc 100644 --- a/src/main/java/org/chobit/wp/WPClient.java +++ b/src/main/java/org/chobit/wp/WPClient.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfig; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import org.chobit.wp.exception.WPClientException; import org.chobit.wp.model.request.PostFilter; @@ -32,9 +33,15 @@ class WPClient { private XmlRpcClient client; - WPClient(String xmlRpcUrl, boolean trustAll) throws MalformedURLException { + WPClient(String xmlRpcUrl, boolean trustAll, int connectTimeout, int readTimeout) throws MalformedURLException { XmlRpcClientConfigImpl c = new XmlRpcClientConfigImpl(); c.setServerURL(new URL(xmlRpcUrl)); + if (connectTimeout > 0) { + c.setConnectionTimeout(config.getConnectTimeout()); + } + if (readTimeout > 0) { + c.setReplyTimeout(config.getReadTimeout()); + } if (trustAll) { acceptAndCertificate(); } @@ -44,7 +51,8 @@ class WPClient { WPClient(WPConfig cfg) throws MalformedURLException { - this(cfg.getXmlRpcUrl(), cfg.isTrustAll()); + this(cfg.getXmlRpcUrl(), cfg.isTrustAll(), cfg.getConnectTimeout(), cfg.getReadTimeout()); + XmlRpcClientConfig c = this.client.getClientConfig(); this.config = cfg; } diff --git a/src/main/java/org/chobit/wp/WPConfig.java b/src/main/java/org/chobit/wp/WPConfig.java index 115d028..1aa1956 100644 --- a/src/main/java/org/chobit/wp/WPConfig.java +++ b/src/main/java/org/chobit/wp/WPConfig.java @@ -15,6 +15,10 @@ public final class WPConfig { private boolean trustAll; + private int connectTimeout; + + private int readTimeout; + WPConfig() { } @@ -57,4 +61,20 @@ public final class WPConfig { public void setTrustAll(boolean trustAll) { this.trustAll = trustAll; } + + public int getConnectTimeout() { + return connectTimeout; + } + + public void setConnectTimeout(int connectTimeout) { + this.connectTimeout = connectTimeout; + } + + public int getReadTimeout() { + return readTimeout; + } + + public void setReadTimeout(int readTimeout) { + this.readTimeout = readTimeout; + } } diff --git a/src/main/java/org/chobit/wp/WPConfigBuilder.java b/src/main/java/org/chobit/wp/WPConfigBuilder.java index 6bb69d0..8da9cb5 100644 --- a/src/main/java/org/chobit/wp/WPConfigBuilder.java +++ b/src/main/java/org/chobit/wp/WPConfigBuilder.java @@ -37,9 +37,30 @@ public final class WPConfigBuilder { } + public WPConfigBuilder connectTimeout(int connectTimeout) { + if (connectTimeout < 0) { + throw new IllegalArgumentException("timeout cannot be negative"); + } + this.config.setConnectTimeout(connectTimeout); + return this; + } + + + public WPConfigBuilder readTimeout(int readTimeout) { + if (readTimeout < 0) { + throw new IllegalArgumentException("timeout cannot be negative"); + } + this.config.setReadTimeout(readTimeout); + return this; + } + + public WPConfig build() { try { - WPClient client = new WPClient(config.getXmlRpcUrl(), config.isTrustAll()); + WPClient client = new WPClient(config.getXmlRpcUrl(), + config.isTrustAll(), + config.getConnectTimeout(), + config.getReadTimeout()); List list = client.getUsersBlogs(config.getUsername(), config.getPassword()); if (null == list || list.isEmpty()) { throw new WPClientException("Error in wp config, please check"); diff --git a/src/main/java/org/chobit/wp/model/request/PostRequest.java b/src/main/java/org/chobit/wp/model/request/PostRequest.java index f4b203a..9f9c11b 100644 --- a/src/main/java/org/chobit/wp/model/request/PostRequest.java +++ b/src/main/java/org/chobit/wp/model/request/PostRequest.java @@ -215,7 +215,7 @@ public class PostRequest extends Request { } @Transient - public void setCategories(String... categories) { + public void addCategories(String... categories) { if (null == termsNames) { setTermsNames(new HashMap<>(2)); } @@ -225,7 +225,7 @@ public class PostRequest extends Request { } @Transient - public void setTags(String... tags) { + public void addTags(String... tags) { if (null == termsNames) { setTermsNames(new HashMap<>(2)); } diff --git a/src/test/java/org/chobit/wp/WordPressTest.java b/src/test/java/org/chobit/wp/WordPressTest.java index 45c368b..411f4cb 100644 --- a/src/test/java/org/chobit/wp/WordPressTest.java +++ b/src/test/java/org/chobit/wp/WordPressTest.java @@ -73,8 +73,8 @@ public class WordPressTest { PostRequest post = new PostRequest(); post.setPostTitle("测试PostName"); post.setPostContent("这是一段测试文章内容"); - post.setCategories("测试"); - post.setTags("a", "b", "c"); + post.addCategories("测试"); + post.addTags("a", "b", "c"); post.setPostName("test-post-name"); int postId = wp.newPost(post); System.out.println(postId);