You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/01/10 18:06:18 UTC
[2/2] syncope git commit: [SYNCOPE-882] Several fixes
[SYNCOPE-882] Several fixes
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/cbe4b703
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/cbe4b703
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/cbe4b703
Branch: refs/heads/master
Commit: cbe4b703d251f639f9d2790732d781c39510cc52
Parents: 2b71dab
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Jan 10 18:05:12 2017 +0100
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Jan 10 19:06:01 2017 +0100
----------------------------------------------------------------------
.../commands/logger/LoggerResultManager.java | 3 +-
.../logger/LoggerSyncopeOperations.java | 3 +-
.../syncope/client/console/pages/LogViewer.java | 168 ++++---------------
.../client/console/panels/ConsoleLogPanel.java | 19 ++-
.../client/console/panels/CoreLogPanel.java | 10 +-
.../client/console/rest/LoggerRestClient.java | 34 ++--
.../common/rest/api/service/LoggerService.java | 3 +-
.../apache/syncope/core/logic/LoggerLogic.java | 9 +-
.../syncope/core/logic/init/LoggerAccessor.java | 15 +-
.../rest/cxf/service/LoggerServiceImpl.java | 3 +-
.../src/main/resources/log4j2.xml | 4 +
.../apache/syncope/fit/core/LoggerITCase.java | 5 +-
12 files changed, 96 insertions(+), 180 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
index 62f9316..c99aedf 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerResultManager.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Queue;
import org.apache.syncope.client.cli.commands.CommonsResultManager;
import org.apache.syncope.client.cli.view.Table;
import org.apache.syncope.common.lib.log.LogStatementTO;
@@ -42,7 +41,7 @@ public class LoggerResultManager extends CommonsResultManager {
tableBuilder.build().print();
}
- public void fromGetLastLogStatements(final Queue<LogStatementTO> statements) throws JsonProcessingException {
+ public void fromGetLastLogStatements(final List<LogStatementTO> statements) throws JsonProcessingException {
final Table.TableBuilder tableBuilder = new Table.TableBuilder("last statements").header("statement");
for (final LogStatementTO statement : statements) {
tableBuilder.rowValues(Collections.singletonList(
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerSyncopeOperations.java
index 823c6dd..0f1f15c 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/logger/LoggerSyncopeOperations.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.cli.commands.logger;
import java.util.ArrayList;
import java.util.List;
-import java.util.Queue;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import org.apache.syncope.client.cli.SyncopeServices;
@@ -44,7 +43,7 @@ public class LoggerSyncopeOperations {
}, new ArrayList<String>());
}
- public Queue<LogStatementTO> getLastLogStatements(final String appender) {
+ public List<LogStatementTO> getLastLogStatements(final String appender) {
return loggerService.getLastLogStatements(appender);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
index c96ee1c..820c6f9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
@@ -20,24 +20,19 @@ package org.apache.syncope.client.console.pages;
import static org.apache.wicket.Component.ENABLE;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.collections4.list.SetUniqueList;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.panels.LogStatementPanel;
import org.apache.syncope.client.console.rest.LoggerRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
import org.apache.syncope.common.lib.log.LogStatementTO;
import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.Application;
-import org.apache.wicket.ThreadContext;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.event.IEvent;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.list.ListItem;
@@ -45,13 +40,7 @@ import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.protocol.ws.WebSocketSettings;
-import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
-import org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster;
-import org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload;
-import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
-import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
-import org.apache.wicket.protocol.ws.api.registry.IKey;
+import org.apache.wicket.util.time.Duration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,14 +54,6 @@ public class LogViewer extends WebPage {
private final LoggerRestClient restClient = new LoggerRestClient();
- private final IModel<Long> lastTimeInMillis = Model.of(0L);
-
- private final WebMarkupContainer stContainer;
-
- private final IModel<List<LogStatementTO>> statementViewModel;
-
- private final ListView<LogStatementTO> statementView;
-
public LogViewer() {
final WebMarkupContainer viewer = new WebMarkupContainer("viewer");
viewer.setOutputMarkupId(true);
@@ -84,12 +65,13 @@ public class LogViewer extends WebPage {
appenders.setChoices(restClient.listMemoryAppenders());
viewer.add(appenders);
- stContainer = new WebMarkupContainer("stContainer");
+ final WebMarkupContainer stContainer = new WebMarkupContainer("stContainer");
stContainer.setOutputMarkupId(true);
viewer.add(stContainer);
- statementViewModel = new ListModel<>(new ArrayList<LogStatementTO>());
- statementView = new ListView<LogStatementTO>("statements", statementViewModel) {
+ final Model<Long> lastTimeInMillis = Model.of(0L);
+ final IModel<List<LogStatementTO>> statementViewModel = new ListModel<>(new ArrayList<LogStatementTO>());
+ final ListView<LogStatementTO> statementView = new ListView<LogStatementTO>("statements", statementViewModel) {
private static final long serialVersionUID = -9180479401817023838L;
@@ -102,51 +84,21 @@ public class LogViewer extends WebPage {
};
statementView.setOutputMarkupId(true);
stContainer.add(statementView);
+ stContainer.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(10)) {
- appenders.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- List<LogStatementTO> lastStatements = appenders.getModelObject() == null
- ? new ArrayList<LogStatementTO>()
- : restClient.getLastLogStatements(appenders.getModelObject(), 0);
- statementViewModel.setObject(lastStatements);
- target.add(stContainer);
-
- lastTimeInMillis.setObject(0L);
- }
- });
-
- add(new WebSocketBehavior() {
-
- private static final long serialVersionUID = 3507933905864454312L;
+ private static final long serialVersionUID = 7298597675929755960L;
@Override
- protected void onConnect(final ConnectedMessage message) {
- super.onConnect(message);
-
- SyncopeConsoleSession.get().scheduleAtFixedRate(
- new LogStatementUpdater(message, restClient, appenders, lastTimeInMillis),
- 0, 10, TimeUnit.SECONDS);
- }
-
- });
- }
-
- @Override
- public void onEvent(final IEvent<?> event) {
- if (event.getPayload() instanceof WebSocketPushPayload) {
- WebSocketPushPayload wsEvent = (WebSocketPushPayload) event.getPayload();
- if (wsEvent.getMessage() instanceof LogViewerMessage) {
- List<LogStatementTO> recentLogStatements =
- ((LogViewerMessage) wsEvent.getMessage()).getRecentLogStatements();
+ protected void onPostProcessTarget(final AjaxRequestTarget target) {
+ // save scroll position
+ target.prependJavaScript(
+ String.format("window.scrollTop = $('#%s').scrollTop();", stContainer.getMarkupId()));
+ List<LogStatementTO> recentLogStatements = appenders.getModelObject() == null
+ ? new ArrayList<LogStatementTO>()
+ : restClient.getLastLogStatements(appenders.getModelObject(), lastTimeInMillis.getObject());
if (!recentLogStatements.isEmpty()) {
- // save scroll position
- wsEvent.getHandler().prependJavaScript(
- String.format("window.scrollTop = $('#%s').scrollTop();", stContainer.getMarkupId()));
+ lastTimeInMillis.setObject(recentLogStatements.get(recentLogStatements.size() - 1).getTimeMillis());
int currentSize = statementView.getModelObject().size();
int recentSize = recentLogStatements.size();
@@ -156,88 +108,36 @@ public class LogViewer extends WebPage {
if (currentSize <= MAX_STATEMENTS_PER_APPENDER - recentSize) {
newModelObject.addAll(statementView.getModelObject());
} else {
- newModelObject.addAll(statementView.getModelObject().subList(recentSize, currentSize));
+ newModelObject.addAll(statementView.getModelObject().
+ subList(currentSize - (MAX_STATEMENTS_PER_APPENDER - recentSize), currentSize));
}
newModelObject.addAll(recentLogStatements);
statementViewModel.setObject(newModelObject);
- wsEvent.getHandler().add(LogViewer.this.stContainer);
+ target.add(stContainer);
- // restore scroll position - might not work perfectly if items were removed from the top
- wsEvent.getHandler().appendJavaScript(
- String.format("$('#%s').scrollTop(window.scrollTop);", stContainer.getMarkupId()));
}
- }
- }
- }
-
- private static final class LogStatementUpdater implements Runnable {
-
- private final Application application;
-
- private final SyncopeConsoleSession session;
-
- private final IKey key;
-
- private final LoggerRestClient restClient;
-
- private final AjaxDropDownChoicePanel<String> appenders;
-
- private final IModel<Long> lastTimeInMillis;
- LogStatementUpdater(
- final ConnectedMessage message,
- final LoggerRestClient restClient,
- final AjaxDropDownChoicePanel<String> appenders,
- final IModel<Long> lastTimeInMillis) {
+ // restore scroll position - might not work perfectly if items were removed from the top
+ target.appendJavaScript(
+ String.format("$('#%s').scrollTop(window.scrollTop);", stContainer.getMarkupId()));
+ }
+ });
- this.application = message.getApplication();
- this.session = SyncopeConsoleSession.get();
- this.key = message.getKey();
- this.restClient = restClient;
- this.appenders = appenders;
- this.lastTimeInMillis = lastTimeInMillis;
- }
+ appenders.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
- @Override
- public void run() {
- try {
- ThreadContext.setApplication(application);
- ThreadContext.setSession(session);
+ private static final long serialVersionUID = -1107858522700306810L;
- List<LogStatementTO> recentLogStatements = appenders.getModelObject() == null
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ List<LogStatementTO> lastStatements = appenders.getModelObject() == null
? new ArrayList<LogStatementTO>()
- : restClient.getLastLogStatements(appenders.getModelObject(), lastTimeInMillis.getObject());
- if (!recentLogStatements.isEmpty()) {
- lastTimeInMillis.setObject(recentLogStatements.get(recentLogStatements.size() - 1).getTimeMillis());
- }
+ : restClient.getLastLogStatements(appenders.getModelObject(), 0);
+ statementViewModel.setObject(lastStatements);
+ target.add(stContainer);
- WebSocketSettings settings = WebSocketSettings.Holder.get(application);
- WebSocketPushBroadcaster broadcaster = new WebSocketPushBroadcaster(settings.getConnectionRegistry());
- broadcaster.broadcast(
- new ConnectedMessage(application, session.getId(), key),
- new LogViewerMessage(recentLogStatements));
- } catch (Throwable t) {
- LOG.error("Unexpected error while checking for recent log statements", t);
- } finally {
- ThreadContext.detach();
+ lastTimeInMillis.setObject(0L);
}
- }
- }
-
- private static class LogViewerMessage implements IWebSocketPushMessage, Serializable {
-
- private static final long serialVersionUID = 7241149017008105769L;
-
- private final List<LogStatementTO> recentLogStatements;
-
- LogViewerMessage(final List<LogStatementTO> recentLogStatements) {
- this.recentLogStatements = recentLogStatements;
- }
-
- public List<LogStatementTO> getRecentLogStatements() {
- return recentLogStatements;
- }
-
+ });
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/console/src/main/java/org/apache/syncope/client/console/panels/ConsoleLogPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConsoleLogPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConsoleLogPanel.java
index 6ef4108..5dd4de5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConsoleLogPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConsoleLogPanel.java
@@ -20,7 +20,10 @@ package org.apache.syncope.client.console.panels;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import org.apache.commons.collections4.ComparatorUtils;
+import org.apache.commons.collections4.Transformer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.LoggerConfig;
@@ -49,19 +52,27 @@ public class ConsoleLogPanel extends AbstractLogsPanel<LoggerTO> {
private static final long serialVersionUID = -1550459341476431714L;
public List<LoggerTO> getLoggers() {
- final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
+ LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- final List<LoggerTO> result = new ArrayList<>();
+ List<LoggerTO> result = new ArrayList<>();
for (final LoggerConfig logger : ctx.getConfiguration().getLoggers().values()) {
- final String loggerName = LogManager.ROOT_LOGGER_NAME.equals(logger.getName())
+ String loggerName = LogManager.ROOT_LOGGER_NAME.equals(logger.getName())
? SyncopeConstants.ROOT_LOGGER : logger.getName();
if (logger.getLevel() != null) {
- final LoggerTO loggerTO = new LoggerTO();
+ LoggerTO loggerTO = new LoggerTO();
loggerTO.setKey(loggerName);
loggerTO.setLevel(LoggerLevel.fromLevel(logger.getLevel()));
result.add(loggerTO);
}
}
+ Collections.sort(result, ComparatorUtils.transformedComparator(
+ ComparatorUtils.<String>naturalComparator(), new Transformer<LoggerTO, String>() {
+
+ @Override
+ public String transform(final LoggerTO input) {
+ return input.getKey();
+ }
+ }));
return result;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/console/src/main/java/org/apache/syncope/client/console/panels/CoreLogPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/CoreLogPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/CoreLogPanel.java
index 1fc45a8..67a14ca 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/CoreLogPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/CoreLogPanel.java
@@ -18,11 +18,9 @@
*/
package org.apache.syncope.client.console.panels;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.pages.LogViewer;
+import org.apache.syncope.client.console.rest.LoggerRestClient;
import org.apache.syncope.common.lib.log.LoggerTO;
-import org.apache.syncope.common.lib.types.LoggerType;
-import org.apache.syncope.common.rest.api.service.LoggerService;
import org.apache.wicket.PageReference;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.PopupSettings;
@@ -31,8 +29,10 @@ public class CoreLogPanel extends AbstractLogsPanel<LoggerTO> {
private static final long serialVersionUID = 3905038169553185171L;
+ private final LoggerRestClient restClient = new LoggerRestClient();
+
public CoreLogPanel(final String id, final PageReference pageReference) {
- super(id, pageReference, SyncopeConsoleSession.get().getService(LoggerService.class).list(LoggerType.LOG));
+ super(id, pageReference, new LoggerRestClient().listLogs());
BookmarkablePageLink<Void> viewer = new BookmarkablePageLink<>("viewer", LogViewer.class);
viewer.setPopupSettings(new PopupSettings().setHeight(600).setWidth(800));
@@ -41,6 +41,6 @@ public class CoreLogPanel extends AbstractLogsPanel<LoggerTO> {
@Override
protected void update(final LoggerTO loggerTO) {
- SyncopeConsoleSession.get().getService(LoggerService.class).update(LoggerType.LOG, loggerTO);
+ restClient.setLogLevel(loggerTO);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/client/console/src/main/java/org/apache/syncope/client/console/rest/LoggerRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/LoggerRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/LoggerRestClient.java
index bc31608..818a8d2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/LoggerRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/LoggerRestClient.java
@@ -26,10 +26,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
+import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.Transformer;
-import org.apache.commons.collections4.TransformerUtils;
import org.apache.syncope.common.lib.log.EventCategoryTO;
import org.apache.syncope.common.lib.log.LogAppender;
import org.apache.syncope.common.lib.log.LogStatementTO;
@@ -56,18 +54,27 @@ public class LoggerRestClient extends BaseRestClient {
}
public List<LogStatementTO> getLastLogStatements(final String appender, final long lastStatementTime) {
- return CollectionUtils.collect(IterableUtils.filteredIterable(
- getService(LoggerService.class).getLastLogStatements(appender), new Predicate<LogStatementTO>() {
-
- @Override
- public boolean evaluate(final LogStatementTO object) {
- return object.getTimeMillis() > lastStatementTime;
+ List<LogStatementTO> result = new ArrayList<>();
+ for (LogStatementTO statement : getService(LoggerService.class).getLastLogStatements(appender)) {
+ if (statement.getTimeMillis() > lastStatementTime) {
+ result.add(statement);
}
- }), TransformerUtils.<LogStatementTO>nopTransformer(), new ArrayList<LogStatementTO>());
+ }
+
+ return result;
}
public List<LoggerTO> listLogs() {
- return getService(LoggerService.class).list(LoggerType.LOG);
+ List<LoggerTO> logs = getService(LoggerService.class).list(LoggerType.LOG);
+ Collections.sort(logs, ComparatorUtils.transformedComparator(
+ ComparatorUtils.<String>naturalComparator(), new Transformer<LoggerTO, String>() {
+
+ @Override
+ public String transform(final LoggerTO input) {
+ return input.getKey();
+ }
+ }));
+ return logs;
}
public List<AuditLoggerName> listAudits() {
@@ -87,10 +94,7 @@ public class LoggerRestClient extends BaseRestClient {
return result;
}
- public void setLogLevel(final String key, final LoggerLevel level) {
- LoggerTO loggerTO = new LoggerTO();
- loggerTO.setKey(key);
- loggerTO.setLevel(level);
+ public void setLogLevel(final LoggerTO loggerTO) {
getService(LoggerService.class).update(LoggerType.LOG, loggerTO);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
index 7250b7a..4b9aa83 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
@@ -19,7 +19,6 @@
package org.apache.syncope.common.rest.api.service;
import java.util.List;
-import java.util.Queue;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -60,7 +59,7 @@ public interface LoggerService extends JAXRSService {
@GET
@Path("memoryAppenders/{memoryAppender}/lastLogStatements")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- Queue<LogStatementTO> getLastLogStatements(@NotNull @PathParam("memoryAppender") String memoryAppender);
+ List<LogStatementTO> getLastLogStatements(@NotNull @PathParam("memoryAppender") String memoryAppender);
/**
* Returns the list of all managed events in audit.
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/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 0e3c887..5315ea9 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
@@ -23,12 +23,12 @@ import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Queue;
import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IteratorUtils;
import org.apache.commons.collections4.PredicateUtils;
import org.apache.commons.collections4.Transformer;
+import org.apache.commons.collections4.TransformerUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;
@@ -124,13 +124,16 @@ public class LoggerLogic extends AbstractTransactionalLogic<LoggerTO> {
@PreAuthorize("hasRole('" + StandardEntitlement.LOG_READ + "') and authentication.details.domain == "
+ "T(org.apache.syncope.common.lib.SyncopeConstants).MASTER_DOMAIN")
- public Queue<LogStatementTO> getLastLogStatements(final String memoryAppender) {
+ public List<LogStatementTO> getLastLogStatements(final String memoryAppender) {
MemoryAppender appender = loggerLoader.getMemoryAppenders().get(memoryAppender);
if (appender == null) {
throw new NotFoundException("Appender " + memoryAppender);
}
- return appender.getStatements();
+ return CollectionUtils.collect(
+ appender.getStatements(),
+ TransformerUtils.<LogStatementTO>nopTransformer(),
+ new ArrayList<LogStatementTO>());
}
@PreAuthorize("hasRole('" + StandardEntitlement.LOG_LIST + "') and authentication.details.domain == "
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
index 8fadf47..47fa990 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
@@ -65,8 +65,9 @@ public class LoggerAccessor {
* otherwise create a SyncopeLogger instance with given name and level.
*/
for (LoggerConfig logConf : ctx.getConfiguration().getLoggers().values()) {
- if (!LogManager.ROOT_LOGGER_NAME.equals(logConf.getName()) && logConf.getLevel() != null) {
- String loggerName = logConf.getName();
+ String loggerName = LogManager.ROOT_LOGGER_NAME.equals(logConf.getName())
+ ? SyncopeConstants.ROOT_LOGGER : logConf.getName();
+ if (logConf.getLevel() != null) {
if (syncopeLoggers.containsKey(loggerName)) {
logConf.setLevel(syncopeLoggers.get(loggerName).getLevel().getLevel());
syncopeLoggers.remove(loggerName);
@@ -74,9 +75,7 @@ public class LoggerAccessor {
Logger syncopeLogger = entityFactory.newEntity(Logger.class);
syncopeLogger.setKey(loggerName);
syncopeLogger.setLevel(LoggerLevel.fromLevel(logConf.getLevel()));
- syncopeLogger.setType(loggerName.startsWith(LoggerType.AUDIT.getPrefix())
- ? LoggerType.AUDIT
- : LoggerType.LOG);
+ syncopeLogger.setType(LoggerType.LOG);
loggerDAO.save(syncopeLogger);
}
}
@@ -87,9 +86,9 @@ public class LoggerAccessor {
*/
for (Logger syncopeLogger : syncopeLoggers.values()) {
LoggerConfig logConf = ctx.getConfiguration().getLoggerConfig(syncopeLogger.getKey());
- if (!LogManager.ROOT_LOGGER_NAME.equals(logConf.getName()) && logConf.getLevel() != null) {
- logConf.setLevel(syncopeLogger.getLevel().getLevel());
- }
+ logConf.setLevel(syncopeLogger.getLevel().getLevel());
}
+
+ ctx.updateLoggers();
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/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 bc406ed..c62a55c 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
@@ -20,7 +20,6 @@ package org.apache.syncope.core.rest.cxf.service;
import java.text.ParseException;
import java.util.List;
-import java.util.Queue;
import javax.ws.rs.BadRequestException;
import org.apache.syncope.common.lib.log.EventCategoryTO;
import org.apache.syncope.common.lib.log.LogAppender;
@@ -46,7 +45,7 @@ public class LoggerServiceImpl extends AbstractServiceImpl implements LoggerServ
}
@Override
- public Queue<LogStatementTO> getLastLogStatements(final String memoryAppender) {
+ public List<LogStatementTO> getLastLogStatements(final String memoryAppender) {
return logic.getLastLogStatements(memoryAppender);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/fit/core-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/log4j2.xml b/fit/core-reference/src/main/resources/log4j2.xml
index d8a0c6c..9b58bc5 100644
--- a/fit/core-reference/src/main/resources/log4j2.xml
+++ b/fit/core-reference/src/main/resources/log4j2.xml
@@ -85,6 +85,10 @@ under the License.
<appender-ref ref="persistenceFile"/>
<appender-ref ref="persistence"/>
</asyncLogger>
+ <asyncLogger name="org.apache.ibatis" additivity="false" level="INFO">
+ <appender-ref ref="persistenceFile"/>
+ <appender-ref ref="persistence"/>
+ </asyncLogger>
<asyncLogger name="org.apache.syncope.core.rest" additivity="false" level="INFO">
<appender-ref ref="restFile"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/cbe4b703/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java
index d534764..7e38c19 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java
@@ -26,7 +26,6 @@ import static org.junit.Assert.fail;
import java.text.ParseException;
import java.util.List;
-import java.util.Queue;
import javax.ws.rs.core.Response;
import javax.xml.ws.WebServiceException;
import org.apache.commons.collections4.IterableUtils;
@@ -66,11 +65,11 @@ public class LoggerITCase extends AbstractITCase {
@Test
public void lastStatements() {
- Queue<LogStatementTO> statements = loggerService.getLastLogStatements("connid");
+ List<LogStatementTO> statements = loggerService.getLastLogStatements("connid");
assertNotNull(statements);
assertFalse(statements.isEmpty());
- LogStatementTO statement = statements.element();
+ LogStatementTO statement = statements.get(0);
assertNotNull(statement);
assertNotNull(statement.getLoggerName());
assertNotNull(statement.getLevel());