Author: jbernhardt Date: Thu Jan 24 16:19:11 2013 New Revision: 1438058 URL: http://svn.apache.org/viewvc?rev=1438058&view=rev Log: [SYNCOPE-231] * Adding LoggerService * Adding Response Header resource ID for CXF services
Modified: syncope/trunk/client/src/main/java/org/apache/syncope/client/services/proxy/LoggerServiceProxy.java syncope/trunk/common/src/main/java/org/apache/syncope/common/services/LoggerService.java syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/LoggerRestClient.java syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConfigurationServiceImpl.java syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java syncope/trunk/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java syncope/trunk/core/src/main/java/org/apache/syncope/core/services/SchemaServiceImpl.java syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java Modified: syncope/trunk/client/src/main/java/org/apache/syncope/client/services/proxy/LoggerServiceProxy.java URL: http://svn.apache.org/viewvc/syncope/trunk/client/src/main/java/org/apache/syncope/client/services/proxy/LoggerServiceProxy.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/client/src/main/java/org/apache/syncope/client/services/proxy/LoggerServiceProxy.java (original) +++ syncope/trunk/client/src/main/java/org/apache/syncope/client/services/proxy/LoggerServiceProxy.java Thu Jan 24 16:19:11 2013 @@ -18,12 +18,17 @@ */ package org.apache.syncope.client.services.proxy; -import ch.qos.logback.classic.Level; import java.util.Arrays; import java.util.List; + +import javax.ws.rs.BadRequestException; +import javax.ws.rs.NotFoundException; + import org.apache.syncope.common.services.LoggerService; import org.apache.syncope.common.to.LoggerTO; import org.apache.syncope.common.types.AuditLoggerName; +import org.apache.syncope.common.types.LoggerType; +import org.apache.syncope.common.util.CollectionWrapper; import org.springframework.web.client.RestTemplate; public class LoggerServiceProxy extends SpringServiceProxy implements LoggerService { @@ -33,33 +38,70 @@ public class LoggerServiceProxy extends } @Override - public List<LoggerTO> listLogs() { - return Arrays.asList(getRestTemplate().getForObject(baseUrl + "logger/log/list", LoggerTO[].class)); - } - - @Override - public List<AuditLoggerName> listAudits() { - return Arrays.asList(getRestTemplate().getForObject(baseUrl + "logger/audit/list", AuditLoggerName[].class)); - } - - @Override - public LoggerTO update(final String name, final Level level) { - return getRestTemplate().postForObject(baseUrl + "logger/log/{name}/{level}", null, LoggerTO.class, name, - level); - } - - @Override - public LoggerTO delete(final String name) { - return getRestTemplate().getForObject(baseUrl + "logger/log/delete/{name}", LoggerTO.class, name); - } + public List<LoggerTO> list(final LoggerType type) { + switch (type) { + case NORMAL: + return Arrays.asList(getRestTemplate().getForObject(baseUrl + "logger/log/list", LoggerTO[].class)); + + case AUDIT: + List<AuditLoggerName> auditNames = Arrays.asList(getRestTemplate().getForObject( + baseUrl + "logger/audit/list", AuditLoggerName[].class)); + return CollectionWrapper.unwrapLogger(auditNames); + + default: + throw new BadRequestException(); + } + } + + @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; + } + } + throw new NotFoundException(); + } + + @Override + public void update(final LoggerType type, final String name, final LoggerTO logger) { + switch (type) { + case NORMAL: + getRestTemplate().postForObject(baseUrl + "logger/log/{name}/{level}", null, LoggerTO.class, name, + logger.getLevel()); + break; + + case AUDIT: + try { + getRestTemplate().put(baseUrl + "logger/audit/enable", AuditLoggerName.fromLoggerName(name)); + } catch (Exception e) { + throw new BadRequestException(e); + } + break; + + default: + throw new BadRequestException(); + } + } + + @Override + public void delete(final LoggerType type, final String name) { + switch (type) { + case NORMAL: + getRestTemplate().getForObject(baseUrl + "logger/log/delete/{name}", LoggerTO.class, name); + break; + case AUDIT: + try { + getRestTemplate().put(baseUrl + "logger/audit/disable", AuditLoggerName.fromLoggerName(name)); + } catch (Exception e) { + throw new BadRequestException(e); + } + break; + + default: + throw new BadRequestException(); + } - @Override - public void enableAudit(final AuditLoggerName auditLoggerName) { - getRestTemplate().put(baseUrl + "logger/audit/enable", auditLoggerName); - } - - @Override - public void disableAudit(final AuditLoggerName auditLoggerName) { - getRestTemplate().put(baseUrl + "logger/audit/disable", auditLoggerName); } } Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/services/LoggerService.java URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/services/LoggerService.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/common/src/main/java/org/apache/syncope/common/services/LoggerService.java (original) +++ syncope/trunk/common/src/main/java/org/apache/syncope/common/services/LoggerService.java Thu Jan 24 16:19:11 2013 @@ -27,32 +27,24 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import org.apache.syncope.common.to.LoggerTO; -import org.apache.syncope.common.types.AuditLoggerName; +import org.apache.syncope.common.types.LoggerType; -import ch.qos.logback.classic.Level; - -@Path("logger") +@Path("logger/{type}") public interface LoggerService { - //TODO use list(LoggerType) signature for both normal logger and audit logger instead of two different methods @GET - List<LoggerTO> listLogs(); + @Path("{name}") + LoggerTO read(@PathParam("type") LoggerType type, @PathParam("name") final String name); @GET - @Path("audit") - List<AuditLoggerName> listAudits(); + List<LoggerTO> list(@PathParam("type") LoggerType type); @PUT @Path("{name}/level") - LoggerTO update(@PathParam("name") String name, Level level); + void update(@PathParam("type") LoggerType type, @PathParam("name") String name, LoggerTO logger); @DELETE @Path("{name}") - LoggerTO delete(@PathParam("name") String name); - - // TODO refactor this method to use update() - void enableAudit(AuditLoggerName auditLoggerName); + void delete(@PathParam("type") LoggerType type, @PathParam("name") String name); - // TODO refactor this method to use delete() - void disableAudit(AuditLoggerName auditLoggerName); } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/LoggerRestClient.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/LoggerRestClient.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/LoggerRestClient.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/LoggerRestClient.java Thu Jan 24 16:19:11 2013 @@ -29,7 +29,9 @@ import org.apache.syncope.common.to.Logg import org.apache.syncope.common.types.AuditElements; import org.apache.syncope.common.types.AuditElements.Category; import org.apache.syncope.common.types.AuditLoggerName; +import org.apache.syncope.common.types.LoggerType; import org.apache.syncope.common.types.SyncopeLoggerLevel; +import org.apache.syncope.common.util.CollectionWrapper; import org.springframework.stereotype.Component; @Component @@ -38,11 +40,13 @@ public class LoggerRestClient extends Ba private static final long serialVersionUID = 4579786978763032240L; public List<LoggerTO> listLogs() { - return getService(LoggerService.class).listLogs(); + return getService(LoggerService.class).list(LoggerType.NORMAL); } public List<AuditLoggerName> listAudits() { - return getService(LoggerService.class).listAudits(); + List<LoggerTO> logger = getService(LoggerService.class).list(LoggerType.AUDIT); + + return CollectionWrapper.wrapLogger(logger); } public Map<AuditElements.Category, Set<AuditLoggerName>> listAuditsByCategory() { @@ -59,18 +63,25 @@ public class LoggerRestClient extends Ba } public void setLogLevel(final String name, final SyncopeLoggerLevel level) { - getService(LoggerService.class).update(name, level.getLevel()); + LoggerTO loggerTO = new LoggerTO(); + loggerTO.setName(name); + loggerTO.setLevel(level); + getService(LoggerService.class).update(LoggerType.NORMAL, name, loggerTO); } public void enableAudit(final AuditLoggerName auditLoggerName) { - getService(LoggerService.class).enableAudit(auditLoggerName); + String name = auditLoggerName.toLoggerName(); + LoggerTO loggerTO = new LoggerTO(); + loggerTO.setName(name); + loggerTO.setLevel(SyncopeLoggerLevel.DEBUG); + getService(LoggerService.class).update(LoggerType.AUDIT, name, loggerTO); } - public LoggerTO deleteLog(final String name) { - return getService(LoggerService.class).delete(name); + public void deleteLog(final String name) { + getService(LoggerService.class).delete(LoggerType.NORMAL, name); } public void disableAudit(final AuditLoggerName auditLoggerName) { - getService(LoggerService.class).disableAudit(auditLoggerName); + getService(LoggerService.class).delete(LoggerType.AUDIT, auditLoggerName.toLoggerName()); } } Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConfigurationServiceImpl.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConfigurationServiceImpl.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConfigurationServiceImpl.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConfigurationServiceImpl.java Thu Jan 24 16:19:11 2013 @@ -29,6 +29,7 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.UriInfo; +import org.apache.syncope.common.SyncopeConstants; import org.apache.syncope.common.services.ConfigurationService; import org.apache.syncope.common.to.ConfigurationTO; import org.apache.syncope.common.to.MailTemplateTO; @@ -51,7 +52,7 @@ public class ConfigurationServiceImpl im public Response create(final ConfigurationTO configurationTO) { ConfigurationTO created = configurationController.create(new DummyHTTPServletResponse(), configurationTO); URI location = uriInfo.getAbsolutePathBuilder().path(created.getKey()).build(); - return Response.created(location).build(); + return Response.created(location).header(SyncopeConstants.REST_HEADER_ID, created.getKey()).build(); } @Override Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/services/ConnectorServiceImpl.java Thu Jan 24 16:19:11 2013 @@ -26,6 +26,7 @@ import javax.ws.rs.BadRequestException; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; +import org.apache.syncope.common.SyncopeConstants; import org.apache.syncope.common.services.ConnectorService; import org.apache.syncope.common.to.ConnBundleTO; import org.apache.syncope.common.to.ConnInstanceTO; @@ -51,7 +52,7 @@ public class ConnectorServiceImpl implem try { ConnInstanceTO connector = connectorController.create(new DummyHTTPServletResponse(), connectorTO); URI location = uriInfo.getAbsolutePathBuilder().path(connector.getId() + "").build(); - return Response.created(location).build(); + return Response.created(location).header(SyncopeConstants.REST_HEADER_ID, connector.getId()).build(); } catch (SyncopeClientCompositeErrorException e) { throw new BadRequestException(e); } catch (NotFoundException e) { Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/services/PolicyServiceImpl.java Thu Jan 24 16:19:11 2013 @@ -25,6 +25,7 @@ import javax.ws.rs.BadRequestException; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; +import org.apache.syncope.common.SyncopeConstants; import org.apache.syncope.common.services.PolicyService; import org.apache.syncope.common.to.AccountPolicyTO; import org.apache.syncope.common.to.PasswordPolicyTO; @@ -64,7 +65,7 @@ public class PolicyServiceImpl implement throw new BadRequestException(); } URI location = uriInfo.getAbsolutePathBuilder().path(policy.getId() + "").build(); - return Response.created(location).build(); + return Response.created(location).header(SyncopeConstants.REST_HEADER_ID, policy.getId()).build(); } @Override Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/services/SchemaServiceImpl.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/services/SchemaServiceImpl.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/services/SchemaServiceImpl.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/services/SchemaServiceImpl.java Thu Jan 24 16:19:11 2013 @@ -23,6 +23,8 @@ import java.util.List; import javax.ws.rs.BadRequestException; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; + +import org.apache.syncope.common.SyncopeConstants; import org.apache.syncope.common.services.SchemaService; import org.apache.syncope.common.to.AbstractSchemaTO; import org.apache.syncope.common.to.DerivedSchemaTO; @@ -74,7 +76,7 @@ public class SchemaServiceImpl implement throw new BadRequestException(); } URI location = uriInfo.getAbsolutePathBuilder().path(response.getName()).build(); - return Response.created(location).build(); + return Response.created(location).header(SyncopeConstants.REST_HEADER_ID, response.getName()).build(); } @Override @@ -106,13 +108,13 @@ public class SchemaServiceImpl implement public List<? extends AbstractSchemaTO> list(final AttributableType kind, final SchemaType type) { switch (type) { case NORMAL: - return (List<? extends AbstractSchemaTO>) normalSchemaController.list(kind.toString()); + return normalSchemaController.list(kind.toString()); case DERIVED: - return (List<? extends AbstractSchemaTO>) derivedSchemaController.list(kind.toString()); + return derivedSchemaController.list(kind.toString()); case VIRTUAL: - return (List<? extends AbstractSchemaTO>) virtualSchemaController.list(kind.toString()); + return virtualSchemaController.list(kind.toString()); default: throw new BadRequestException(); Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java?rev=1438058&r1=1438057&r2=1438058&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/LoggerTestITCase.java Thu Jan 24 16:19:11 2013 @@ -23,18 +23,19 @@ import static org.junit.Assert.assertFal import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.text.ParseException; import java.util.List; import org.apache.syncope.common.to.LoggerTO; import org.apache.syncope.common.types.AuditElements; import org.apache.syncope.common.types.AuditLoggerName; +import org.apache.syncope.common.types.LoggerType; import org.apache.syncope.common.types.SyncopeLoggerLevel; +import org.apache.syncope.common.util.CollectionWrapper; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; -import ch.qos.logback.classic.Level; - @FixMethodOrder(MethodSorters.JVM) public class LoggerTestITCase extends AbstractTest { @@ -45,7 +46,7 @@ public class LoggerTestITCase extends Ab @Test public void listLogs() { - List<LoggerTO> loggers = loggerService.listLogs(); + List<LoggerTO> loggers = loggerService.list(LoggerType.NORMAL); assertNotNull(loggers); assertFalse(loggers.isEmpty()); for (LoggerTO logger : loggers) { @@ -54,33 +55,37 @@ public class LoggerTestITCase extends Ab } @Test - public void listAudits() { - List<AuditLoggerName> audits = loggerService.listAudits(); + public void listAudits() throws ParseException { + List<LoggerTO> audits = loggerService.list(LoggerType.AUDIT); assertNotNull(audits); assertFalse(audits.isEmpty()); - for (AuditLoggerName audit : audits) { - assertNotNull(audit); + for (LoggerTO audit : audits) { + assertNotNull(AuditLoggerName.fromLoggerName(audit.getName())); } } @Test public void setLevel() { - List<LoggerTO> loggers = loggerService.listLogs(); + List<LoggerTO> loggers = loggerService.list(LoggerType.NORMAL); assertNotNull(loggers); int startSize = loggers.size(); - LoggerTO logger = loggerService.update("TEST", Level.INFO); + LoggerTO logger = new LoggerTO(); + logger.setName("TEST"); + logger.setLevel(SyncopeLoggerLevel.INFO); + loggerService.update(LoggerType.NORMAL, logger.getName(), logger); + logger = loggerService.read(LoggerType.NORMAL, logger.getName()); assertNotNull(logger); assertEquals(SyncopeLoggerLevel.INFO, logger.getLevel()); - loggers = loggerService.listLogs(); + loggers = loggerService.list(LoggerType.NORMAL); assertNotNull(loggers); assertEquals(startSize + 1, loggers.size()); // TEST Delete - loggerService.delete("TEST"); - loggers = loggerService.listLogs(); + loggerService.delete(LoggerType.NORMAL, "TEST"); + loggers = loggerService.list(LoggerType.NORMAL); assertNotNull(loggers); assertEquals(startSize, loggers.size()); } @@ -90,19 +95,23 @@ public class LoggerTestITCase extends Ab AuditLoggerName auditLoggerName = new AuditLoggerName(AuditElements.Category.report, AuditElements.ReportSubCategory.listExecutions, AuditElements.Result.failure); - List<AuditLoggerName> audits = loggerService.listAudits(); + List<AuditLoggerName> audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertFalse(audits.contains(auditLoggerName)); - loggerService.enableAudit(auditLoggerName); + LoggerTO loggerTO = new LoggerTO(); + String name = auditLoggerName.toLoggerName(); + loggerTO.setName(name); + loggerTO.setLevel(SyncopeLoggerLevel.DEBUG); + loggerService.update(LoggerType.AUDIT, name, loggerTO); - audits = loggerService.listAudits(); + audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertTrue(audits.contains(auditLoggerName)); - loggerService.disableAudit(auditLoggerName); + loggerService.delete(LoggerType.AUDIT, auditLoggerName.toLoggerName()); - audits = loggerService.listAudits(); + audits = CollectionWrapper.wrapLogger(loggerService.list(LoggerType.AUDIT)); assertNotNull(audits); assertFalse(audits.contains(auditLoggerName)); }