Skip to content

Commit

Permalink
Merge branch 'master' into feature/groovy-sandbox
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Mar 18, 2019
2 parents 78147d1 + 29fca9c commit 8811147
Show file tree
Hide file tree
Showing 19 changed files with 490 additions and 113 deletions.
Expand Up @@ -46,6 +46,7 @@
import com.evolveum.midpoint.prism.query.builder.S_FilterEntryOrEmpty;
import com.evolveum.midpoint.prism.util.PolyStringUtils;
import com.evolveum.midpoint.repo.api.CacheDispatcher;
import com.evolveum.midpoint.repo.api.CounterManager;
import com.evolveum.midpoint.repo.common.ObjectResolver;
import com.evolveum.midpoint.repo.common.expression.Expression;
import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext;
Expand Down Expand Up @@ -311,6 +312,9 @@ public abstract class PageBase extends WebPage implements ModelServiceLocator {

@SpringBean
private MidpointFunctions midpointFunctions;

@SpringBean
private CounterManager counterManager;

private List<Breadcrumb> breadcrumbs;

Expand Down Expand Up @@ -472,6 +476,10 @@ public LocalizationService getLocalizationService() {
public MidpointFunctions getMidpointFunctions() {
return midpointFunctions;
}

public CounterManager getCounterManager() {
return counterManager;
}

@Contract(pure = true)
public PrismContext getPrismContext() {
Expand Down
Expand Up @@ -18,6 +18,28 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>

<div class="row">

<div class="col-md-12">
<h3><wicket:message key="PageInternals.title.thresholds.counters"/></h3>
<table class="table table-bordered">
<tbody>
<tr wicket:id="thresholdCountersTable">
<th wicket:id="counterTask"/>
<td wicket:id="counterPolicyRule"/>
<td wicket:id="counterCount"/>
<td>
<a class="btn btn-primary" wicket:id="resetThresholdCounter">
<wicket:message key="InternalsCountersPanel.threshold.reset.button"/>
</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>

<div class="row">

<div class="col-md-6">
Expand Down
@@ -1,15 +1,22 @@
package com.evolveum.midpoint.web.page.admin.configuration;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.repo.api.CounterSepcification;
import com.evolveum.midpoint.schema.internals.InternalCounters;
import com.evolveum.midpoint.schema.internals.InternalMonitor;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;

public class InternalsCountersPanel extends BasePanel<ListView<InternalCounters>> {

Expand All @@ -18,7 +25,14 @@ public class InternalsCountersPanel extends BasePanel<ListView<InternalCounters>
private static final String ID_COUNTERS_TABLE = "countersTable";
private static final String ID_COUNTER_LABEL = "counterLabel";
private static final String ID_COUNTER_VALUE = "counterValue";

private static final String ID_THRESHOLD_COUNTER = "thresholdCounter";
private static final String ID_THRESHOLD_COUNTERS_TABLE = "thresholdCountersTable";
private static final String ID_COUNTER_TASK_LABEL = "counterTask";
private static final String ID_COUNTER_POLICY_RULE_LABEL = "counterPolicyRule";
private static final String ID_COUNTER_COUNT_LABEL = "counterCount";
private static final String ID_RESET_THRESHOLD_COUNTER = "resetThresholdCounter";


public InternalsCountersPanel(String id) {
super(id);
}
Expand All @@ -29,6 +43,49 @@ protected void onInitialize() {

setOutputMarkupId(true);

Label thresholdCounter = new Label(ID_THRESHOLD_COUNTER, createStringResource("InternalsCountersPanel.thresholds"));
add(thresholdCounter);

ListView<CounterSepcification> thresholdCountersTable = new ListView<CounterSepcification>(ID_THRESHOLD_COUNTERS_TABLE, createThresholdCounterModel()) {
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<CounterSepcification> item) {
CounterSepcification counter = item.getModelObject();
Label task = new Label(ID_COUNTER_TASK_LABEL, counter.getTaskName());
item.add(task);

Label policyRule = new Label(ID_COUNTER_POLICY_RULE_LABEL, counter.getPolicyRuleName());
item.add(policyRule);

Label count = new Label(ID_COUNTER_COUNT_LABEL, counter.getCount());
item.add(count);

AjaxLink<Void> resetCounter = new AjaxLink<Void>(ID_RESET_THRESHOLD_COUNTER) {

private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
ConfirmationPanel confirmPanel = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), createStringResource("InternalsCountersPanel.reset.confirm.message", counter.getTaskName(), counter.getPolicyRuleName())) {

private static final long serialVersionUID = 1L;

public void yesPerformed(AjaxRequestTarget target) {
getPageBase().getCounterManager().removeCounter(counter);
target.add(InternalsCountersPanel.this);
};
};
getPageBase().showMainPopup(confirmPanel, target);
target.add(InternalsCountersPanel.this);
}
};
item.add(resetCounter);
}

};
add(thresholdCountersTable);

ListView<InternalCounters> countersTable = new ListView<InternalCounters>(ID_COUNTERS_TABLE,
Arrays.asList(InternalCounters.values())) {
private static final long serialVersionUID = 1L;
Expand All @@ -54,4 +111,17 @@ public String getObject() {
};
add(countersTable);
}
}

private IModel<List<CounterSepcification>> createThresholdCounterModel() {
return new IModel<List<CounterSepcification>>() {
private static final long serialVersionUID = 1L;

@Override
public List<CounterSepcification> getObject() {
Collection<CounterSepcification> thresholdCounters = getPageBase().getCounterManager().listCounters();
return new ArrayList<>(thresholdCounters);
}
};
}

}
Expand Up @@ -4375,3 +4375,7 @@ ResourceSummaryPanel.DOWN=Down
operation.com.evolveum.midpoint.web.page.admin.configuration.InternalsThreadsPanel.executeShowAllThreads=Show all threads (Gui)
operation.com.evolveum.midpoint.web.page.admin.configuration.InternalsThreadsPanel.executeShowTasksThreads=Show running tasks threads (Gui)
operation.com.evolveum.midpoint.web.page.admin.configuration.InternalsThreadsPanel.executeRecordTasksThreads=Record running tasks threads (Gui)
InternalsCountersPanel.thresholds=Thresholds
PageInternals.title.thresholds.counters=Thresholds counters
InternalsCountersPanel.reset.confirm.message=Do you really want to remove counters for {0} ({1})
InternalsCountersPanel.threshold.reset.button=Reset
Expand Up @@ -19,38 +19,26 @@
import static com.evolveum.midpoint.model.api.ProgressInformation.StateType.ENTERING;
import static com.evolveum.midpoint.schema.internals.InternalsConfig.consistencyChecks;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.xml.datatype.XMLGregorianCalendar;

import com.evolveum.midpoint.model.api.ProgressInformation;

import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignment;
import com.evolveum.midpoint.model.api.context.EvaluatedPolicyRule;
import com.evolveum.midpoint.model.api.ProgressInformation;
import com.evolveum.midpoint.model.api.context.SynchronizationPolicyDecision;
import com.evolveum.midpoint.model.impl.lens.ClockworkMedic;
import com.evolveum.midpoint.model.impl.lens.EvaluatedAssignmentImpl;
import com.evolveum.midpoint.model.impl.lens.LensContext;
import com.evolveum.midpoint.model.impl.lens.LensProjectionContext;
import com.evolveum.midpoint.model.impl.lens.LensUtil;
import com.evolveum.midpoint.model.impl.lens.projector.credentials.ProjectionCredentialsProcessor;
import com.evolveum.midpoint.model.impl.lens.projector.focus.AssignmentProcessor;
import com.evolveum.midpoint.model.impl.lens.projector.focus.AssignmentTripleEvaluator;
import com.evolveum.midpoint.model.impl.lens.projector.focus.AssignmentHolderProcessor;
import com.evolveum.midpoint.model.impl.lens.projector.focus.AssignmentProcessor;
import com.evolveum.midpoint.model.impl.util.ModelImplUtils;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.delta.DeltaSetTriple;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.repo.api.PreconditionViolationException;
import com.evolveum.midpoint.repo.common.CounterManager;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.internals.InternalCounters;
import com.evolveum.midpoint.schema.internals.InternalMonitor;
Expand All @@ -67,6 +55,9 @@
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PartialProcessingOptionsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PartialProcessingTypeType;

/**
* Projector recomputes the context. It takes the context with a few basic data as input. It uses all the policies
Expand Down Expand Up @@ -99,9 +90,7 @@ public class Projector {
@Autowired private Clock clock;
@Autowired private ClockworkMedic medic;

@Autowired private CounterManager counterManager;

private static final Trace LOGGER = TraceManager.getTrace(Projector.class);
private static final Trace LOGGER = TraceManager.getTrace(Projector.class);

/**
* Runs one projection wave, starting at current execution wave.
Expand Down
Expand Up @@ -22,8 +22,9 @@
import com.evolveum.midpoint.model.api.context.EvaluatedPolicyRule;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.ModelElementContext;
import com.evolveum.midpoint.repo.common.CounterManager;
import com.evolveum.midpoint.repo.common.CounterSepcification;
import com.evolveum.midpoint.repo.api.CounterManager;
import com.evolveum.midpoint.repo.api.CounterSepcification;
import com.evolveum.midpoint.repo.cache.CacheCounterManager;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DebugDumpable;
Expand All @@ -48,7 +49,6 @@ public class PolicyRuleSuspendTaskExecutor {
private static final Trace LOGGER = TraceManager.getTrace(PolicyRuleSuspendTaskExecutor.class);

@Autowired private CounterManager counterManager;
// @Autowired private TaskManager taskManager;

public <O extends ObjectType> void execute(@NotNull ModelContext<O> context, Task task, OperationResult result) throws ThresholdPolicyViolationException, ObjectNotFoundException, SchemaException {
ModelElementContext<O> focusCtx = context.getFocusContext();
Expand All @@ -58,7 +58,7 @@ public <O extends ObjectType> void execute(@NotNull ModelContext<O> context, Tas
}

for (EvaluatedPolicyRule policyRule : focusCtx.getPolicyRules()) {
CounterSepcification counterSpec = counterManager.getCounterSpec(task, policyRule.getPolicyRuleIdentifier(), policyRule.getPolicyRule());
CounterSepcification counterSpec = counterManager.getCounterSpec(task.getTaskType(), policyRule.getPolicyRuleIdentifier(), policyRule.getPolicyRule());
LOGGER.trace("Found counter specification {} for {}", counterSpec, DebugUtil.debugDumpLazily(policyRule));

int counter = 1;
Expand All @@ -72,20 +72,7 @@ public <O extends ObjectType> void execute(@NotNull ModelContext<O> context, Tas
counterSpec.setCount(counter);
}
}

//TODO : not supported yet
// Collection<? extends ModelProjectionContext> projectionCtxs = context.getProjectionContexts();
// for (ModelProjectionContext projectionCtx : projectionCtxs) {
// Collection<EvaluatedPolicyRule> evaluatedPolicyRules = projectionCtx.getPolicyRules();
// for (EvaluatedPolicyRule policyRule : evaluatedPolicyRules) {
// LOGGER.info("projction policy rules: {}", policyRule);
// counter = checkEvaluatedPolicyRule(task, policyRule, counter, result);
// }
//
// }




}

private synchronized int checkEvaluatedPolicyRule(Task task, EvaluatedPolicyRule policyRule, int counter, OperationResult result) throws ThresholdPolicyViolationException, ObjectNotFoundException, SchemaException {
Expand Down
Expand Up @@ -15,23 +15,33 @@
*/
package com.evolveum.midpoint.model.impl.sync;

import javax.annotation.PostConstruct;

import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchemaImpl;
import com.evolveum.midpoint.model.impl.ModelConstants;
import com.evolveum.midpoint.model.impl.util.ModelImplUtils;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.provisioning.api.ProvisioningService;
import com.evolveum.midpoint.repo.api.PreconditionViolationException;
import com.evolveum.midpoint.repo.common.CounterManager;
import com.evolveum.midpoint.repo.common.util.RepoCommonUtils;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.result.OperationConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.schema.util.ExceptionUtil;
import com.evolveum.midpoint.task.api.*;
import com.evolveum.midpoint.task.api.RunningTask;
import com.evolveum.midpoint.task.api.StatisticsCollectionStrategy;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.task.api.TaskHandler;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.task.api.TaskRunResult;
import com.evolveum.midpoint.task.api.TaskRunResult.TaskRunResultStatus;
import com.evolveum.midpoint.util.exception.CommunicationException;
import com.evolveum.midpoint.util.exception.ConfigurationException;
Expand All @@ -43,17 +53,10 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CriticalityType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExecutionModeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LayerType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskPartitionDefinitionType;

import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
* The task handler for a live synchronization.
*
Expand All @@ -71,8 +74,7 @@ public class LiveSyncTaskHandler implements TaskHandler {
@Autowired private TaskManager taskManager;
@Autowired private ProvisioningService provisioningService;
@Autowired private PrismContext prismContext;
@Autowired private CounterManager counterManager;


private static final transient Trace LOGGER = TraceManager.getTrace(LiveSyncTaskHandler.class);

@PostConstruct
Expand All @@ -94,8 +96,7 @@ public StatisticsCollectionStrategy getStatisticsCollectionStrategy() {
@Override
public TaskRunResult run(RunningTask task, TaskPartitionDefinitionType partition) {
LOGGER.trace("LiveSyncTaskHandler.run starting");

// counterManager.registerCounter(task, true);


OperationResult opResult = new OperationResult(OperationConstants.LIVE_SYNC);
TaskRunResult runResult = new TaskRunResult();
Expand Down
Expand Up @@ -53,7 +53,6 @@
import com.evolveum.midpoint.provisioning.api.ResourceObjectShadowChangeDescription;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.repo.cache.RepositoryCache;
import com.evolveum.midpoint.repo.common.CounterManager;
import com.evolveum.midpoint.repo.common.task.AbstractSearchIterativeTaskHandler;
import com.evolveum.midpoint.repo.common.task.TaskHandlerUtil;
import com.evolveum.midpoint.schema.GetOperationOptions;
Expand Down Expand Up @@ -134,7 +133,6 @@ public class ReconciliationTaskHandler implements WorkBucketAwareTaskHandler {
@Qualifier("cacheRepositoryService")
private RepositoryService repositoryService;

@Autowired private CounterManager counterManager;
@Autowired private AssignmentCollector assignmentCollector;
@Autowired private SystemObjectCache systemObjectCache;

Expand Down

0 comments on commit 8811147

Please sign in to comment.