Changes made due to gcat-api reorganization
This commit is contained in:
parent
0476395fd0
commit
b438820f86
27
pom.xml
27
pom.xml
|
@ -135,19 +135,7 @@
|
|||
<version>1.8</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>commons-lang</groupId> -->
|
||||
<!-- <artifactId>commons-lang</artifactId> -->
|
||||
<!-- <version>2.3</version> -->
|
||||
<!-- </dependency> -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>commons-io</groupId> -->
|
||||
<!-- <artifactId>commons-io</artifactId> -->
|
||||
<!-- <version>2.6</version> -->
|
||||
<!-- </dependency> -->
|
||||
|
||||
<!-- Used to automatically convert XML to JSON -->
|
||||
<!-- Used to automatically convert XML to JSON -->
|
||||
<!-- <dependency> -->
|
||||
<!-- <groupId>org.json</groupId> -->
|
||||
<!-- <artifactId>json</artifactId> -->
|
||||
|
@ -171,6 +159,19 @@
|
|||
<artifactId>zulip-java-rest</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>gcube-jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>gcube-jackson-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>gcube-jackson-databind</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Test libraries -->
|
||||
<dependency>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package org.gcube.gcat.moderation.thread;
|
||||
|
||||
import org.gcube.common.authorization.utils.manager.SecretManager;
|
||||
import org.gcube.gcat.api.CMItemStatus;
|
||||
import org.gcube.gcat.api.moderation.CMItemStatus;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package org.gcube.gcat.moderation.thread;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.gcat.api.CMItemStatus;
|
||||
import org.gcube.gcat.api.moderation.CMItemStatus;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUser;
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,8 +8,8 @@ import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
|||
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.authorization.utils.manager.SecretManager;
|
||||
import org.gcube.gcat.api.CMItemStatus;
|
||||
import org.gcube.gcat.api.GCatConstants;
|
||||
import org.gcube.gcat.api.moderation.CMItemStatus;
|
||||
import org.gcube.gcat.api.moderation.Moderated;
|
||||
import org.gcube.gcat.moderation.thread.ModerationThread;
|
||||
import org.gcube.gcat.moderation.thread.zulip.ZulipResponse.Result;
|
||||
import org.gcube.gcat.social.SocialUsers;
|
||||
|
@ -118,7 +118,7 @@ public class ZulipStream extends ModerationThread {
|
|||
principalsArrayNode.add(gCatZulipRestExecutor.httpController.getUserName());
|
||||
|
||||
// Going to add the catalogue moderators
|
||||
Set<String> moderators = SocialUsers.getUsernamesByRole(GCatConstants.CATALOGUE_MODERATOR);
|
||||
Set<String> moderators = SocialUsers.getUsernamesByRole(Moderated.CATALOGUE_MODERATOR);
|
||||
for(String moderator : moderators) {
|
||||
principalsArrayNode.add(moderator);
|
||||
}
|
||||
|
|
|
@ -24,11 +24,12 @@ import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
|||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.scope.impl.ScopeBean;
|
||||
import org.gcube.common.scope.impl.ScopeBean.Type;
|
||||
import org.gcube.gcat.api.CMItemStatus;
|
||||
import org.gcube.gcat.api.CMItemVisibility;
|
||||
import org.gcube.gcat.api.GCatConstants;
|
||||
import org.gcube.gcat.api.Role;
|
||||
import org.gcube.gcat.api.interfaces.Moderated;
|
||||
import org.gcube.gcat.api.moderation.CMItemStatus;
|
||||
import org.gcube.gcat.api.moderation.CMItemVisibility;
|
||||
import org.gcube.gcat.api.moderation.Moderated;
|
||||
import org.gcube.gcat.api.moderation.ModerationContent;
|
||||
import org.gcube.gcat.api.roles.Role;
|
||||
import org.gcube.gcat.moderation.thread.ModerationThread;
|
||||
import org.gcube.gcat.oldutils.Validator;
|
||||
import org.gcube.gcat.profile.MetadataUtility;
|
||||
|
@ -208,7 +209,7 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
JsonNode extra = extras.get(i);
|
||||
if(extra.has(EXTRAS_KEY_KEY) &&
|
||||
extra.get(EXTRAS_KEY_KEY)!=null &&
|
||||
extra.get(EXTRAS_KEY_KEY).asText().startsWith(GCatConstants.SYSTEM_CM_PREFIX)) {
|
||||
extra.get(EXTRAS_KEY_KEY).asText().startsWith(Moderated.SYSTEM_CM_PREFIX)) {
|
||||
foundOne = true;
|
||||
}else {
|
||||
newExtras.add(extra.deepCopy());
|
||||
|
@ -822,7 +823,7 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
try {
|
||||
setApiKey(CKANUtility.getSysAdminAPI());
|
||||
readItem();
|
||||
|
||||
|
||||
if(ckanUser.getRole()!=Role.ADMIN && !isItemCreator()) {
|
||||
throw new ForbiddenException("Only " + Role.ADMIN.getPortalRole() + "s and item creator are entitled to purge an the item");
|
||||
}
|
||||
|
@ -866,7 +867,7 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
if(result.has(EXTRAS_KEY)) {
|
||||
ArrayNode extras = (ArrayNode) result.get(EXTRAS_KEY);
|
||||
for(JsonNode extra : extras) {
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY).asText().compareTo(GCatConstants.SYSTEM_CM_ITEM_STATUS) == 0) {
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY).asText().compareTo(Moderated.SYSTEM_CM_ITEM_STATUS) == 0) {
|
||||
cmItemStatusString = extra.get(EXTRAS_VALUE_KEY).asText();
|
||||
found = true;
|
||||
break;
|
||||
|
@ -895,8 +896,8 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
CMItemStatus cmItemStatus = null;
|
||||
try {
|
||||
MultivaluedMap<String,String> queryParameters = uriInfo.getQueryParameters();
|
||||
if(queryParameters.containsKey(GCatConstants.CM_ITEM_STATUS_QUERY_PARAMETER)) {
|
||||
String cmItemStatusString = queryParameters.getFirst(GCatConstants.CM_ITEM_STATUS_QUERY_PARAMETER);
|
||||
if(queryParameters.containsKey(Moderated.CM_ITEM_STATUS_QUERY_PARAMETER)) {
|
||||
String cmItemStatusString = queryParameters.getFirst(Moderated.CM_ITEM_STATUS_QUERY_PARAMETER);
|
||||
cmItemStatus = CMItemStatus.getCMItemStatusFromValue(cmItemStatusString);
|
||||
}
|
||||
}catch (Exception e) {
|
||||
|
@ -1094,12 +1095,12 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
}
|
||||
|
||||
protected void setToRejected(JsonNode jsonNode) {
|
||||
addExtraField(jsonNode, GCatConstants.SYSTEM_CM_ITEM_STATUS, CMItemStatus.REJECTED.getValue());
|
||||
addExtraField(jsonNode, Moderated.SYSTEM_CM_ITEM_STATUS, CMItemStatus.REJECTED.getValue());
|
||||
}
|
||||
|
||||
protected void setItemToPending(JsonNode jsonNode) {
|
||||
if(isModerationEnabled()) {
|
||||
addExtraField(jsonNode, GCatConstants.SYSTEM_CM_ITEM_STATUS, CMItemStatus.PENDING.getValue());
|
||||
addExtraField(jsonNode, Moderated.SYSTEM_CM_ITEM_STATUS, CMItemStatus.PENDING.getValue());
|
||||
|
||||
CMItemVisibility cmItemVisibility = CMItemVisibility.PUBLIC;
|
||||
|
||||
|
@ -1109,7 +1110,7 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
cmItemVisibility = CMItemVisibility.RESTRICTED;
|
||||
}
|
||||
}
|
||||
addExtraField(jsonNode, GCatConstants.SYSTEM_CM_ITEM_VISIBILITY, cmItemVisibility.getValue());
|
||||
addExtraField(jsonNode, Moderated.SYSTEM_CM_ITEM_VISIBILITY, cmItemVisibility.getValue());
|
||||
|
||||
((ObjectNode) jsonNode).put(PRIVATE_KEY, true);
|
||||
((ObjectNode) jsonNode).put(SEARCHABLE_KEY, false);
|
||||
|
@ -1123,23 +1124,23 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
CMItemVisibility cmItemVisibility = null;
|
||||
|
||||
for(JsonNode extra : extras) {
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY)!=null && extra.get(EXTRAS_KEY_KEY).asText().compareTo(GCatConstants.SYSTEM_CM_ITEM_STATUS) == 0) {
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY)!=null && extra.get(EXTRAS_KEY_KEY).asText().compareTo(Moderated.SYSTEM_CM_ITEM_STATUS) == 0) {
|
||||
((ObjectNode) extra).put(EXTRAS_VALUE_KEY, CMItemStatus.APPROVED.getValue());
|
||||
approvedSet = true;
|
||||
}
|
||||
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY)!=null && extra.get(EXTRAS_KEY_KEY).asText().compareTo(GCatConstants.SYSTEM_CM_ITEM_VISIBILITY) == 0) {
|
||||
if(extra.has(EXTRAS_KEY_KEY) && extra.get(EXTRAS_KEY_KEY)!=null && extra.get(EXTRAS_KEY_KEY).asText().compareTo(Moderated.SYSTEM_CM_ITEM_VISIBILITY) == 0) {
|
||||
cmItemVisibility = CMItemVisibility.getCMItemStatusFromValue(extra.get(EXTRAS_VALUE_KEY).asText());
|
||||
}
|
||||
}
|
||||
|
||||
if(!approvedSet) {
|
||||
addExtraField(jsonNode, GCatConstants.SYSTEM_CM_ITEM_STATUS, CMItemStatus.APPROVED.getValue());
|
||||
addExtraField(jsonNode, Moderated.SYSTEM_CM_ITEM_STATUS, CMItemStatus.APPROVED.getValue());
|
||||
}
|
||||
|
||||
if(cmItemVisibility==null) {
|
||||
cmItemVisibility = CMItemVisibility.PUBLIC;
|
||||
addExtraField(jsonNode, GCatConstants.SYSTEM_CM_ITEM_VISIBILITY, cmItemVisibility.getValue());
|
||||
addExtraField(jsonNode, Moderated.SYSTEM_CM_ITEM_VISIBILITY, cmItemVisibility.getValue());
|
||||
}
|
||||
|
||||
|
||||
|
@ -1252,9 +1253,6 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return getAsCleanedString(result);
|
||||
}
|
||||
throw new MethodNotSupportedException("The reject operation is available only in moderation mode");
|
||||
|
@ -1279,7 +1277,7 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
if(!ckanUser.getPortalUser().isCatalogueModerator()) {
|
||||
// Users that are not
|
||||
if(!isItemCreator()) {
|
||||
throw new NotAllowedException("Only item creator and " + GCatConstants.CATALOGUE_MODERATOR + "s are entitled to partecipate to the moderation discussion thread.");
|
||||
throw new NotAllowedException("Only item creator and " + Moderated.CATALOGUE_MODERATOR + "s are entitled to partecipate to the moderation discussion thread.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1296,4 +1294,32 @@ public class CKANPackage extends CKAN implements Moderated {
|
|||
}
|
||||
}
|
||||
|
||||
public String moderate(String json) {
|
||||
try {
|
||||
ModerationContent moderationContent = mapper.readValue(json, ModerationContent.class);
|
||||
String message = moderationContent.getMessage();
|
||||
if(moderationContent.getCMItemStatus() !=null) {
|
||||
CMItemStatus cmItemStatus = moderationContent.getCMItemStatus();
|
||||
switch (cmItemStatus) {
|
||||
case APPROVED:
|
||||
return approve(message);
|
||||
case REJECTED:
|
||||
return reject(message);
|
||||
default:
|
||||
throw new BadRequestException("Allowed moderation operations are approve, reject and message");
|
||||
}
|
||||
}else {
|
||||
if(message==null || message.compareTo("")==0) {
|
||||
throw new BadRequestException("Allowed moderation operations are approve, reject and message");
|
||||
}
|
||||
message(message);
|
||||
return null;
|
||||
}
|
||||
}catch(WebApplicationException e) {
|
||||
throw e;
|
||||
} catch(Exception e) {
|
||||
throw new InternalServerErrorException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import javax.ws.rs.core.Response.Status;
|
|||
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.authorization.utils.manager.SecretManager;
|
||||
import org.gcube.gcat.api.Role;
|
||||
import org.gcube.gcat.api.roles.Role;
|
||||
import org.gcube.gcat.social.PortalUser;
|
||||
import org.gcube.gcat.utils.RandomString;
|
||||
import org.slf4j.Logger;
|
||||
|
|
|
@ -13,7 +13,7 @@ import org.gcube.common.resources.gcore.GenericResource;
|
|||
import org.gcube.common.resources.gcore.Resources;
|
||||
import org.gcube.datacatalogue.metadatadiscovery.reader.MetadataFormatDiscovery;
|
||||
import org.gcube.datacatalogue.metadatadiscovery.reader.QueryForResourceUtil;
|
||||
import org.gcube.gcat.api.Role;
|
||||
import org.gcube.gcat.api.roles.Role;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUser;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUserCache;
|
||||
import org.gcube.gcat.utils.Constants;
|
||||
|
|
|
@ -19,7 +19,7 @@ import org.gcube.common.resources.gcore.GenericResource;
|
|||
import org.gcube.common.resources.gcore.Resources;
|
||||
import org.gcube.datacatalogue.metadatadiscovery.reader.MetadataFormatDiscovery;
|
||||
import org.gcube.datacatalogue.metadatadiscovery.reader.QueryForResourceUtil;
|
||||
import org.gcube.gcat.api.Role;
|
||||
import org.gcube.gcat.api.roles.Role;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUser;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUserCache;
|
||||
import org.gcube.gcat.utils.Constants;
|
||||
|
|
|
@ -13,6 +13,8 @@ import javax.ws.rs.PathParam;
|
|||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.ResponseBuilder;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
import javax.xml.ws.WebServiceException;
|
||||
|
||||
import org.gcube.gcat.ResourceInitializer;
|
||||
|
@ -129,22 +131,20 @@ public class Item extends REST<CKANPackage> implements org.gcube.gcat.api.interf
|
|||
return delete(name, new Boolean(purge));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String approve(String moderatorMessage) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String reject(String moderatorMessage) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void message(String message) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@POST
|
||||
@Path("/{" + ITEM_ID_PARAMETER + "}")
|
||||
@Consumes(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
|
||||
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
|
||||
public Response moderate(@PathParam(ITEM_ID_PARAMETER) String id, String json) {
|
||||
setCalledMethod("POST /" + COLLECTION_PARAMETER + "/{" + ID_PARAMETER + "}");
|
||||
CKANPackage ckanPackage = getInstance();
|
||||
ckanPackage.setName(id);
|
||||
String ret = ckanPackage.moderate(json);
|
||||
ResponseBuilder responseBuilder = Response.status(Status.ACCEPTED);
|
||||
if(ret!=null) {
|
||||
responseBuilder.entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8);
|
||||
}
|
||||
return responseBuilder.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import java.util.List;
|
|||
import javax.ws.rs.InternalServerErrorException;
|
||||
|
||||
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
||||
import org.gcube.gcat.api.GCatConstants;
|
||||
import org.gcube.gcat.api.moderation.Moderated;
|
||||
import org.gcube.gcat.utils.HTTPUtility;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
|
@ -123,7 +123,7 @@ public class PortalUser {
|
|||
|
||||
public boolean isCatalogueModerator() {
|
||||
if(catalogueModerator == null) {
|
||||
catalogueModerator = getRoles().contains(GCatConstants.CATALOGUE_MODERATOR);
|
||||
catalogueModerator = getRoles().contains(Moderated.CATALOGUE_MODERATOR);
|
||||
}
|
||||
return catalogueModerator;
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ public class Constants {
|
|||
}
|
||||
}
|
||||
|
||||
public static String getJWTAccessToken() throws Exception {
|
||||
private static String getJWTAccessToken() throws Exception {
|
||||
String contextToAuthorise = SecretManager.instance.get().getContext();
|
||||
TokenResponse tr = KeycloakClientFactory.newInstance().queryUMAToken(CLIENT_ID, getClientSecret(contextToAuthorise), contextToAuthorise, null);
|
||||
return tr.getAccessToken();
|
||||
|
|
|
@ -29,8 +29,9 @@ import org.gcube.common.resources.gcore.GenericResource;
|
|||
import org.gcube.common.resources.gcore.Resources;
|
||||
import org.gcube.common.scope.impl.ScopeBean;
|
||||
import org.gcube.gcat.ContextTest;
|
||||
import org.gcube.gcat.api.CMItemStatus;
|
||||
import org.gcube.gcat.api.GCatConstants;
|
||||
import org.gcube.gcat.api.moderation.CMItemStatus;
|
||||
import org.gcube.gcat.api.moderation.Moderated;
|
||||
import org.gcube.informationsystem.publisher.RegistryPublisher;
|
||||
import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
|
||||
import org.junit.Assert;
|
||||
|
@ -95,7 +96,7 @@ public class CKANPackageTest extends ContextTest {
|
|||
@Override
|
||||
public MultivaluedMap<String, String> getQueryParameters() {
|
||||
MultivaluedMap<String, String> mvm = new MultivaluedHashMap<String,String>();
|
||||
mvm.add(GCatConstants.CM_ITEM_STATUS_QUERY_PARAMETER, CMItemStatus.PENDING.getValue());
|
||||
mvm.add(Moderated.CM_ITEM_STATUS_QUERY_PARAMETER, CMItemStatus.PENDING.getValue());
|
||||
return mvm;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue