Repository: syncope Updated Branches: refs/heads/1_2_X 876fde9aa -> 5063ce6e1
Fixed SYNCOPE-708 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/5063ce6e Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/5063ce6e Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/5063ce6e Branch: refs/heads/1_2_X Commit: 5063ce6e1b6db266470e42e17cae244b789e1dc4 Parents: 876fde9 Author: massi <[email protected]> Authored: Wed Oct 14 11:51:54 2015 +0200 Committer: massi <[email protected]> Committed: Wed Oct 14 11:51:54 2015 +0200 ---------------------------------------------------------------------- .../core/rest/controller/LoggerController.java | 32 +++++++++++++++++--- .../core/services/LoggerServiceImpl.java | 15 +++++---- .../syncope/core/rest/LoggerTestITCase.java | 16 ++++++++++ 3 files changed, 53 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/5063ce6e/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java index f38d0b2..d077cd1 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/LoggerController.java @@ -116,6 +116,31 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO> throw sce; } + @PreAuthorize("hasRole('LOG_LIST')") + @Transactional(readOnly = true) + public LoggerTO readLog(final String name) { + for (final LoggerTO logger : listLogs()) { + if (logger.getName().equals(name)) { + return logger; + } + } + throw new NotFoundException("Logger " + name); + } + + @PreAuthorize("hasRole('AUDIT_LIST')") + @Transactional(readOnly = true) + public LoggerTO readAudit(final String name) { + for (final AuditLoggerName logger : listAudits()) { + if (logger.toLoggerName().equals(name)) { + final LoggerTO loggerTO = new LoggerTO(); + loggerTO.setName(logger.toLoggerName()); + loggerTO.setLevel(LoggerLevel.DEBUG); + return loggerTO; + } + } + throw new NotFoundException("Logger " + name); + } + private LoggerTO setLevel(final String name, final Level level, final LoggerType expectedType) { SyncopeLogger syncopeLogger = loggerDAO.find(name); if (syncopeLogger == null) { @@ -213,11 +238,10 @@ public class LoggerController extends AbstractTransactionalController<LoggerTO> try { final ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); - final MetadataReaderFactory metadataReaderFactory = - new CachingMetadataReaderFactory(resourcePatternResolver); + final MetadataReaderFactory metadataReaderFactory + = new CachingMetadataReaderFactory(resourcePatternResolver); - final String packageSearchPath = - ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + final String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath( SystemPropertyUtils.resolvePlaceholders(this.getClass().getPackage().getName())) + "/" + "**/*.class"; http://git-wip-us.apache.org/repos/asf/syncope/blob/5063ce6e/core/src/main/java/org/apache/syncope/core/services/LoggerServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/services/LoggerServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/LoggerServiceImpl.java index 1308e1f..2b106d1 100644 --- a/core/src/main/java/org/apache/syncope/core/services/LoggerServiceImpl.java +++ b/core/src/main/java/org/apache/syncope/core/services/LoggerServiceImpl.java @@ -80,13 +80,16 @@ public class LoggerServiceImpl extends AbstractServiceImpl implements LoggerServ @Override public LoggerTO read(final LoggerType type, final String name) { - List<LoggerTO> logger = list(type); - for (LoggerTO l : logger) { - if (l.getName().equals(name)) { - return l; - } + switch (type) { + case LOG: + return controller.readLog(name); + + case AUDIT: + return controller.readAudit(name); + + default: + throw new BadRequestException(); } - throw new NotFoundException(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/5063ce6e/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java index 58927f0..8092098 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java @@ -22,9 +22,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; import java.text.ParseException; import java.util.List; +import javax.ws.rs.core.Response; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.common.SyncopeClientException; import org.apache.syncope.common.to.EventCategoryTO; import org.apache.syncope.common.to.LoggerTO; import org.apache.syncope.common.types.AttributableType; @@ -212,4 +216,16 @@ public class LoggerTestITCase extends AbstractTest { } assertTrue(found); } + + @Test + public void issueSYNCOPE708() { + try { + loggerService.read(LoggerType.LOG, "notExists"); + fail("Read a not exists logger, it should go in exception"); + } catch (final WebServiceException ex) { + fail("Exception is WebServiceException but it should be SyncopeClientException"); + } catch (final SyncopeClientException ex) { + assertEquals(Response.Status.NOT_FOUND, ex.getType().getResponseStatus()); + } + } }
