use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class RunReportPopupPanel method createLookupTableRows.
private <O extends ObjectType> List<LookupTableRowType> createLookupTableRows(JasperReportParameterDto param, String input) {
ItemPath label = null;
ItemPath key = null;
List<LookupTableRowType> rows = new ArrayList<>();
JasperReportParameterPropertiesDto properties = param.getProperties();
if (properties == null) {
return null;
}
String pLabel = properties.getLabel();
if (pLabel != null) {
label = new ItemPath(pLabel);
}
String pKey = properties.getKey();
if (pKey != null) {
key = new ItemPath(pKey);
}
String pTargetType = properties.getTargetType();
Class<O> targetType = null;
if (pTargetType != null) {
try {
targetType = (Class<O>) Class.forName(pTargetType);
} catch (ClassNotFoundException e) {
error("Error while creating lookup table for input parameter: " + param.getName() + ", " + e.getClass().getSimpleName() + " (" + e.getMessage() + ")");
//e.printStackTrace();
}
}
if (label != null && targetType != null && input != null) {
OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCES);
Task task = createSimpleTask(OPERATION_LOAD_RESOURCES);
Collection<PrismObject<O>> objects;
ObjectQuery query = QueryBuilder.queryFor(targetType, getPrismContext()).item(new QName(SchemaConstants.NS_C, pLabel)).startsWith(input).matching(new QName(SchemaConstants.NS_MATCHING_RULE, "origIgnoreCase")).maxSize(AUTO_COMPLETE_BOX_SIZE).build();
try {
objects = getPageBase().getModelService().searchObjects(targetType, query, SelectorOptions.createCollection(GetOperationOptions.createNoFetch()), task, result);
for (PrismObject<O> o : objects) {
Object realKeyValue = null;
PrismProperty labelItem = o.findProperty(label);
//TODO: e.g. support not only for property, but also ref, container..
if (labelItem == null || labelItem.isEmpty()) {
continue;
}
PrismProperty keyItem = o.findProperty(key);
if ("oid".equals(pKey)) {
realKeyValue = o.getOid();
}
if (realKeyValue == null && (keyItem == null || keyItem.isEmpty())) {
continue;
}
//TODO: support for single/multivalue value
if (!labelItem.isSingleValue()) {
continue;
}
Object realLabelValue = labelItem.getRealValue();
realKeyValue = (realKeyValue == null) ? keyItem.getRealValue() : realKeyValue;
// TODO: take definition into account
QName typeName = labelItem.getDefinition().getTypeName();
LookupTableRowType row = new LookupTableRowType();
if (realKeyValue != null) {
row.setKey(convertObjectToPolyStringType(realKeyValue).getOrig());
} else {
throw new SchemaException("Cannot create lookup table with null key for label: " + realLabelValue);
}
row.setLabel(convertObjectToPolyStringType(realLabelValue));
rows.add(row);
}
return rows;
} catch (SchemaException | ObjectNotFoundException | SecurityViolationException | CommunicationException | ConfigurationException | ExpressionEvaluationException e) {
error("Error while creating lookup table for input parameter: " + param.getName() + ", " + e.getClass().getSimpleName() + " (" + e.getMessage() + ")");
//e.printStackTrace();
}
}
return rows;
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class AbstractManualConnectorInstance method addObject.
// TODO: operations to check ticket state
@Override
public AsynchronousOperationReturnValue<Collection<ResourceAttribute<?>>> addObject(PrismObject<? extends ShadowType> object, Collection<Operation> additionalOperations, StateReporter reporter, OperationResult parentResult) throws CommunicationException, GenericFrameworkException, SchemaException, ObjectAlreadyExistsException, ConfigurationException {
OperationResult result = parentResult.createSubresult(OPERATION_ADD);
String ticketIdentifier = null;
try {
ticketIdentifier = createTicketAdd(object, additionalOperations, result);
} catch (CommunicationException | GenericFrameworkException | SchemaException | ObjectAlreadyExistsException | ConfigurationException | RuntimeException | Error e) {
result.recordFatalError(e);
throw e;
}
result.recordInProgress();
result.setAsynchronousOperationReference(ticketIdentifier);
AsynchronousOperationReturnValue<Collection<ResourceAttribute<?>>> ret = new AsynchronousOperationReturnValue<>();
ret.setOperationResult(result);
return ret;
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class AbstractManualConnectorInstance method modifyObject.
@Override
public AsynchronousOperationReturnValue<Collection<PropertyModificationOperation>> modifyObject(ObjectClassComplexTypeDefinition objectClass, Collection<? extends ResourceAttribute<?>> identifiers, Collection<Operation> changes, StateReporter reporter, OperationResult parentResult) throws ObjectNotFoundException, CommunicationException, GenericFrameworkException, SchemaException, SecurityViolationException, ObjectAlreadyExistsException, ConfigurationException {
OperationResult result = parentResult.createSubresult(OPERATION_MODIFY);
String ticketIdentifier = null;
try {
ticketIdentifier = createTicketModify(objectClass, identifiers, changes, result);
} catch (ObjectNotFoundException | CommunicationException | GenericFrameworkException | SchemaException | ObjectAlreadyExistsException | ConfigurationException | RuntimeException | Error e) {
result.recordFatalError(e);
throw e;
}
result.recordInProgress();
result.setAsynchronousOperationReference(ticketIdentifier);
AsynchronousOperationReturnValue<Collection<PropertyModificationOperation>> ret = new AsynchronousOperationReturnValue<>();
ret.setOperationResult(result);
return ret;
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class TestOpenDjNegative method test520ListResourceObjects.
/**
* This is using the shadow to go to the resource. But it cannot as OpenDJ is down.
* Therefore the expected result is CommunicationException. It must not be ObjectNotFound as
* we do NOT know that the shadow does not exist.
*/
@Test
public void test520ListResourceObjects() throws Exception {
final String TEST_NAME = "test520ListResourceObjects";
TestUtil.displayTestTile(TEST_NAME);
// GIVEN
OperationResult result = new OperationResult(TestOpenDjNegative.class.getName() + "." + TEST_NAME);
try {
// WHEN
List<PrismObject<? extends ShadowType>> objectList = provisioningService.listResourceObjects(RESOURCE_OPENDJ_OID, RESOURCE_OPENDJ_ACCOUNT_OBJECTCLASS, null, null, result);
AssertJUnit.fail("listResourceObjects succeeded unexpectedly");
} catch (CommunicationException e) {
// This is expected
display("Expected exception", e);
}
result.computeStatus();
TestUtil.assertFailure(result);
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class TestOpenDjNegative method test590Synchronize.
@Test
public void test590Synchronize() throws Exception {
final String TEST_NAME = "test590Synhronize";
TestUtil.displayTestTile(TEST_NAME);
// GIVEN
Task task = taskManager.createTaskInstance(TestOpenDjNegative.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();
ResourceShadowDiscriminator coords = new ResourceShadowDiscriminator(RESOURCE_OPENDJ_OID, new QName(RESOURCE_NS, SchemaConstants.ACCOUNT_OBJECT_CLASS_LOCAL_NAME));
try {
provisioningService.synchronize(coords, task, result);
AssertJUnit.fail("addObject succeeded unexpectedly");
} catch (CommunicationException e) {
// This is expected
display("Expected exception", e);
}
result.computeStatus();
TestUtil.assertFailure(result);
}
Aggregations