From 79f180d90191f520f958b75ba0318a15c14a88a3 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Wed, 12 Jul 2017 12:08:59 +0000 Subject: [PATCH] Merged 5.2.N-AUDIT-API (5.2.2) to 5.2.N (5.2.2) 137839 jvonka: V1 Audit API - Retrieve Audit Application info (REPO-1785) - initial code impl (tests to follow) REPO-437, REPO-2584 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137957 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/public-rest-context.xml | 38 ++++++-- source/java/org/alfresco/rest/api/Audit.java | 90 ++++++++++++++++++ .../AuditApplicationsEntityResource.java | 85 +++++++++++++++++ .../alfresco/rest/api/audit/package-info.java | 30 ++++++ .../org/alfresco/rest/api/impl/AuditImpl.java | 92 +++++++++++++++++++ .../org/alfresco/rest/api/model/AuditApp.java | 90 ++++++++++++++++++ 6 files changed, 417 insertions(+), 8 deletions(-) create mode 100644 source/java/org/alfresco/rest/api/Audit.java create mode 100644 source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java create mode 100644 source/java/org/alfresco/rest/api/audit/package-info.java create mode 100644 source/java/org/alfresco/rest/api/impl/AuditImpl.java create mode 100644 source/java/org/alfresco/rest/api/model/AuditApp.java diff --git a/config/alfresco/public-rest-context.xml b/config/alfresco/public-rest-context.xml index 7988c8709b..2332abec29 100644 --- a/config/alfresco/public-rest-context.xml +++ b/config/alfresco/public-rest-context.xml @@ -416,7 +416,25 @@ - + + + + + + + + org.alfresco.rest.api.Audit + + + + + + + + + + + @@ -793,14 +811,18 @@ - - - - - - - + + + + + + + + + + + diff --git a/source/java/org/alfresco/rest/api/Audit.java b/source/java/org/alfresco/rest/api/Audit.java new file mode 100644 index 0000000000..f7f50cff26 --- /dev/null +++ b/source/java/org/alfresco/rest/api/Audit.java @@ -0,0 +1,90 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.rest.api; + +import org.alfresco.rest.api.model.AuditApp; +import org.alfresco.rest.framework.resource.parameters.Parameters; + +/** + * Handles audit (applications & entries) + * + * @author janv + */ +public interface Audit +{ + /** + * Gets a single audit application by id + * + * @param auditAppId + * @param parameters + * @return an audit app + */ + AuditApp getAuditApp(String auditAppId, Parameters parameters); + + /** + * Lists audit applications + * + * @param parameters + * @return Collection of audit apps + */ + //CollectionWithPagingInfo listAuditApps(Parameters parameters); + + /** + * Updates a single audit application by id + * + * @param auditAppId + * @param auditApp + * @param parameters + * @return an audit entry + */ + //AuditApp update(String auditAppId, AuditApp auditApp, Parameters parameters); + + /** + * Gets a single audit entry by id + * + * @param auditEntryId + * @param parameters + * @return an audit entry + */ + //AuditEntry getAuditEntry(long auditEntryId, Parameters parameters); + + /** + * Lists audit entries + * + * @param auditAppId if null then across all audit apps + * @param parameters + * @return Collection of audit entries + */ + //CollectionWithPagingInfo listAuditEntries(String auditAppId, Parameters parameters); + + /** + * Deletes a set of audit entries + * + * @param set of auditEntryIds + * @return + */ + //void deleteAuditEntries(List auditEntryIds); +} diff --git a/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java b/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java new file mode 100644 index 0000000000..21feec6a7c --- /dev/null +++ b/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java @@ -0,0 +1,85 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + +package org.alfresco.rest.api.audit; + + +import org.alfresco.rest.api.Audit; +import org.alfresco.rest.api.model.AuditApp; +import org.alfresco.rest.framework.WebApiDescription; +import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; +import org.alfresco.rest.framework.resource.EntityResource; +import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.util.ParameterCheck; +import org.springframework.beans.factory.InitializingBean; + +/** + * An implementation of an Entity Resource for handling audit applications + * + * @author janv + */ +@EntityResource(name="audit-applications", title = "Audit Applications") +public class AuditApplicationsEntityResource implements EntityResourceAction.ReadById, + EntityResourceAction.Read, EntityResourceAction.Update, InitializingBean +{ + private Audit audit; + + public void setAudit(Audit audit) + { + this.audit = audit; + } + + @Override + public void afterPropertiesSet() + { + ParameterCheck.mandatory("audit", this.audit); + } + + @Override + @WebApiDescription(title="", description="") + public AuditApp readById(String auditAppId, Parameters parameters) throws EntityNotFoundException + { + return audit.getAuditApp(auditAppId, parameters); + } + + @Override + @WebApiDescription(title = "Update group", description = "Update group") + public AuditApp update(String auditAppId, AuditApp auditApp, Parameters parameters) + { + //return audit.update(auditAppId, auditApp, parameters); + return null; // TODO fixme + } + + @Override + @WebApiDescription(title="", description="") + public CollectionWithPagingInfo readAll(Parameters params) + { + //return audit.listAuditApps(params); + return null; // TODO fixme + } +} diff --git a/source/java/org/alfresco/rest/api/audit/package-info.java b/source/java/org/alfresco/rest/api/audit/package-info.java new file mode 100644 index 0000000000..3f0c9a02fd --- /dev/null +++ b/source/java/org/alfresco/rest/api/audit/package-info.java @@ -0,0 +1,30 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + +@WebApi(name="alfresco", scope=Api.SCOPE.PUBLIC, version=1) +package org.alfresco.rest.api.audit; +import org.alfresco.rest.framework.Api; +import org.alfresco.rest.framework.WebApi; \ No newline at end of file diff --git a/source/java/org/alfresco/rest/api/impl/AuditImpl.java b/source/java/org/alfresco/rest/api/impl/AuditImpl.java new file mode 100644 index 0000000000..6d554235f2 --- /dev/null +++ b/source/java/org/alfresco/rest/api/impl/AuditImpl.java @@ -0,0 +1,92 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.rest.api.impl; + +import org.alfresco.rest.api.Audit; +import org.alfresco.rest.api.model.AuditApp; +import org.alfresco.rest.framework.core.exceptions.DisabledServiceException; +import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; +import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.service.cmr.audit.AuditService; + +import java.util.Map; + +/** + * Handles audit (applications & entries) + * + * @author janv + */ +public class AuditImpl implements Audit +{ + private final static String DISABLED = "Audit is disabled system-wide"; + + private AuditService auditService; + + public void setAuditService(AuditService auditService) + { + this.auditService = auditService; + } + + private void checkEnabled() + { + if (! auditService.isAuditEnabled()) + { + throw new DisabledServiceException(DISABLED); + } + } + + @Override + public AuditApp getAuditApp(String auditAppId, Parameters parameters) + { + checkEnabled(); + + AuditService.AuditApplication auditApplication = findAuditAppById(auditAppId); + + if (auditApplication == null) + { + throw new EntityNotFoundException(auditAppId); + } + + return new AuditApp(auditApplication.getKey().substring(1), auditApplication.getName(), auditApplication.isEnabled()); + } + + private AuditService.AuditApplication findAuditAppById(String auditAppId) + { + AuditService.AuditApplication auditApp = null; + Map auditApplicationsByName = auditService.getAuditApplications(); + if (auditApplicationsByName != null) + { + for (AuditService.AuditApplication auditApplication : auditApplicationsByName.values()) + { + if (auditApplication.getKey().equals("/" + auditAppId)) + { + auditApp = auditApplication; + } + } + } + return auditApp; + } +} diff --git a/source/java/org/alfresco/rest/api/model/AuditApp.java b/source/java/org/alfresco/rest/api/model/AuditApp.java new file mode 100644 index 0000000000..173ceee395 --- /dev/null +++ b/source/java/org/alfresco/rest/api/model/AuditApp.java @@ -0,0 +1,90 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.rest.api.model; + +import org.codehaus.jackson.annotate.JsonProperty; + +/** + * A representation of a Audit App + * + * @author janv + * + */ +public class AuditApp +{ + private String id; + private String name; + private Boolean isEnabled; + + public AuditApp() + { + } + + public AuditApp(String id, String name, boolean isEnabled) + { + this.id = id; + this.name = name; + this.isEnabled = isEnabled; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + @JsonProperty(value="isEnabled") + public Boolean getIsEnabled() + { + return isEnabled; + } + + @JsonProperty(value="isEnabled") + public void setIsEnabled(Boolean isEnabled) + { + this.isEnabled = isEnabled; + } + + @Override + public String toString() + { + return "AuditApp [id=" + id + ", name= " + name + ", isEnabled=" + isEnabled + "]"; + } +}