Skip to content

Commit

Permalink
updated the return type for updateSyncDest
Browse files Browse the repository at this point in the history
  • Loading branch information
RuiChen12 committed Sep 27, 2024
1 parent db9dd19 commit cfcea50
Show file tree
Hide file tree
Showing 14 changed files with 287 additions and 303 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

import edu.hawaii.its.api.exception.AccessDeniedException;
import edu.hawaii.its.api.exception.ExceptionForTesting;
import edu.hawaii.its.api.exception.GroupingsServiceResultException;
import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException ;
import edu.hawaii.its.api.exception.UhMemberNotFoundException;
import edu.hawaii.its.api.service.EmailService;
import edu.hawaii.its.api.type.ApiError;
Expand Down Expand Up @@ -206,9 +206,9 @@ public ResponseEntity<ApiError> handleGroupingsHTTPException(GroupingsHTTPExcept

return buildResponseEntity(apiError);
}
@ExceptionHandler(GroupingsServiceResultException.class)
@ExceptionHandler(GroupingUpdatedAttributesResultException .class)
public ResponseEntity<ApiError> handleGroupingsServiceResultException(
GroupingsServiceResultException gsre) {
GroupingUpdatedAttributesResultException gsre) {
emailService.sendWithStack(gsre, "Groupings ServiceResult Exception");
ApiError.Builder errorBuilder = new ApiError.Builder()
.status(HttpStatus.INTERNAL_SERVER_ERROR)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult;
import edu.hawaii.its.api.groupings.GroupingAddResult;
import edu.hawaii.its.api.groupings.GroupingAddResults;
import edu.hawaii.its.api.groupings.GroupingDescription;
Expand Down Expand Up @@ -50,7 +51,6 @@
import edu.hawaii.its.api.service.UpdateMemberService;
import edu.hawaii.its.api.type.Announcements;
import edu.hawaii.its.api.type.AsyncJobResult;
import edu.hawaii.its.api.type.GroupingsServiceResult;
import edu.hawaii.its.api.type.OotbActiveProfile;
import edu.hawaii.its.api.type.OotbActiveProfileResult;
import edu.hawaii.its.api.type.OptRequest;
Expand Down Expand Up @@ -563,36 +563,27 @@ public ResponseEntity<GroupingUpdateDescriptionResult> updateDescription(
}

/**
* Update grouping to enable given preference.
* Update grouping to enable/disable given preference.
*/
@PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/enable")
public ResponseEntity<GroupingsServiceResult> enableSyncDest(
@PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/{status:true|false}")
public ResponseEntity<GroupingUpdatedAttributesResult> updateSyncDest(
@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String path,
@PathVariable String id) {
@PathVariable String id,
@PathVariable boolean status) {
logger.info("API called with path: " + path + ", syncDestId: " + id + ", status: " + status);
return ResponseEntity
.ok()
.body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, true));
.body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, status));
}

/**
* Update grouping to disable given preference.
*/
@PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/disable")
public ResponseEntity<GroupingsServiceResult> disableSyncDest(
@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String path,
@PathVariable String id) {
return ResponseEntity
.ok()
.body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, false));
}


/**
* Update grouping to toggle given preference.
*/
@PutMapping(value = "/groupings/{path:[\\w-:.]+}/preference/{id:[\\w-:.]+}/{type:[\\w-:.]+}")
public ResponseEntity<List<GroupingsServiceResult>> togglePreference(
public ResponseEntity<List<GroupingUpdatedAttributesResult>> togglePreference(
@RequestHeader(CURRENT_USER_KEY) String currentUser,
@PathVariable String path,
@PathVariable("id") OptType preferenceId,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package edu.hawaii.its.api.exception;

import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult;
import edu.hawaii.its.api.type.ApiSubError;


import java.io.Serial;
import java.util.ArrayList;
import java.util.List;

public class GroupingUpdatedAttributesResultException extends RuntimeException {
private List<ApiSubError> subErrors;
@Serial
private static final long serialVersionUID = 2561503964867081711L;
private GroupingUpdatedAttributesResult gsr = null;

public GroupingUpdatedAttributesResultException() {
this.subErrors = new ArrayList<>();
}

public GroupingUpdatedAttributesResultException(GroupingUpdatedAttributesResult gsr) {
this.gsr = gsr;
}

public GroupingUpdatedAttributesResult getGsr() {
return gsr;
}

public void setGsr(GroupingUpdatedAttributesResult gsr) {
this.gsr = gsr;
}

public List<ApiSubError> getSubErrors() {
return subErrors;
}

public GroupingUpdatedAttributesResultException addSubError(ApiSubError subError) {
this.subErrors.add(subError);
return this;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,30 +1,74 @@
package edu.hawaii.its.api.groupings;

import edu.hawaii.its.api.wrapper.AssignAttributesResults;
import edu.hawaii.its.api.wrapper.Subject;
import java.util.Objects;

/**
* GroupingUpdatedAttributesResult contains results of an updated attribute.
*/
public class GroupingUpdatedAttributesResult implements GroupingResult {
private final AssignAttributesResults assignAttributesResults;
private String resultCode;
private String action;
private Subject subject = null;

public GroupingUpdatedAttributesResult(AssignAttributesResults assignAttributesResults) {
if (assignAttributesResults == null) {
this.assignAttributesResults = new AssignAttributesResults();
} else {
this.assignAttributesResults = assignAttributesResults;
}
this.assignAttributesResults = Objects.requireNonNullElseGet(assignAttributesResults, AssignAttributesResults::new);
}

public GroupingUpdatedAttributesResult() {
this.assignAttributesResults = new AssignAttributesResults();
}

@Override public String getResultCode() {
return assignAttributesResults.getResultCode();

public GroupingUpdatedAttributesResult(String resultCode, String action) {
this.resultCode = resultCode;
this.action = action;
this.assignAttributesResults = new AssignAttributesResults();
}

public GroupingUpdatedAttributesResult(String resultCode, String action, Subject subject) {
this.resultCode = resultCode;
this.action = action;
this.subject = subject;
this.assignAttributesResults = new AssignAttributesResults();
}

@Override public String getGroupPath() {
public String getResultCode() {
return resultCode != null ? resultCode : assignAttributesResults.getResultCode();
}

public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}

public String getAction() {
return action;
}

public void setAction(String action) {
this.action = action;
}

public Subject getSubject() {
return subject;
}

public void setSubject(Subject subject) {
this.subject = subject;
}

@Override
public String getGroupPath() {
return assignAttributesResults.getGroup().getGroupPath();
}

public String toString() {
return "GroupingUpdatedAttributesResult{" +
"action='" + action + '\'' +
", resultCode='" + resultCode + '\'' +
", subject=" + subject +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
import java.util.ArrayList;
import java.util.List;

import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import edu.hawaii.its.api.exception.AccessDeniedException;
import edu.hawaii.its.api.exception.GroupingsServiceResultException;
import edu.hawaii.its.api.groupings.GroupingUpdateDescriptionResult;
import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult;
import edu.hawaii.its.api.type.GroupingsServiceResult;
import edu.hawaii.its.api.type.OptRequest;
import edu.hawaii.its.api.wrapper.AssignAttributesResults;
import edu.hawaii.its.api.wrapper.AssignGrouperPrivilegesResult;
Expand Down Expand Up @@ -72,11 +71,11 @@ public boolean isGroupingPath(String path) {
/**
* Turn the ability for users to opt-in/opt-out to a grouping on or off.
*/
public List<GroupingsServiceResult> changeOptStatus(OptRequest optInRequest, OptRequest optOutRequest) {
public List<GroupingUpdatedAttributesResult> changeOptStatus(OptRequest optInRequest, OptRequest optOutRequest) {

checkPrivileges(optInRequest.getGroupNameRoot(), optInRequest.getUid());

List<GroupingsServiceResult> results = new ArrayList<>();
List<GroupingUpdatedAttributesResult> results = new ArrayList<>();

results.add(assignGrouperPrivilege(
optInRequest.getUid(),
Expand All @@ -102,7 +101,7 @@ public List<GroupingsServiceResult> changeOptStatus(OptRequest optInRequest, Opt
* Turns the attribute on or off in a group.
* OPT_IN, OPT_OUT, and sync destinations are allowed.
*/
public GroupingsServiceResult changeGroupAttributeStatus(String groupPath, String ownerUhIdentifier,
public GroupingUpdatedAttributesResult changeGroupAttributeStatus(String groupPath, String ownerUhIdentifier,
String attributeName, boolean turnAttributeOn) {
logger.info(String.format("changeGroupAttributeStatus; groupPath: %s; ownerUhIdentifier: %s; attributeName: %s, turnAttributeOn: %s",
groupPath, ownerUhIdentifier, attributeName, turnAttributeOn));
Expand All @@ -129,7 +128,7 @@ public GroupingsServiceResult changeGroupAttributeStatus(String groupPath, Strin
resultCode += ", " + attributeName + " did not exist";
}
}
return new GroupingsServiceResult(resultCode, action);
return new GroupingUpdatedAttributesResult(resultCode, action);
}

// Check if attribute is on.
Expand Down Expand Up @@ -165,11 +164,11 @@ public GroupingUpdatedAttributesResult updateAttribute(String currentUser, Strin
/**
* Helper - changeOptStatus
*/
public GroupingsServiceResult assignGrouperPrivilege(String currentUser, String privilegeName, String groupName, boolean isSet) {
public GroupingUpdatedAttributesResult assignGrouperPrivilege(String currentUser, String privilegeName, String groupName, boolean isSet) {
String action = "set " + privilegeName + " " + isSet + " for " + EVERY_ENTITY + " in " + groupName;
AssignGrouperPrivilegesResult assignGrouperPrivilegesResult =
grouperService.assignGrouperPrivilegesResult(currentUser, groupName, privilegeName, EVERY_ENTITY, isSet);
return makeGroupingsServiceResult(assignGrouperPrivilegesResult.getResultCode(), action);
return makeGroupingUpdatedAttributesResult(assignGrouperPrivilegesResult.getResultCode(), action);
}

// Updates a Group's description, then passes the Group object to GrouperFactoryService to be saved in Grouper.
Expand Down Expand Up @@ -197,15 +196,14 @@ private void checkPrivileges(String groupingPath, String ownerIdentifier) {
}
}

public GroupingsServiceResult makeGroupingsServiceResult(String resultCode, String action) {
GroupingsServiceResult groupingsServiceResult = new GroupingsServiceResult();
groupingsServiceResult.setAction(action);
groupingsServiceResult.setResultCode(resultCode);

if (groupingsServiceResult.getResultCode().startsWith(FAILURE)) {
throw new GroupingsServiceResultException(groupingsServiceResult);
public GroupingUpdatedAttributesResult makeGroupingUpdatedAttributesResult(String resultCode, String action) {
GroupingUpdatedAttributesResult groupingUpdatedAttributesResult = new GroupingUpdatedAttributesResult();
groupingUpdatedAttributesResult.setAction(action);
groupingUpdatedAttributesResult.setResultCode(resultCode);
if (groupingUpdatedAttributesResult.getResultCode().startsWith(FAILURE)) {
throw new GroupingUpdatedAttributesResultException(groupingUpdatedAttributesResult);
}
return groupingsServiceResult;
return groupingUpdatedAttributesResult;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

import edu.hawaii.its.api.configuration.SpringBootWebApplication;
import edu.hawaii.its.api.exception.AccessDeniedException;
import edu.hawaii.its.api.exception.GroupingsServiceResultException;
import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException;

import edu.internet2.middleware.grouperClient.ws.GcWebServiceError;
import org.springframework.web.context.WebApplicationContext;
Expand Down Expand Up @@ -116,7 +116,7 @@ public void ErrorControllerTest() {
statusCode = errorControllerAdvice.handleGcWebServiceError(gwse).getStatusCode().toString();
assertThat(statusCode, is("404 NOT_FOUND"));

GroupingsServiceResultException gsr = new GroupingsServiceResultException();
GroupingUpdatedAttributesResultException gsr = new GroupingUpdatedAttributesResultException();
statusCode = errorControllerAdvice.handleGroupingsServiceResultException(gsr).getStatusCode().toString();
assertThat(statusCode, is("500 INTERNAL_SERVER_ERROR"));

Expand Down
Loading

0 comments on commit cfcea50

Please sign in to comment.