Skip to content

Commit 4060fac

Browse files
committed
Fixed setting of role when creating user and added custom call for custom api calls
1 parent 93ed577 commit 4060fac

6 files changed

Lines changed: 58 additions & 60 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.afrozaar.wordpress</groupId>
66
<artifactId>wp-api-v2-client-java</artifactId>
7-
<version>4.11.2</version>
7+
<version>4.12.1-SNAPSHOT</version>
88

99
<packaging>jar</packaging>
1010

src/main/java/com/afrozaar/wordpress/wpapi/v2/Client.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,16 @@
1010
import com.afrozaar.wordpress.wpapi.v2.util.AuthUtil;
1111
import com.afrozaar.wordpress.wpapi.v2.util.MavenProperties;
1212
import com.afrozaar.wordpress.wpapi.v2.util.Tuples.Tuple2;
13-
1413
import com.fasterxml.jackson.annotation.JsonProperty;
1514
import com.fasterxml.jackson.databind.DeserializationFeature;
1615
import com.fasterxml.jackson.databind.JsonMappingException;
1716
import com.fasterxml.jackson.databind.ObjectMapper;
18-
1917
import com.google.common.base.Preconditions;
2018
import com.google.common.collect.ImmutableMap;
21-
2219
import org.apache.commons.beanutils.BeanUtils;
2320
import org.assertj.core.util.VisibleForTesting;
2421
import org.slf4j.Logger;
2522
import org.slf4j.LoggerFactory;
26-
2723
import org.springframework.core.io.Resource;
2824
import org.springframework.http.*;
2925
import org.springframework.http.client.ClientHttpRequestFactory;
@@ -45,7 +41,6 @@
4541
import org.springframework.web.util.UriComponentsBuilder;
4642

4743
import javax.annotation.Nullable;
48-
4944
import java.lang.reflect.InvocationTargetException;
5045
import java.net.URI;
5146
import java.net.URLDecoder;
@@ -59,7 +54,6 @@
5954

6055
import static com.afrozaar.wordpress.wpapi.v2.util.FieldExtractor.extractField;
6156
import static com.afrozaar.wordpress.wpapi.v2.util.Tuples.tuple;
62-
6357
import static java.lang.String.format;
6458
import static java.net.URLDecoder.decode;
6559
import static java.util.Objects.isNull;
@@ -200,7 +194,7 @@ public Post updatePostField(Long postId, String field, Object value) {
200194
@Override
201195
public Post deletePost(Post post) {
202196
final ResponseEntity<Post> exchange = doExchange1(Request.POST, HttpMethod.DELETE, Post.class, forExpand(post.getId()), null,
203-
null);// Deletion of a post returns the post's data before removing it.
197+
null);// Deletion of a post returns the post's data before removing it.
204198
Preconditions.checkArgument(exchange.getStatusCode().is2xxSuccessful());
205199
return exchange.getBody();
206200
}
@@ -215,7 +209,7 @@ public <T> PagedResponse<T> search(SearchRequest<T> search) {
215209
@Override
216210
public Media createMedia(Media media, Resource resource) throws WpApiParsedException {
217211
Objects.requireNonNull(resource.getFilename(),
218-
"The resource used to create a media item does not provide a filename. Please supply a Resource that overrides getFilename().");
212+
"The resource used to create a media item does not provide a filename. Please supply a Resource that overrides getFilename()");
219213

220214
try {
221215
final MultiValueMap<String, Object> uploadMap = new LinkedMultiValueMap<>();
@@ -841,6 +835,20 @@ public User deleteUser(User user, Long reassign) {
841835
}
842836
}
843837

838+
@Override
839+
public Object getCustom(String customPath, String context, Class clazz) throws NotFoundException {
840+
final Map<String, Object> params = context == null ? null : ImmutableMap.of(CONTEXT_, context);
841+
try {
842+
return doExchange1(customPath, HttpMethod.GET, clazz, new Object[0], params, null).getBody();
843+
} catch (HttpClientErrorException e) {
844+
if (e.getStatusCode().is4xxClientError() && e.getStatusCode().value() == 404) {
845+
throw new NotFoundException(e);
846+
} else {
847+
throw e;
848+
}
849+
}
850+
}
851+
844852
@Override
845853
public User updateUser(User user) {
846854
return doExchange1(Request.USER, HttpMethod.POST, User.class, forExpand(user.getId()), null, userMap.apply(user)).getBody();
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package com.afrozaar.wordpress.wpapi.v2.api;
22

3+
import com.afrozaar.wordpress.wpapi.v2.exception.NotFoundException;
34
import org.springframework.http.HttpMethod;
45
import org.springframework.http.MediaType;
56
import org.springframework.http.ResponseEntity;
67

78
import javax.annotation.Nullable;
8-
99
import java.util.Map;
1010

1111
/**
1212
* @author johan
1313
*/
1414
public interface CustomCalls {
15+
16+
Object getCustom(String customPath, String context, Class clazz) throws NotFoundException;
17+
1518
<T, B> ResponseEntity<T> doCustomExchange(String context, HttpMethod method, Class<T> typeRef, Object[] buildAndExpand,
1619
Map<String, Object> queryParams, B body, @Nullable MediaType mediaType);
1720
}

src/main/java/com/afrozaar/wordpress/wpapi/v2/api/Users.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package com.afrozaar.wordpress.wpapi.v2.api;
22

3-
import static java.util.Objects.nonNull;
4-
53
import com.afrozaar.wordpress.wpapi.v2.exception.UserNotFoundException;
64
import com.afrozaar.wordpress.wpapi.v2.exception.WpApiParsedException;
75
import com.afrozaar.wordpress.wpapi.v2.model.User;
8-
96
import org.springframework.util.LinkedMultiValueMap;
107
import org.springframework.util.MultiValueMap;
118

129
import java.util.List;
1310
import java.util.Optional;
1411
import java.util.function.Function;
1512

13+
import static java.util.Objects.nonNull;
14+
1615
public interface Users {
1716
List<User> getUsers();
1817

@@ -39,14 +38,13 @@ public interface Users {
3938
map.add("last_name", input.getLastName());
4039
map.add("name", input.getName());
4140
map.add("nickname", input.getNickname());
42-
input.getRoles().forEach(role -> map.add("role", role));
41+
input.getRoles().forEach(role -> map.add("roles", role));
4342

4443
Function<String, Optional<String>> nullableStringOptional = stringInput -> (nonNull(stringInput) && stringInput.trim().length() > 0)
4544
? Optional.of(stringInput)
4645
: Optional.empty();
4746

48-
nullableStringOptional.apply(input.getSlug())
49-
.ifPresent(slug -> map.add("slug", slug));
47+
nullableStringOptional.apply(input.getSlug()).ifPresent(slug -> map.add("slug", slug));
5048

5149
return map;
5250
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.afrozaar.wordpress.wpapi.v2.exception;
2+
3+
import org.springframework.web.client.HttpStatusCodeException;
4+
5+
public class NotFoundException extends WpApiParsedException {
6+
7+
public NotFoundException(HttpStatusCodeException cause) {
8+
super(ParsedRestException.of(cause));
9+
}
10+
}

src/test/java/com/afrozaar/wordpress/wpapi/v2/ClientLiveIT.java

Lines changed: 23 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,24 @@
11
package com.afrozaar.wordpress.wpapi.v2;
22

3-
import static com.afrozaar.wordpress.wpapi.v2.api.Taxonomies.CATEGORY;
4-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.ContentBuilder.aContent;
5-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.ExcerptBuilder.anExcerpt;
6-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.MediaBuilder.aMedia;
7-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.PageBuilder.aPage;
8-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.PostBuilder.aPost;
9-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.TermBuilder.aTerm;
10-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.TitleBuilder.aTitle;
11-
import static com.afrozaar.wordpress.wpapi.v2.model.builder.UserBuilder.aUser;
12-
import static com.afrozaar.wordpress.wpapi.v2.request.SearchRequest.Builder.aSearchRequest;
13-
import static com.afrozaar.wordpress.wpapi.v2.util.Tuples.tuple;
14-
15-
import static org.assertj.core.api.Assertions.assertThat;
16-
17-
import static java.lang.String.format;
18-
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
19-
20-
import static org.junit.Assert.fail;
21-
223
import com.afrozaar.wordpress.wpapi.v2.api.Contexts;
234
import com.afrozaar.wordpress.wpapi.v2.api.Posts;
245
import com.afrozaar.wordpress.wpapi.v2.config.ClientConfig;
256
import com.afrozaar.wordpress.wpapi.v2.config.ClientFactory;
26-
import com.afrozaar.wordpress.wpapi.v2.exception.PageNotFoundException;
27-
import com.afrozaar.wordpress.wpapi.v2.exception.PostCreateException;
28-
import com.afrozaar.wordpress.wpapi.v2.exception.TermNotFoundException;
29-
import com.afrozaar.wordpress.wpapi.v2.exception.UsernameAlreadyExistsException;
30-
import com.afrozaar.wordpress.wpapi.v2.exception.WpApiParsedException;
31-
import com.afrozaar.wordpress.wpapi.v2.model.Media;
32-
import com.afrozaar.wordpress.wpapi.v2.model.Page;
33-
import com.afrozaar.wordpress.wpapi.v2.model.Post;
34-
import com.afrozaar.wordpress.wpapi.v2.model.PostMeta;
35-
import com.afrozaar.wordpress.wpapi.v2.model.PostStatus;
36-
import com.afrozaar.wordpress.wpapi.v2.model.Taxonomy;
37-
import com.afrozaar.wordpress.wpapi.v2.model.Term;
38-
import com.afrozaar.wordpress.wpapi.v2.model.User;
7+
import com.afrozaar.wordpress.wpapi.v2.exception.*;
8+
import com.afrozaar.wordpress.wpapi.v2.model.*;
399
import com.afrozaar.wordpress.wpapi.v2.model.builder.PostBuilder;
4010
import com.afrozaar.wordpress.wpapi.v2.model.builder.UserBuilder;
4111
import com.afrozaar.wordpress.wpapi.v2.request.Request;
4212
import com.afrozaar.wordpress.wpapi.v2.request.SearchRequest;
4313
import com.afrozaar.wordpress.wpapi.v2.response.PagedResponse;
4414
import com.afrozaar.wordpress.wpapi.v2.util.Tuples.Tuple2;
45-
46-
import org.springframework.core.io.ClassPathResource;
47-
import org.springframework.core.io.Resource;
48-
import org.springframework.web.client.HttpServerErrorException;
49-
5015
import org.apache.commons.lang.RandomStringUtils;
51-
import org.junit.Before;
52-
import org.junit.BeforeClass;
53-
import org.junit.ClassRule;
54-
import org.junit.Ignore;
55-
import org.junit.Test;
16+
import org.junit.*;
5617
import org.slf4j.Logger;
5718
import org.slf4j.LoggerFactory;
19+
import org.springframework.core.io.ClassPathResource;
20+
import org.springframework.core.io.Resource;
21+
import org.springframework.web.client.HttpServerErrorException;
5822
import org.testcontainers.containers.GenericContainer;
5923
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
6024

@@ -65,6 +29,22 @@
6529
import java.util.Optional;
6630
import java.util.stream.IntStream;
6731

32+
import static com.afrozaar.wordpress.wpapi.v2.api.Taxonomies.CATEGORY;
33+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.ContentBuilder.aContent;
34+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.ExcerptBuilder.anExcerpt;
35+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.MediaBuilder.aMedia;
36+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.PageBuilder.aPage;
37+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.PostBuilder.aPost;
38+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.TermBuilder.aTerm;
39+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.TitleBuilder.aTitle;
40+
import static com.afrozaar.wordpress.wpapi.v2.model.builder.UserBuilder.aUser;
41+
import static com.afrozaar.wordpress.wpapi.v2.request.SearchRequest.Builder.aSearchRequest;
42+
import static com.afrozaar.wordpress.wpapi.v2.util.Tuples.tuple;
43+
import static java.lang.String.format;
44+
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
45+
import static org.assertj.core.api.Assertions.assertThat;
46+
import static org.junit.Assert.fail;
47+
6848
/**
6949
* @author johan
7050
*/
@@ -764,12 +744,11 @@ public void testCreateUser() throws WpApiParsedException {
764744
.build();
765745
final User createdUser = client.createUser(userRequest, randomAlphabetic(3), RandomStringUtils.randomAlphanumeric(3));
766746

767-
LOG.debug("createdUser: {}", createdUser);
768-
769747
assertThat(userRequest.getEmail()).isEqualTo(createdUser.getEmail());
770748
assertThat(userRequest.getDescription()).isEqualTo(createdUser.getDescription());
771749
assertThat(userRequest.getFirstName()).isEqualTo(createdUser.getFirstName());
772750
assertThat(userRequest.getLastName()).isEqualTo(createdUser.getLastName());
751+
assertThat(userRequest.getRoles()).containsAll(createdUser.getRoles());
773752
assertThat(createdUser.getId()).isNotNull();
774753
}
775754

0 commit comments

Comments
 (0)