From d73bc2d0cceb1b97f15d2f32cd76e01e62200245 Mon Sep 17 00:00:00 2001 From: tendongeryanawo-nasako <tenasryan@yahoo.com> Date: Wed, 21 Aug 2019 21:27:59 -0400 Subject: [PATCH] Modify user resource to include email property which would enable a user email to be edited from reference application, fixed failing tests. --- .../resource/openmrs1_8/UserResource1_8.java | 2 +- .../resource/openmrs2_0/UserResource2_0.java | 2 +- .../resource/openmrs2_2/UserResource2_2.java | 87 +++++++++++++++++++ 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 omod-2.2/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_2/UserResource2_2.java diff --git a/omod-1.8/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs1_8/UserResource1_8.java b/omod-1.8/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs1_8/UserResource1_8.java index 4a00e2a76..7b3563cb6 100644 --- a/omod-1.8/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs1_8/UserResource1_8.java +++ b/omod-1.8/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs1_8/UserResource1_8.java @@ -247,7 +247,7 @@ public void purge(UserAndPassword1_8 user, RequestContext context) throws Respon */ @Override protected NeedsPaging<UserAndPassword1_8> doSearch(RequestContext context) { - // determine roles + // determine roles List<Role> foundRoles = null; final String requestedRolesParameter = context.getParameter(PARAMETER_ROLES); if (requestedRolesParameter != null) { diff --git a/omod-2.0/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_0/UserResource2_0.java b/omod-2.0/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_0/UserResource2_0.java index ecedeecb9..7f1be988c 100644 --- a/omod-2.0/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_0/UserResource2_0.java +++ b/omod-2.0/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_0/UserResource2_0.java @@ -22,7 +22,7 @@ * {@link Resource} for User, supporting standard CRUD operations */ @Resource(name = RestConstants.VERSION_1 + "/user", supportedClass = UserAndPassword1_8.class, supportedOpenmrsVersions = { - "2.0.*", "2.1.*", "2.2.*", "2.3.*" }) + "2.0.*", "2.1.*" }) public class UserResource2_0 extends UserResource1_8 { /** diff --git a/omod-2.2/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_2/UserResource2_2.java b/omod-2.2/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_2/UserResource2_2.java new file mode 100644 index 000000000..fcc8b22c9 --- /dev/null +++ b/omod-2.2/src/main/java/org/openmrs/module/webservices/rest/web/v1_0/resource/openmrs2_2/UserResource2_2.java @@ -0,0 +1,87 @@ +/** + * 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/. OpenMRS is also distributed under + * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. + * + * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS + * graphic logo is a trademark of OpenMRS Inc. + */ +package org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs2_2; + +import io.swagger.models.Model; +import io.swagger.models.ModelImpl; +import io.swagger.models.properties.StringProperty; +import org.openmrs.User; +import org.openmrs.api.context.Context; +import org.openmrs.module.webservices.rest.web.RestConstants; +import org.openmrs.module.webservices.rest.web.annotation.Resource; +import org.openmrs.module.webservices.rest.web.representation.DefaultRepresentation; +import org.openmrs.module.webservices.rest.web.representation.FullRepresentation; +import org.openmrs.module.webservices.rest.web.representation.Representation; +import org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceDescription; +import org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs1_8.UserResource1_8; +import org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs2_0.UserResource2_0; +import org.openmrs.module.webservices.rest.web.v1_0.wrapper.openmrs1_8.UserAndPassword1_8; + +/** + * {@link Resource} for User, supporting standard CRUD operations + */ +@Resource(name = RestConstants.VERSION_1 + "/user", supportedClass = UserAndPassword1_8.class, supportedOpenmrsVersions = { + "2.2.*", "2.3.*" }) +public class UserResource2_2 extends UserResource1_8 { + + /** + * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingCrudResource#getRepresentationDescription(org.openmrs.module.webservices.rest.web.representation.Representation) + */ + @Override + public DelegatingResourceDescription getRepresentationDescription(Representation rep) { + DelegatingResourceDescription description = super.getRepresentationDescription(rep); + if (rep instanceof DefaultRepresentation) { + description.addProperty("email"); + } + else if (rep instanceof FullRepresentation) { + description.addProperty("email"); + } + return description; + } + + @Override + public DelegatingResourceDescription getCreatableProperties() { + DelegatingResourceDescription description = super.getCreatableProperties(); + description.addRequiredProperty("email"); + return description; + } + + @Override + public Model getGETModel(Representation rep) { + ModelImpl model = (ModelImpl) super.getGETModel(rep); + if (rep instanceof DefaultRepresentation || rep instanceof FullRepresentation) { + model.property("email", new StringProperty()); + } + return model; + } + + @Override + public Model getCREATEModel(Representation rep) { + return ((ModelImpl) super.getCREATEModel(rep)) + .property("email", new StringProperty()); + } + + /** + * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingCrudResource#save(java.lang.Object) + */ + @Override + public UserAndPassword1_8 save(UserAndPassword1_8 user) { + User openmrsUser = new User(); + if (user.getUser().getUserId() == null) { + openmrsUser = Context.getUserService().createUser(user.getUser(), user.getPassword()); + } else { + openmrsUser = Context.getUserService().saveUser(user.getUser()); + Context.refreshAuthenticatedUser(); + } + + return new UserAndPassword1_8(openmrsUser); + + } +}