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
This commit is contained in:
Jan Vonka
2017-07-12 12:08:59 +00:00
parent 41bce5da29
commit 79f180d901
6 changed files with 417 additions and 8 deletions

View File

@@ -417,6 +417,24 @@
</property>
</bean>
<bean id="auditApi" class="org.alfresco.rest.api.impl.AuditImpl">
<property name="auditService" ref="AuditService" />
</bean>
<bean id="AuditApi" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Audit</value>
</property>
<property name="target">
<ref bean="auditApi" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="comments" class="org.alfresco.rest.api.impl.CommentsImpl">
<property name="nodes" ref="nodes" />
<property name="nodeService" ref="NodeService" />
@@ -794,13 +812,17 @@
<!-- API webscripts -->
<bean class="org.alfresco.rest.api.downloads.DownloadsEntityResource">
<property name="downloads" ref="Downloads" />
</bean>
<bean class="org.alfresco.rest.api.audit.AuditApplicationsEntityResource">
<property name="audit" ref="AuditApi" />
</bean>
<bean class="org.alfresco.rest.api.sites.SiteEntityResource">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.downloads.DownloadsEntityResource">
<property name="downloads" ref="Downloads" />
</bean>
<bean class="org.alfresco.rest.api.sites.SiteEntityResource">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.networks.NetworksEntityResource">
<property name="networks" ref="Networks" />

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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<AuditApp> 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<AuditEntry> listAuditEntries(String auditAppId, Parameters parameters);
/**
* Deletes a set of audit entries
*
* @param set of auditEntryIds
* @return
*/
//void deleteAuditEntries(List<Long> auditEntryIds);
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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<AuditApp>,
EntityResourceAction.Read<AuditApp>, EntityResourceAction.Update<AuditApp>, 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<AuditApp> readAll(Parameters params)
{
//return audit.listAuditApps(params);
return null; // TODO fixme
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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;

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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<String, AuditService.AuditApplication> auditApplicationsByName = auditService.getAuditApplications();
if (auditApplicationsByName != null)
{
for (AuditService.AuditApplication auditApplication : auditApplicationsByName.values())
{
if (auditApplication.getKey().equals("/" + auditAppId))
{
auditApp = auditApplication;
}
}
}
return auditApp;
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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 + "]";
}
}