fixing the [Incident #12563] Error when trying to publish the content of a workspace folder into the catalogue</Change>

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@171733 82a268e6-3cf1-43bd-a215-b396298e98cf
migrate-to-catalogue-util-library_#19764
Francesco Mangiacrapa 6 years ago
parent 232be5c370
commit ea24c207dc

@ -3,11 +3,11 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.source=1.7

@ -1,4 +1,9 @@
<ReleaseNotes>
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-4-0"
date="2018-09-28">
<Change>[Incident #12563] Error when trying to publish the content of a workspace folder into the catalogue</Change>
</Changeset>
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-3-3"
date="2018-03-02">
@ -39,9 +44,11 @@
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-2-0"
date="2016-12-11">
<Change>A post is automatically created by the Product Catalogue user
every time someone publishes</Change>
every time someone publishes
</Change>
<Change>The user now can select all files in the hierarchy and publish
them</Change>
them
</Change>
<Change>The user can now associate the product to the available groups
</Change>
<Change>Removed ASL session dependency</Change>
@ -52,7 +59,8 @@
<Change>Creation of a group is now supported</Change>
<Change>Association of a dataset to a group is now supported</Change>
<Change>Products are copied to .catalogue area when publishing is
performed from workspace</Change>
performed from workspace
</Change>
</Changeset>
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-0-0"

@ -12,7 +12,7 @@
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>ckan-metadata-publisher-widget</artifactId>
<version>1.3.3-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<name>gCube Ckan metadata publisher widget</name>
<description>

@ -16,8 +16,8 @@ import javax.servlet.http.HttpSession;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogue;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueFactory;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.SessionCatalogueAttributes;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.CatalogueUtilMethods;
import org.gcube.datacatalogue.ckanutillibrary.server.utils.SessionCatalogueAttributes;
import org.gcube.datacatalogue.ckanutillibrary.shared.ResourceBean;
import org.gcube.datacatalogue.ckanutillibrary.shared.RolesCkanGroupOrOrg;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherService;
@ -79,7 +79,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
DataCatalogue instance = null;
String scopeInWhichDiscover = null;
try{
scopeInWhichDiscover = (scope != null && !scope.isEmpty()) ? scope : GenericUtils.getCurrentContext(getThreadLocalRequest(), false);
scopeInWhichDiscover = scope != null && !scope.isEmpty() ? scope : GenericUtils.getCurrentContext(getThreadLocalRequest(), false);
logger.debug("Discovering ckan instance into scope " + scopeInWhichDiscover);
instance = DataCatalogueFactory.getFactory().getUtilsPerScope(scopeInWhichDiscover);
}catch(Exception e){
@ -92,8 +92,8 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
* Retrieve the list of organizations in which the user can publish (roles ADMIN/EDITOR)
* @param username
* @return the list of organizations
* @throws GroupRetrievalFault
* @throws UserManagementSystemException
* @throws GroupRetrievalFault
* @throws UserManagementSystemException
*/
private List<OrganizationBean> getUserOrganizationsListAdmin(String username, String scope) throws UserManagementSystemException, GroupRetrievalFault {
@ -124,11 +124,11 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
try {
UserLocalServiceUtil.getService();
return true;
}
catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) {
}
catch (com.liferay.portal.kernel.bean.BeanLocatorException ex) {
logger.trace("Development Mode ON");
return false;
}
}
}
/**
@ -136,7 +136,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
* @param chosenLicense
* @return
*/
private String findLicenseIdByLicense(String chosenLicense) {
private String findLicenseIdByLicense(String chosenLicense) {
// get scope from client url
String scope = GenericUtils.getScopeFromClientUrl(getThreadLocalRequest());
@ -259,12 +259,12 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
/**
* Discover from the IS the vocabulary of tags for this scope, if present
* @return a list of tags vocabulary
* @throws Exception
* @throws Exception
*/
private List<String> discoverTagsVocabulary(String context){
logger.debug("Looking for vocabulary of tags in this context " + context);
String keyPerVocabulary = CatalogueUtilMethods.concatenateSessionKeyScope(TAGS_VOCABULARY_KEY, context);
String keyPerVocabulary = CatalogueUtilMethods.concatenateSessionKeyScope(TAGS_VOCABULARY_KEY, context);
List<String> vocabulary = (List<String>) getThreadLocalRequest().getSession().getAttribute(keyPerVocabulary);
if(vocabulary == null){
@ -323,7 +323,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
String userApiKey = utils.getApiKeyFromUsername(userName);
String datasetId = utils.createCKanDatasetMultipleCustomFields
(userApiKey, title, null, organizationNameOrId, author, authorMail, maintainer,
(userApiKey, title, null, organizationNameOrId, author, authorMail, maintainer,
maintainerMail, version, description, licenseId, listOfTags, customFields, resources, setPublic);
if(datasetId != null){
@ -343,7 +343,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
// start a thread that will associate this dataset with the group
if(/*toCreate.getChosenType() != null ||*/ toCreate.getGroups() != null){
AssociationToGroupAndNotifyThread threadAssociationToGroup =
AssociationToGroupAndNotifyThread threadAssociationToGroup =
new AssociationToGroupAndNotifyThread(
toCreate.getGroups(),
toCreate.getGroupsForceCreation(),
@ -352,8 +352,8 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
datasetId,
toCreate.getTitle(),
GenericUtils.getCurrentUser(getThreadLocalRequest()).getFullname(),
userName,
utils,
userName,
utils,
organizationNameOrId,
getThreadLocalRequest()
);
@ -362,14 +362,14 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
}
// launch notification thread
WritePostCatalogueManagerThread threadWritePost =
WritePostCatalogueManagerThread threadWritePost =
new WritePostCatalogueManagerThread(
userName,
scope,
toCreate.getTitle(),
datasetUrl,
false, // send notification to other people
toCreate.getTags(),
scope,
toCreate.getTitle(),
datasetUrl,
false, // send notification to other people
toCreate.getTags(),
GenericUtils.getCurrentUser(getThreadLocalRequest()).getFullname(),
GenericUtils.getCurrentClientUrl(getThreadLocalRequest())
);
@ -405,11 +405,11 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
ResourceBean resourceBean = new ResourceBean(
resource.getUrl(),
resource.getName(),
resource.getDescription(),
null,
username,
resource.getUrl(),
resource.getName(),
resource.getDescription(),
null,
username,
datasetId,
null);
@ -546,17 +546,26 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
logger.info("Found user's groups in session " + toReturn);
}else{
DataCatalogue catalogue = getCatalogue(scope);
String apiKey = catalogue.getApiKeyFromUsername(username);
Map<String, Map<CkanGroup, RolesCkanGroupOrOrg>> mapRoleGroup = catalogue.getUserRoleByGroup(username, apiKey);
Set<Entry<String, Map<CkanGroup, RolesCkanGroupOrOrg>>> set = mapRoleGroup.entrySet();
for (Entry<String, Map<CkanGroup, RolesCkanGroupOrOrg>> entry : set) {
Set<Entry<CkanGroup, RolesCkanGroupOrOrg>> subSet = entry.getValue().entrySet();
for (Entry<CkanGroup, RolesCkanGroupOrOrg> subEntry : subSet) {
toReturn.add(new OrganizationBean(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false));
}
//Fixing Incident #12563
try{
DataCatalogue catalogue = getCatalogue(scope);
String apiKey = catalogue.getApiKeyFromUsername(username);
//Fixing Incident #12563
if(apiKey!=null && !apiKey.isEmpty()){
Map<String, Map<CkanGroup, RolesCkanGroupOrOrg>> mapRoleGroup = catalogue.getUserRoleByGroup(username, apiKey);
Set<Entry<String, Map<CkanGroup, RolesCkanGroupOrOrg>>> set = mapRoleGroup.entrySet();
for (Entry<String, Map<CkanGroup, RolesCkanGroupOrOrg>> entry : set) {
Set<Entry<CkanGroup, RolesCkanGroupOrOrg>> subSet = entry.getValue().entrySet();
for (Entry<CkanGroup, RolesCkanGroupOrOrg> subEntry : subSet) {
toReturn.add(new OrganizationBean(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false));
}
}
httpSession.setAttribute(keyPerScopeGroups, toReturn);
}else
logger.warn("The API_KEY for "+username+ " is null or empty in the catalogue: "+catalogue.getCatalogueUrl());
}catch(Exception e){
logger.error("Error on recovery the user groups for "+username, e);
}
httpSession.setAttribute(keyPerScopeGroups, toReturn);
}
}else{
logger.warn("Dev mode detected");

Loading…
Cancel
Save