Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into gui-devel
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 26, 2014
2 parents b65129a + 12c8513 commit d4c41c1
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 41 deletions.
Expand Up @@ -36,7 +36,8 @@
*/
public class GuiComponents {

private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(10);
private static ExecutorService EXECUTOR;

private static final String KEY_BOOLEAN_NULL = "Boolean.NULL";
private static final String KEY_BOOLEAN_TRUE = "Boolean.TRUE";
private static final String KEY_BOOLEAN_FALSE = "Boolean.FALSE";
Expand All @@ -45,6 +46,10 @@ public static void destroy() {
EXECUTOR.shutdownNow();
}

public static void init() {
EXECUTOR = Executors.newFixedThreadPool(10);
}

public static <T> Future<T> submitCallable(Callable<T> callable) {
Validate.notNull(callable, "Callable must not be null.");

Expand Down
Expand Up @@ -118,6 +118,8 @@ public Class<PageDashboard> getHomePage() {
public void init() {
super.init();

GuiComponents.init();

getComponentInstantiationListeners().add(new SpringComponentInjector(this));

IResourceSettings resourceSettings = getResourceSettings();
Expand Down
Expand Up @@ -5206,7 +5206,7 @@
This overrides other template definitions (system global, resource).
</xsd:documentation>
<xsd:appinfo>
<a:objectReferenceTargetType>tns:ObjetcTemplateType</a:objectReferenceTargetType>
<a:objectReferenceTargetType>tns:ObjectTemplateType</a:objectReferenceTargetType>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
Expand Down Expand Up @@ -5251,7 +5251,7 @@
DEPRECATED. For compatibility only. Use objectTemplateRef in reaction instead.
</xsd:documentation>
<xsd:appinfo>
<a:objectReferenceTargetType>tns:ObjetcTemplateType</a:objectReferenceTargetType>
<a:objectReferenceTargetType>tns:ObjectTemplateType</a:objectReferenceTargetType>
<a:deprecated/>
</xsd:appinfo>
</xsd:annotation>
Expand All @@ -5262,7 +5262,7 @@
DEPRECATED. For compatibility only. Use objectTemplateRef in reaction instead.
</xsd:documentation>
<xsd:appinfo>
<a:objectReferenceTargetType>tns:ObjetcTemplateType</a:objectReferenceTargetType>
<a:objectReferenceTargetType>tns:ObjectTemplateType</a:objectReferenceTargetType>
<a:deprecated/>
</xsd:appinfo>
</xsd:annotation>
Expand Down
Expand Up @@ -55,12 +55,14 @@ public void init() {
@Override
public Data execute(ActionExpressionType expression, Data input, ExecutionContext context, OperationResult result) throws ScriptExecutionException {

boolean raw = getParamRaw(expression, input, context, result);

for (Item item : input.getData()) {
if (item instanceof PrismObject) {
PrismObject<? extends ObjectType> prismObject = (PrismObject) item;
ObjectType objectType = prismObject.asObjectable();
operationsHelper.applyDelta(createAddDelta(objectType), context, result);
context.println("Added " + item.toString());
operationsHelper.applyDelta(createAddDelta(objectType), operationsHelper.createExecutionOptions(raw), context, result);
context.println("Added " + item.toString() + rawSuffix(raw));
} else {
throw new ScriptExecutionException("Item couldn't be added, because it is not a PrismObject: " + item.toString());
}
Expand Down
Expand Up @@ -64,6 +64,8 @@ public void init() {
@Override
public Data execute(ActionExpressionType expression, Data input, ExecutionContext context, OperationResult result) throws ScriptExecutionException {

boolean raw = getParamRaw(expression, input, context, result);

JAXBElement<?> resourceExpression = expressionHelper.getArgument(expression.getParameter(), PARAM_RESOURCE, false, false, NAME);
JAXBElement<?> roleExpression = expressionHelper.getArgument(expression.getParameter(), PARAM_ROLE, false, false, NAME);

Expand Down Expand Up @@ -91,8 +93,8 @@ public Data execute(ActionExpressionType expression, Data input, ExecutionContex
if (item instanceof PrismObject && ((PrismObject) item).asObjectable() instanceof FocusType) {
PrismObject<? extends ObjectType> prismObject = (PrismObject) item;
ObjectType objectType = prismObject.asObjectable();
operationsHelper.applyDelta(createDelta(objectType, resources, roles), context, result);
context.println("Modified " + item.toString());
operationsHelper.applyDelta(createDelta(objectType, resources, roles), operationsHelper.createExecutionOptions(raw), context, result);
context.println("Modified " + item.toString() + rawSuffix(raw));
} else {
throw new ScriptExecutionException("Item could not be modified, because it is not a PrismObject of FocusType: " + item.toString());
}
Expand Down
Expand Up @@ -16,21 +16,29 @@

package com.evolveum.midpoint.model.impl.scripting.actions;

import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.impl.scripting.ActionExecutor;
import com.evolveum.midpoint.model.impl.scripting.Data;
import com.evolveum.midpoint.model.impl.scripting.ExecutionContext;
import com.evolveum.midpoint.model.impl.scripting.ScriptExecutionException;
import com.evolveum.midpoint.model.impl.scripting.ScriptingExpressionEvaluator;
import com.evolveum.midpoint.model.impl.scripting.helpers.ExpressionHelper;
import com.evolveum.midpoint.model.impl.scripting.helpers.OperationsHelper;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.provisioning.api.ProvisioningService;

import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ActionExpressionType;
import org.springframework.beans.factory.annotation.Autowired;

/**
* @author mederly
*/
public abstract class BaseActionExecutor implements ActionExecutor {

private static final String PARAM_RAW = "raw";

@Autowired
protected ScriptingExpressionEvaluator scriptingExpressionEvaluator;

Expand All @@ -51,4 +59,13 @@ public abstract class BaseActionExecutor implements ActionExecutor {

//protected Data getArgumentValue(ActionExpressionType actionExpression, String parameterName, boolean required) throws ScriptExecutionException {

// todo move to some helper?
protected boolean getParamRaw(ActionExpressionType expression, Data input, ExecutionContext context, OperationResult result) throws ScriptExecutionException {
return expressionHelper.getArgumentAsBoolean(expression.getParameter(), PARAM_RAW, input, context, false, PARAM_RAW, result);
}

protected String rawSuffix(boolean raw) {
return raw ? " (raw)" : "";
}

}
Expand Up @@ -55,12 +55,14 @@ public void init() {
@Override
public Data execute(ActionExpressionType expression, Data input, ExecutionContext context, OperationResult result) throws ScriptExecutionException {

boolean raw = getParamRaw(expression, input, context, result);

for (Item item : input.getData()) {
if (item instanceof PrismObject) {
PrismObject<? extends ObjectType> prismObject = (PrismObject) item;
ObjectType objectType = prismObject.asObjectable();
operationsHelper.applyDelta(createDeleteDelta(objectType), context, result);
context.println("Deleted " + item.toString());
operationsHelper.applyDelta(createDeleteDelta(objectType), operationsHelper.createExecutionOptions(raw), context, result);
context.println("Deleted " + item.toString() + rawSuffix(raw));
} else {
throw new ScriptExecutionException("Item couldn't be deleted, because it is not a PrismObject: " + item.toString());
}
Expand Down
Expand Up @@ -16,6 +16,7 @@

package com.evolveum.midpoint.model.impl.scripting.actions;

import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.impl.scripting.Data;
import com.evolveum.midpoint.model.impl.scripting.ExecutionContext;
import com.evolveum.midpoint.model.impl.scripting.ScriptExecutionException;
Expand Down Expand Up @@ -57,15 +58,17 @@ public void init() {
@Override
public Data execute(ActionExpressionType expression, Data input, ExecutionContext context, OperationResult result) throws ScriptExecutionException {

boolean raw = getParamRaw(expression, input, context, result);

JAXBElement<?> deltaExpression = expressionHelper.getArgument(expression.getParameter(), PARAM_DELTA, true, true, NAME);
Data deltaData = scriptingExpressionEvaluator.evaluateExpression(deltaExpression, input, context, result);

for (Item item : input.getData()) {
if (item instanceof PrismObject) {
PrismObject<? extends ObjectType> prismObject = (PrismObject) item;
ObjectType objectType = prismObject.asObjectable();
operationsHelper.applyDelta(createDelta(objectType, deltaData), context, result);
context.println("Modified " + item.toString());
operationsHelper.applyDelta(createDelta(objectType, deltaData), operationsHelper.createExecutionOptions(raw), context, result);
context.println("Modified " + item.toString() + rawSuffix(raw));
} else {
throw new ScriptExecutionException("Item could not be modified, because it is not a PrismObject: " + item.toString());
}
Expand Down
Expand Up @@ -78,4 +78,10 @@ public <T extends ObjectType> PrismObject<T> getObject(Class<T> type, String oid
throw new ScriptExecutionException("Couldn't get object: " + e.getMessage(), e);
}
}

public ModelExecuteOptions createExecutionOptions(boolean raw) {
ModelExecuteOptions options = new ModelExecuteOptions();
options.setRaw(raw);
return options;
}
}
33 changes: 18 additions & 15 deletions samples/resources/ad/ad-resource-groups-advanced.xml
Expand Up @@ -20,6 +20,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3"
xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:mr="http://prism.evolveum.com/xml/ns/public/matching-rule-3"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3"
Expand Down Expand Up @@ -152,7 +153,19 @@
</expression>
</outbound>
</attribute>
<iteration>

<!-- This defines an association between user and groups he is a member of -->
<association>
<ref>ri:group</ref>
<displayName>AD Group Membership</displayName>
<kind>entitlement</kind>
<intent>group</intent>
<direction>objectToSubject</direction>
<associationAttribute>ri:member</associationAttribute>
<valueAttribute>icfs:name</valueAttribute>
</association>

<iteration>
<maxIterations>5</maxIterations>
</iteration>
<protected>
Expand All @@ -175,26 +188,16 @@
</password>
</credentials>

<!-- This defines an association between user and groups he is a member of -->
<association>
<ref>ri:group</ref>
<displayName>AD Group Membership</displayName>
<kind>entitlement</kind>
<intent>group</intent>
<direction>objectToSubject</direction>
<associationAttribute>ri:member</associationAttribute>
<valueAttribute>icfs:name</valueAttribute>
</association>
</objectType>

<!-- handling of groups -->

<objectType>
<kind>entitlement</kind>
<displayName>AD Group</displayName>
<intent>group</intent>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<displayName>AD Group</displayName>
<default>true</default>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<attribute>
<ref>icfs:name</ref>
<matchingRule>mr:stringIgnoreCase</matchingRule>
Expand Down Expand Up @@ -250,8 +253,8 @@
<synchronization>
<objectSynchronization>
<!-- Synchronizing users -->
<enabled>true</enabled>
<objectClass>ri:AccountObjectClass</objectClass>
<enabled>true</enabled>

<correlation>
<q:description>
Expand Down Expand Up @@ -299,11 +302,11 @@

<objectSynchronization>
<!-- Synchronizing groups with roles -->
<enabled>true</enabled>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<kind>entitlement</kind>
<intent>group</intent>
<focusType>c:RoleType</focusType>
<enabled>true</enabled>

<correlation>
<q:equal>
Expand Down
31 changes: 17 additions & 14 deletions samples/resources/ad/ad-resource-groups-basic.xml
Expand Up @@ -22,6 +22,7 @@
xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
xmlns:mr="http://prism.evolveum.com/xml/ns/public/matching-rule-3"
xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3"
xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"
xsi:schemaLocation="http://midpoint.evolveum.com/xml/ns/public/common/common-3 ../../../infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd">
Expand Down Expand Up @@ -152,6 +153,18 @@
</expression>
</outbound>
</attribute>

<!-- This defines an association between user and groups he is a member of -->
<association>
<ref>ri:group</ref>
<displayName>AD Group Membership</displayName>
<kind>entitlement</kind>
<intent>group</intent>
<direction>objectToSubject</direction>
<associationAttribute>ri:member</associationAttribute>
<valueAttribute>icfs:name</valueAttribute>
</association>

<iteration>
<maxIterations>5</maxIterations>
</iteration>
Expand All @@ -175,26 +188,16 @@
</password>
</credentials>

<!-- This defines an association between user and groups he is a member of -->
<association>
<ref>ri:group</ref>
<displayName>AD Group Membership</displayName>
<kind>entitlement</kind>
<intent>group</intent>
<direction>objectToSubject</direction>
<associationAttribute>ri:member</associationAttribute>
<valueAttribute>icfs:name</valueAttribute>
</association>
</objectType>

<!-- handling of groups -->

<objectType>
<kind>entitlement</kind>
<displayName>AD Group</displayName>
<intent>group</intent>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<displayName>AD Group</displayName>
<default>true</default>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<attribute>
<ref>icfs:name</ref>
<matchingRule>mr:stringIgnoreCase</matchingRule>
Expand Down Expand Up @@ -250,8 +253,8 @@
<synchronization>
<objectSynchronization>
<!-- Synchronizing users -->
<enabled>true</enabled>
<objectClass>ri:AccountObjectClass</objectClass>
<enabled>true</enabled>

<correlation>
<q:description>
Expand Down Expand Up @@ -299,11 +302,11 @@

<objectSynchronization>
<!-- Synchronizing groups with roles -->
<enabled>true</enabled>
<objectClass>ri:CustomGroupObjectClass</objectClass>
<kind>entitlement</kind>
<intent>group</intent>
<focusType>c:RoleType</focusType>
<enabled>true</enabled>

<correlation>
<q:equal>
Expand Down

0 comments on commit d4c41c1

Please sign in to comment.