Repository: syncope
Updated Branches:
  refs/heads/master 36cc7725f -> 80248d5bd


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/89b54dad
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/89b54dad
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/89b54dad

Branch: refs/heads/master
Commit: 89b54dad90942a9cf3a83bc9ccc7a19c14c4b914
Parents: 6852628
Author: massi <[email protected]>
Authored: Wed Oct 14 11:41:39 2015 +0200
Committer: massi <[email protected]>
Committed: Wed Oct 14 11:41:39 2015 +0200

----------------------------------------------------------------------
 .../syncope/common/lib/types/Entitlement.java   |  4 +++
 .../apache/syncope/core/logic/LoggerLogic.java  | 26 ++++++++++++++++++++
 .../rest/cxf/service/LoggerServiceImpl.java     | 16 ++++++------
 .../fit/core/reference/ConfigurationITCase.java |  1 -
 .../fit/core/reference/LoggerITCase.java        | 16 ++++++++++++
 5 files changed, 55 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java
index 406b805..20b8347 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java
@@ -222,6 +222,8 @@ public final class Entitlement {
 
     public static final String REPORT_EXECUTE = "REPORT_EXECUTE";
 
+    public static final String LOG_READ = "LOG_READ";
+
     public static final String LOG_LIST = "LOG_LIST";
 
     public static final String LOG_SET_LEVEL = "LOG_SET_LEVEL";
@@ -230,6 +232,8 @@ public final class Entitlement {
 
     public static final String AUDIT_LIST = "AUDIT_LIST";
 
+    public static final String AUDIT_READ = "AUDIT_READ";
+
     public static final String AUDIT_ENABLE = "AUDIT_ENABLE";
 
     public static final String AUDIT_DISABLE = "AUDIT_DISABLE";

http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
----------------------------------------------------------------------
diff --git 
a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java 
b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
index d7a4dd7..30e7374 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
@@ -134,6 +134,32 @@ public class LoggerLogic extends 
AbstractTransactionalLogic<LoggerTO> {
         throw sce;
     }
 
+    @PreAuthorize("hasRole('" + Entitlement.LOG_READ + "') and 
authentication.details.domain == "
+            + 
"T(org.apache.syncope.common.lib.SyncopeConstants).MASTER_DOMAIN")
+    @Transactional(readOnly = true)
+    public LoggerTO readLog(final String name) {
+        for (final LoggerTO logger : listLogs()) {
+            if (logger.getKey().equals(name)) {
+                return logger;
+            }
+        }
+        throw new NotFoundException("Logger " + name);
+    }
+
+    @PreAuthorize("hasRole('" + Entitlement.AUDIT_READ + "')")
+    @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.setKey(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) {
         Logger syncopeLogger = loggerDAO.find(name);
         if (syncopeLogger == null) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
 
b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
index 4379754..32ae12c 100644
--- 
a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
+++ 
b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
@@ -21,7 +21,6 @@ package org.apache.syncope.core.rest.cxf.service;
 import java.text.ParseException;
 import java.util.List;
 import javax.ws.rs.BadRequestException;
-import javax.ws.rs.NotFoundException;
 import org.apache.syncope.common.lib.to.EventCategoryTO;
 import org.apache.syncope.common.lib.to.LoggerTO;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
@@ -76,13 +75,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.getKey().equals(name)) {
-                return l;
-            }
+        switch (type) {
+            case LOG:
+                return logic.readLog(name);
+
+            case AUDIT:
+                return logic.readAudit(name);
+
+            default:
+                throw new BadRequestException();
         }
-        throw new NotFoundException();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java
index 4635be5..68761cd 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java
@@ -85,7 +85,6 @@ public class ConfigurationITCase extends AbstractITCase {
 
         actual = configurationService.get(tokenLength.getSchema());
         assertEquals(actual, tokenLength);
-
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java
index fb93618..6655342 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.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.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.EventCategoryTO;
 import org.apache.syncope.common.lib.to.LoggerTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -211,4 +215,16 @@ public class LoggerITCase extends AbstractITCase {
         }
         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