diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdmin.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdmin.java index 083356d612b..b18ce80f9d7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdmin.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdmin.java @@ -178,6 +178,7 @@ private MenuBarItem createConfigurationItems() { configuration.addMenuItem(new MenuItem(null)); configuration.addMenuItem(new MenuItem(createStringResource("PageAdmin.menu.top.configuration.configuration"), true, null, null)); configuration.addMenuItem(new MenuItem(createStringResource("PageAdmin.menu.top.configuration.basic"), PageSystemConfiguration.class)); + configuration.addMenuItem(new MenuItem(createStringResource("PageAdmin.menu.top.configuration.logging"), PageSystemConfigurationLogging.class)); // configuration.addMenuItem(new MenuItem(createStringResource("PageAdmin.menu.top.configuration.security"), PageDashboard.class)); configuration.addMenuItem(new MenuItem(null)); configuration.addMenuItem(new MenuItem(createStringResource("PageAdmin.menu.top.configuration.development"), true, null, null)); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageAdminConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageAdminConfiguration.java index e2e899ff0fe..81a7d6339ec 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageAdminConfiguration.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageAdminConfiguration.java @@ -27,4 +27,7 @@ public class PageAdminConfiguration extends PageAdmin { public static final String AUTH_CONFIGURATION_ALL = AuthorizationConstants.NS_AUTHORIZATION + "#configurationAll"; public static final String AUTH_CONFIGURATION_ALL_LABEL = "PageAdminConfiguration.auth.configurationAll.label"; public static final String AUTH_CONFIGURATION_ALL_DESCRIPTION = "PageAdminConfiguration.auth.configurationAll.description"; + + protected static final int CONFIGURATION_TAB_BASIC = 0; + protected static final int CONFIGURATION_TAB_LOGGING = 1; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java index 6027ad54b46..2b695ddbcce 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java @@ -96,7 +96,6 @@ protected SystemConfigurationDto load() { } }; - initLayout(); } @@ -151,7 +150,11 @@ public WebMarkupContainer getPanel(String panelId) { } }); - mainForm.add(new TabbedPanel(ID_TAB_PANEL, tabs)); + TabbedPanel tabPanel = new TabbedPanel(ID_TAB_PANEL, tabs); + tabPanel.setOutputMarkupId(true); + tabPanel.setSelectedTab(getTabIndex()); + + mainForm.add(tabPanel); initButtons(mainForm); } @@ -243,6 +246,10 @@ private LoggingConfigurationType createLoggingConfiguration(LoggingDto dto) { return configuration; } + public TabbedPanel getTabPanel(){ + return (TabbedPanel)get(ID_MAIN_FORM + ":" + ID_TAB_PANEL); + } + private ClassLoggerConfigurationType createCustomClassLogger(String name, LoggingLevelType level, String appender) { ClassLoggerConfigurationType type = new ClassLoggerConfigurationType(); type.setPackage(name); @@ -358,10 +365,14 @@ private void savePerformed(AjaxRequestTarget target) { showResultInSession(result); target.add(getFeedbackPanel()); - resetPerformed(target); + resetPerformed(); } private void saveObjectPolicies(SystemConfigurationType systemConfig){ + if(systemConfigPanel == null){ + return; + } + List configList = systemConfigPanel.getModel().getObject().getObjectPolicyList(); List confList = new ArrayList<>(); @@ -405,7 +416,7 @@ private SystemConfigurationType saveNotificationConfiguration(SystemConfiguratio MailConfigurationType mailConfig; MailServerConfigurationType mailServerConfig; - if(systemConfigPanel.getModel().getObject().getNotificationConfig() != null){ + if(systemConfigPanel != null && systemConfigPanel.getModel().getObject().getNotificationConfig() != null){ dto = systemConfigPanel.getModel().getObject().getNotificationConfig(); if(config.getNotificationConfiguration() != null){ @@ -501,12 +512,23 @@ private SystemConfigurationType saveLogging(AjaxRequestTarget target, SystemConf return config; } - private void resetPerformed(AjaxRequestTarget target) { + private void resetPerformed() { model.reset(); - setResponsePage(PageSystemConfiguration.class); + + setResponsePage(new PageSystemConfiguration(){ + + @Override + public int getTabIndex(){ + return PageSystemConfiguration.this.getTabPanel().getSelectedTab(); + } + }); } private void cancelPerformed(AjaxRequestTarget target) { - resetPerformed(target); + resetPerformed(); + } + + public int getTabIndex(){ + return CONFIGURATION_TAB_BASIC; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationLogging.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationLogging.java new file mode 100644 index 00000000000..0ba8b9dfdb7 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationLogging.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2010-2013 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.web.page.admin.configuration; + +import com.evolveum.midpoint.security.api.AuthorizationConstants; +import com.evolveum.midpoint.web.application.AuthorizationAction; +import com.evolveum.midpoint.web.application.PageDescriptor; + +/** + * @author shood + * */ + +@PageDescriptor(url = {"/admin/config", "/admin/config/logging"}, action = { + @AuthorizationAction(actionUri = PageAdminConfiguration.AUTH_CONFIGURATION_ALL, + label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL, + description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION), + @AuthorizationAction(actionUri = AuthorizationConstants.NS_AUTHORIZATION + "#configSystemConfiguration", + label = "PageSystemConfiguration.auth.configSystemConfiguration.label", + description = "PageSystemConfiguration.auth.configSystemConfiguration.description")}) +public class PageSystemConfigurationLogging extends PageAdminConfiguration{ + + public PageSystemConfigurationLogging(){ + setResponsePage(new PageSystemConfiguration(){ + + @Override + public int getTabIndex(){ + return CONFIGURATION_TAB_LOGGING; + } + + }); + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgTree.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgTree.java index 341663dae00..38136d13cc2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgTree.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageOrgTree.java @@ -130,7 +130,7 @@ private List> loadOrgRoots() { Task task = createSimpleTask(OPERATION_LOAD_ORG_UNIT); OperationResult result = new OperationResult(OPERATION_LOAD_ORG_UNIT); - List> list = null; + List> list = new ArrayList<>(); try { ObjectQuery query = ObjectQueryUtil.createRootOrgQuery(getPrismContext()); list = getModelService().searchObjects(OrgType.class, query, null, task, result); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/MidPointProfilingServletFilter.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/MidPointProfilingServletFilter.java index 605133cb7b7..9d1adbcb2bf 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/MidPointProfilingServletFilter.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/MidPointProfilingServletFilter.java @@ -23,7 +23,6 @@ import javax.servlet.*; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.DecimalFormat; @@ -45,14 +44,11 @@ */ public class MidPointProfilingServletFilter implements Filter { - /* Class Variables */ private static final Trace LOGGER = TraceManager.getTrace(MidPointProfilingServletFilter.class); private static DecimalFormat df = new DecimalFormat("0.00"); - /* Attributes */ protected FilterConfig config; - /* Behavior */ @Override public void destroy() { } @@ -73,11 +69,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha if(request instanceof HttpServletRequest){ String uri = ((HttpServletRequest)request).getRequestURI(); - //String info = ((HttpServletRequest)request).getMethod(); - //String sessionId = ((HttpServletRequest)request).getRequestedSessionId(); - //if(uri.startsWith("/midpoint/admin")){ - // LOGGER.trace(info + " " + uri + " " + sessionId + " " + df.format(((double)elapsedTime)/1000000) + " (ms)."); - //} + if(uri.startsWith("/midpoint/admin")){ prepareRequestProfilingEvent(request, elapsedTime, uri); } @@ -85,18 +77,15 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha } else { chain.doFilter(request, response); } - } //doFilter + } - /* - * Prepares profiling event from captured servlet request - * */ private void prepareRequestProfilingEvent(ServletRequest request, long elapsed, String uri){ String info = ((HttpServletRequest)request).getMethod(); String sessionId = ((HttpServletRequest)request).getRequestedSessionId(); ProfilingDataLog event = new ProfilingDataLog(info, uri, sessionId, elapsed, System.currentTimeMillis()); ProfilingDataManager.getInstance().prepareRequestProfilingEvent(event); - } //prepareRequestProfilingEvent + } } diff --git a/infra/common/src/main/java/com/evolveum/midpoint/common/ProfilingConfigurationManager.java b/infra/common/src/main/java/com/evolveum/midpoint/common/ProfilingConfigurationManager.java index 5f452c7ad4f..3f946dbf9ca 100644 --- a/infra/common/src/main/java/com/evolveum/midpoint/common/ProfilingConfigurationManager.java +++ b/infra/common/src/main/java/com/evolveum/midpoint/common/ProfilingConfigurationManager.java @@ -17,55 +17,34 @@ package com.evolveum.midpoint.common; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.delta.DiffUtil; -import com.evolveum.midpoint.prism.delta.ObjectDelta; -import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.util.aspect.ProfilingDataManager; -import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; -import com.evolveum.midpoint.util.exception.ObjectNotFoundException; -import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; - -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** - * - * On this place, we take care about profilingConfiguration part of midPoint systemConfiguration - * * @author shood * */ public class ProfilingConfigurationManager { - /* Class Attributes */ private static final Trace LOGGER = TraceManager.getTrace(ProfilingConfigurationManager.class); - private static final String DOT_CLASS = ProfilingConfigurationManager.class + "."; private static final String REQUEST_FILTER_LOGGER_CLASS_NAME = "com.evolveum.midpoint.web.util.MidPointProfilingServletFilter"; private static final String SUBSYSTEM_PROFILING_LOGGER = "com.evolveum.midpoint.util.aspect.ProfilingDataManager"; private static final String APPENDER_IDM_PROFILE = "IDM-PROFILE_LOG"; - //Subsystems public static final String SUBSYSTEM_REPOSITORY = "REPOSITORY"; - public static final String SUBSYSTEM_TASKMANAGER = "TASKMANAGER"; + public static final String SUBSYSTEM_TASK_MANAGER = "TASKMANAGER"; public static final String SUBSYSTEM_PROVISIONING = "PROVISIONING"; - public static final String SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER = "RESOURCEOBJECTCHANGELISTENER"; + public static final String SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER = "RESOURCEOBJECTCHANGELISTENER"; public static final String SUBSYSTEM_MODEL = "MODEL"; public static final String SUBSYSTEM_UCF = "UCF"; public static final String SUBSYSTEM_WORKFLOW = "WORKFLOW"; public static final String SUBSYSTEM_WEB = "WEB"; - /* Object Attributes */ - - /* Methods - STATIC */ - /** * In this method, we perform the check of systemConfiguration object, searching for any changes * related to profilingConfiguration @@ -73,7 +52,7 @@ public class ProfilingConfigurationManager { public static LoggingConfigurationType checkSystemProfilingConfiguration(PrismObject systemConfigurationPrism){ SystemConfigurationType systemConfig = systemConfigurationPrism.asObjectable(); ProfilingConfigurationType profilingConfig = systemConfig.getProfilingConfiguration(); - boolean isSubsystemConfig = false; + boolean isSubsystemConfig; if(profilingConfig == null || !profilingConfig.isEnabled()) return systemConfig.getLogging(); @@ -81,18 +60,14 @@ public static LoggingConfigurationType checkSystemProfilingConfiguration(PrismOb isSubsystemConfig = applySubsystemProfiling(systemConfig); return applyProfilingConfiguration(systemConfigurationPrism, profilingConfig, isSubsystemConfig); } - } //checkSystemProfilingConfiguration + } - /* - * Checks systemConfig profiling configuration and performs necessary actions - * */ private static LoggingConfigurationType applyProfilingConfiguration(PrismObject systemConfigurationPrism, ProfilingConfigurationType profilingConfig, boolean subsystemProfiling){ SystemConfigurationType systemConfig = systemConfigurationPrism.asObjectable(); LoggingConfigurationType loggingConfig = systemConfig.getLogging(); if(loggingConfig != null){ - //LOGGER.info("entering profiling config applyProfilingConfiguration()"); if(checkXsdBooleanValue(profilingConfig.isRequestFilter())){ ClassLoggerConfigurationType requestFilterLogger = new ClassLoggerConfigurationType(); requestFilterLogger.setPackage(REQUEST_FILTER_LOGGER_CLASS_NAME); @@ -115,24 +90,21 @@ private static LoggingConfigurationType applyProfilingConfiguration(PrismObject< LOGGER.info("Applying profiling configuration."); return loggingConfig; - } //applyProfilingConfiguration + } - /* - * Checks for subsystem profiling in system configuration. - * */ private static boolean applySubsystemProfiling(SystemConfigurationType systemConfig){ ProfilingConfigurationType profilingConfig = systemConfig.getProfilingConfiguration(); - Map profiledSubsystems = new HashMap(); + Map profiledSubsystems = new HashMap<>(); int dumpInterval = 0; boolean subSystemProfiling = false; - boolean performanceProfiling = false; - boolean requestProfiling = false; + boolean performanceProfiling; + boolean requestProfiling; profiledSubsystems.put(SUBSYSTEM_PROVISIONING, checkXsdBooleanValue(profilingConfig.isProvisioning())); profiledSubsystems.put(SUBSYSTEM_REPOSITORY, checkXsdBooleanValue(profilingConfig.isRepository())); - profiledSubsystems.put(SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER, checkXsdBooleanValue(profilingConfig.isResourceObjectChangeListener())); - profiledSubsystems.put(SUBSYSTEM_TASKMANAGER, checkXsdBooleanValue(profilingConfig.isTaskManager())); + profiledSubsystems.put(SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER, checkXsdBooleanValue(profilingConfig.isResourceObjectChangeListener())); + profiledSubsystems.put(SUBSYSTEM_TASK_MANAGER, checkXsdBooleanValue(profilingConfig.isTaskManager())); profiledSubsystems.put(SUBSYSTEM_UCF, checkXsdBooleanValue(profilingConfig.isUcf())); profiledSubsystems.put(SUBSYSTEM_MODEL, checkXsdBooleanValue(profilingConfig.isModel())); profiledSubsystems.put(SUBSYSTEM_WORKFLOW, checkXsdBooleanValue(profilingConfig.isWorkflow())); @@ -160,16 +132,12 @@ private static boolean applySubsystemProfiling(SystemConfigurationType systemCon ProfilingDataManager.getInstance().configureProfilingDataManager(profiledSubsystems, dumpInterval, subSystemProfiling, performanceProfiling, requestProfiling); return false; } - } //applySubsystemProfiling + } - /* - * Check value of Boolean in xsd - * */ private static boolean checkXsdBooleanValue(Boolean value){ if(value == null || !value) return false; else return true; - } //checkXsdBooleanValue - -} //ProfilingConfigurationManager + } +} diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointAspect.java b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointAspect.java index 572de4a5dda..eb287c1e2d9 100644 --- a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointAspect.java +++ b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointAspect.java @@ -17,8 +17,6 @@ import java.util.concurrent.atomic.AtomicInteger; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -106,7 +104,7 @@ public Object proccessWorkflowNdc(ProceedingJoinPoint pjp) throws Throwable { // This is made public to use in testing public static String swapSubsystemMark(String subsystemName) { - String prev = (String) MDC.get(MDC_SUBSYSTEM_KEY); + String prev = MDC.get(MDC_SUBSYSTEM_KEY); if (subsystemName == null) { MDC.remove(MDC_SUBSYSTEM_KEY); } else { diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java index f44d6a8e06f..69485df3690 100644 --- a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java +++ b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java @@ -16,12 +16,9 @@ package com.evolveum.midpoint.util.aspect; -import com.evolveum.midpoint.util.PrettyPrinter; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; -import org.aspectj.lang.ProceedingJoinPoint; -import java.sql.Timestamp; import java.util.*; /** @@ -42,16 +39,14 @@ public class ProfilingDataManager { * */ private static ProfilingDataManager profilingDataManager = null; - /* CONSTANTS */ private static final int DEFAULT_DUMP_INTERVAL = 30; private static final int DEFAULT_PERF_DUMP_INTERVAL = 10; private static final byte TOP_TEN_METHOD_NUMBER = 5; - //Subsystems public static final String SUBSYSTEM_REPOSITORY = "REPOSITORY"; - public static final String SUBSYSTEM_TASKMANAGER = "TASKMANAGER"; + public static final String SUBSYSTEM_TASK_MANAGER = "TASKMANAGER"; public static final String SUBSYSTEM_PROVISIONING = "PROVISIONING"; - public static final String SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER = "RESOURCEOBJECTCHANGELISTENER"; + public static final String SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER = "RESOURCEOBJECTCHANGELISTENER"; public static final String SUBSYSTEM_MODEL = "MODEL"; public static final String SUBSYSTEM_UCF = "UCF"; public static final String SUBSYSTEM_WORKFLOW = "WORKFLOW"; @@ -70,34 +65,20 @@ public class ProfilingDataManager { private static boolean isWorkflowProfiled = false; private static boolean isWebProfiled = false; - /* COMPARATOR */ private static final ArrayComparator arrayComparator = new ArrayComparator(); - /* LOGGER */ private static Trace LOGGER = TraceManager.getTrace(ProfilingDataManager.class); - /* ProfilingDataManager attributes */ private long lastDumpTimestamp; private long lastPerformanceDumpTimestamp; private int minuteDumpInterval = DEFAULT_DUMP_INTERVAL; - /* boolean triggers for profiling */ private boolean isPerformanceProfiled = false; - //Maps for profiling events + private Map performanceMap = new HashMap<>(); - /* profilingDataLogMap keys for individual midPoint interfaces */ - private Map performanceMap = new HashMap(); - - - - /* Some more print constants */ private static final String PRINT_RIGHT_ARROW = "->"; - /* ===BEHAVIOR=== */ - /* - * Retrieves instance of ProfilingDataManager - * */ public static ProfilingDataManager getInstance() { if(profilingDataManager == null){ @@ -105,23 +86,16 @@ public static ProfilingDataManager getInstance() { } return profilingDataManager; - } //getInstance + } - /* - * ProfilingDataManager instance private constructor - not accessible from outside of this class - * */ private ProfilingDataManager(int dumpInterval, boolean performance) { - //Configure timestamps this.isPerformanceProfiled = performance; this.minuteDumpInterval = dumpInterval; lastDumpTimestamp = System.currentTimeMillis(); lastPerformanceDumpTimestamp = System.currentTimeMillis(); - } //ProfilingDataManager + } - /** - * Configures ProfilingDataManager - can be called from outside - * */ public void configureProfilingDataManager(Map profiledSubsystems, Integer dumpInterval, boolean subsystemProfilingActive, boolean performance, boolean request){ isPerformanceProfiled = performance; @@ -141,11 +115,8 @@ public void configureProfilingDataManager(Map profiledSubsystem profilingDataManager = new ProfilingDataManager(minuteDumpInterval, performance); - } //configureProfilingDataManager + } - /* - * Here, we will decide, what filter will be applied (based on subsystem) on method end - * */ public void applyGranularityFilterOnEnd(String className, String methodName, Object[] args, String subsystem, long startTime, long processingStartTime){ ProfilingDataLog profilingEvent; @@ -161,14 +132,14 @@ public void applyGranularityFilterOnEnd(String className, String methodName, Obj } else if (isProvisioningProfiled && SUBSYSTEM_PROVISIONING.equals(subsystem)){ updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_PROVISIONING); - } else if (isTaskManagerProfiled && SUBSYSTEM_TASKMANAGER.equals(subsystem)){ - updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_TASKMANAGER); + } else if (isTaskManagerProfiled && SUBSYSTEM_TASK_MANAGER.equals(subsystem)){ + updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_TASK_MANAGER); } else if (isUcfProfiled && SUBSYSTEM_UCF.equals(subsystem)){ updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_UCF); - } else if(isResourceObjectChangeListenerProfiled && SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER.equals(subsystem)){ - updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER); + } else if(isResourceObjectChangeListenerProfiled && SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER.equals(subsystem)){ + updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER); } else if(isWorkflowProfiled && SUBSYSTEM_WORKFLOW.equals(subsystem)){ updateOverallStatistics(performanceMap, profilingEvent, key, SUBSYSTEM_WORKFLOW); @@ -178,40 +149,26 @@ public void applyGranularityFilterOnEnd(String className, String methodName, Obj logEventProcessingDuration(key, processingEstTime); ProfilingDataManager.getInstance().dumpToLog(); - } //applyGranularityFilterOnEnd + } - /* - * Logs, how long the processing of profiling event took. - * */ private void logEventProcessingDuration(String key, long est){ if(performanceMap.get(key) != null) performanceMap.get(key).updateProcessTimeList(est); } - /* - * Creates profiling event from captured servlet request - * */ public void prepareRequestProfilingEvent(ProfilingDataLog requestEvent){ String key = requestEvent.getClassName(); updateOverallStatistics(performanceMap, requestEvent, key, SUBSYSTEM_WEB); - } //prepareRequestProfilingEvent + } - /* - * Prepares key to performance HashMap - * */ private String prepareKey(ProfilingDataLog log){ String key = log.getClassName(); key = key.concat(PRINT_RIGHT_ARROW); key = key.concat(log.getMethodName()); return key; - } //prepareKey + } - /* - * If the time is right, dump collected profiling information to log false - * - * This method is synchronized - * */ public synchronized void dumpToLog(){ long currentTime = System.currentTimeMillis(); @@ -230,7 +187,7 @@ public synchronized void dumpToLog(){ printMap(performanceMap, SUBSYSTEM_REPOSITORY); } if(isTaskManagerProfiled) { - printMap(performanceMap, SUBSYSTEM_TASKMANAGER); + printMap(performanceMap, SUBSYSTEM_TASK_MANAGER); } if(isUcfProfiled) { printMap(performanceMap, SUBSYSTEM_UCF); @@ -239,7 +196,7 @@ public synchronized void dumpToLog(){ printMap(performanceMap, SUBSYSTEM_WORKFLOW); } if(isResourceObjectChangeListenerProfiled) { - printMap(performanceMap, SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER); + printMap(performanceMap, SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER); } if(isWebProfiled){ printMap(performanceMap, SUBSYSTEM_WEB); @@ -258,21 +215,12 @@ public synchronized void dumpToLog(){ lastPerformanceDumpTimestamp = System.currentTimeMillis(); } } - } //dumpToLog - - + } - /* =====STATIC HELPER METHODS===== */ - /* - * Minutes to millis - transfer - * */ private static long minutesToMillis(int minutes){ return (long)(minutes*60*1000); - } //minutesToMillis + } - /* - * Updates overall statistics - * */ private void updateOverallStatistics(Map logMap, ProfilingDataLog eventLog, String key, String subsystem){ if(!logMap.containsKey(key)){ eventLog.setArgs(prepareArguments(eventLog.args)); @@ -297,11 +245,8 @@ private void updateOverallStatistics(Map logMap, if(logMap.get(key).getSlowestMethodList().size() > TOP_TEN_METHOD_NUMBER){ logMap.get(key).getSlowestMethodList().remove(logMap.get(key).getSlowestMethodList().size()-1); } - } //updateOverallStatistics + } - /* - * prints provided map to log - * */ private static void printMap(Map logMap, String subsystem){ for(String key: logMap.keySet()){ @@ -309,57 +254,37 @@ private static void printMap(Map logMap, String s logMap.get(key).appendToLogger(); } } - } //printMap + } - /* - * Configure profiled subsystems - * */ public void subsystemConfiguration(Map subsystems){ isModelProfiled = subsystems.get(SUBSYSTEM_MODEL); isProvisioningProfiled = subsystems.get(SUBSYSTEM_PROVISIONING); isRepositoryProfiled = subsystems.get(SUBSYSTEM_REPOSITORY); - isResourceObjectChangeListenerProfiled = subsystems.get(SUBSYSTEM_RESOURCEOBJECTCHANGELISTENER); - isTaskManagerProfiled = subsystems.get(SUBSYSTEM_TASKMANAGER); + isResourceObjectChangeListenerProfiled = subsystems.get(SUBSYSTEM_RESOURCE_OBJECT_CHANGE_LISTENER); + isTaskManagerProfiled = subsystems.get(SUBSYSTEM_TASK_MANAGER); isUcfProfiled = subsystems.get(SUBSYSTEM_UCF); isWorkflowProfiled = subsystems.get(SUBSYSTEM_WORKFLOW); isWebProfiled = subsystems.get(SUBSYSTEM_WEB); - } //subsystemConfiguration + } - /* - * Cleans everything, all subsystem maps and top ten lists - * */ private void cleanEverything(){ performanceMap.clear(); - } //cleanEverything + } - /* - * Prepares ProfilingDataLog object from provided ProceedingJoinPoint object - * - * Based on entry boolean getObjectType - method adds working objectType to ProfilingDataLog object - * */ private ProfilingDataLog prepareProfilingDataLog(String className, String methodName, long startTime, Object[] args){ long eTime = calculateTime(startTime); long timestamp = System.currentTimeMillis(); - ProfilingDataLog profilingEvent = new ProfilingDataLog(className, methodName, eTime, timestamp, args); - - return profilingEvent; - } //prepareProfilingDataLog + return new ProfilingDataLog(className, methodName, eTime, timestamp, args); + } - /* - * Sorts ArrayList provided as the parameter - */ private static List sort(List list){ Collections.sort(list, arrayComparator); return list; } - /* - * Inner class ArrayComparator - * Compares two ProfilingDataLogs based on estimatedTime parameter - * */ private static class ArrayComparator implements Comparator{ @Override @@ -367,17 +292,12 @@ public int compare(ProfilingDataLog o1, ProfilingDataLog o2) { return ((Long)o2.getEstimatedTime()).compareTo(o1.getEstimatedTime()); } - } //ArrayComparator inner-class + } - /* =====STATIC HELPET METHODS=====*/ - /* - * Calculates estimated time on method exit - */ private long calculateTime(long startTime){ return (System.nanoTime() - startTime); - } //calculateTime + } - /* Getters and Setters - mainly for test purposes */ public Map getPerformanceMap() { return performanceMap; } @@ -386,14 +306,6 @@ public int getMinuteDumpInterval() { return minuteDumpInterval; } - /* -* Stripping of operationResult from method arguments. Working with big dataset, that operationResult can potentially have is not very comforting, -* so we take only most important information before we proceed, specifically: -* - operation -* - status -* - message -* Everything else is thrown away -* */ private String[] prepareArguments(Object[] args){ if(args == null || args.length == 0)