Source:
private int addGroupsToGroupStructureSynchronizationPool(PerunSession sess) throws InternalErrorException { int defaultIntervalMultiplier = BeansUtils.getCoreConfig().getGroupStructureSynchronizationInterval(); long minutesFromEpoch = System.currentTimeMillis()/1000/60; List<Group> groups = groupsManagerImpl.getGroupsStructuresToSynchronize(sess); int numberOfNewlyAddedGroups = 0; for (Group group: groups) { int intervalMultiplier; try { Attribute intervalAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, group, GroupsManager.GROUPSTRUCTURESYNCHROINTERVAL_ATTRNAME); if (intervalAttribute.getValue() != null) { intervalMultiplier = Integer.parseInt((String) intervalAttribute.getValue()); } else { intervalMultiplier = defaultIntervalMultiplier; log.warn("Group structure hasn't set synchronization interval, using default seconds", group, intervalMultiplier); } } catch (AttributeNotExistsException e) { log.error("Required attribute isn't defined in Perun! Using default value from properties instead!", GroupsManager.GROUPSTRUCTURESYNCHROINTERVAL_ATTRNAME); intervalMultiplier = defaultIntervalMultiplier; } catch (WrongAttributeAssignmentException e) { log.error("Cannot get attribute " + GroupsManager.GROUPSTRUCTURESYNCHROINTERVAL_ATTRNAME + " for group structure " + group + " due to exception. Using default value from properties instead!",e); intervalMultiplier = defaultIntervalMultiplier; } intervalMultiplier = intervalMultiplier*5; if ((minutesFromEpoch % intervalMultiplier) == 0) { if (poolOfGroupsStructuresToBeSynchronized.putJobIfAbsent(group, false)) { numberOfNewlyAddedGroups++; log.info("Group structure was added to the pool of groups structures waiting for synchronization.", group); } else { log.info("Group structure synchronization is already running.", group); } } } return numberOfNewlyAddedGroups; }

Target:
private int addGroupsToGroupStructureSynchronizationPool(PerunSession sess) throws InternalErrorException { int defaultIntervalMultiplier = BeansUtils.getCoreConfig().getGroupStructureSynchronizationInterval(); long minutesFromEpoch = System.currentTimeMillis()/1000/60; List<Group> groups = groupsManagerImpl.getGroupsStructuresToSynchronize(sess); int numberOfNewlyAddedGroups = 0; for (Group group: groups) { int intervalMultiplier; try { Attribute intervalAttribute = getPerunBl().getAttributesManagerBl().getAttribute(sess, group, GroupsManager.GROUP_STRUCTURE_SYNCHRO_INTERVAL_ATTRNAME); if (intervalAttribute.getValue() != null) { intervalMultiplier = Integer.parseInt((String) intervalAttribute.getValue()); } else { intervalMultiplier = defaultIntervalMultiplier; log.debug("Group structure hasn't set synchronization interval, using default seconds", group, intervalMultiplier); } } catch (AttributeNotExistsException e) { log.debug("Required attribute isn't defined in Perun! Using default value from properties instead!", GroupsManager.GROUP_STRUCTURE_SYNCHRO_INTERVAL_ATTRNAME); intervalMultiplier = defaultIntervalMultiplier; } catch (WrongAttributeAssignmentException e) { log.debug("Cannot get attribute " + GroupsManager.GROUP_STRUCTURE_SYNCHRO_INTERVAL_ATTRNAME + " for group structure " + group + " due to exception. Using default value from properties instead!",e); intervalMultiplier = defaultIntervalMultiplier; } intervalMultiplier = intervalMultiplier*5; if ((minutesFromEpoch % intervalMultiplier) == 0) { if (poolOfGroupsStructuresToBeSynchronized.putJobIfAbsent(group, false)) { numberOfNewlyAddedGroups++; log.debug("Group structure was added to the pool of groups structures waiting for synchronization.", group); } else { log.debug("Group structure synchronization is already running.", group); } } } return numberOfNewlyAddedGroups; }