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());
+        }
+    }
 }

Reply via email to