Skip to content

Commit

Permalink
fix for MID-2180 - adding partial error handling to resource provider…
Browse files Browse the repository at this point in the history
… when selecting resource to add account to on PageUser.
  • Loading branch information
Erik Suta committed Jan 29, 2015
1 parent c15a0c0 commit 15c3b9f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
Expand Up @@ -970,7 +970,13 @@ private void initResourceModal() {
ModalWindow window = createModalWindow(MODAL_ID_RESOURCE,
createStringResource("pageUser.title.selectResource"), 1100, 560);

final SimpleUserResourceProvider provider = new SimpleUserResourceProvider(this, accountsModel);
final SimpleUserResourceProvider provider = new SimpleUserResourceProvider(this, accountsModel){

@Override
protected void handlePartialError(OperationResult result) {
showResult(result);
}
};
window.setContent(new ResourcesPopup(window.getContentId()) {

@Override
Expand Down
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.prism.PrismReference;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.util.SelectableBean;
Expand Down Expand Up @@ -50,16 +51,31 @@ public SimpleUserResourceProvider(Component component, IModel<List<UserAccountDt
Validate.notNull(accountsModel, "Accounts model must not be null.");
this.accountsModel = accountsModel;

resourceProvider = new ObjectDataProvider(component, ResourceType.class);
resourceProvider = new ObjectDataProvider(component, ResourceType.class){

@Override
protected void handleNotSuccessOrHandledErrorInIterator(OperationResult result) {
if(result.isPartialError()){
handlePartialError(result);
} else {
super.handleNotSuccessOrHandledErrorInIterator(result);
}
}
};
}

/**
* Override to provide handle operation for partial error during provider iterator operation.
* */
protected void handlePartialError(OperationResult result){}

@Override
public Iterator<SelectableBean<ResourceType>> internalIterator(long first, long count) {
getAvailableData().clear();

Set<String> alreadyUsedResources = createUsedResourceOidSet();

List<SelectableBean<ResourceType>> allData = new ArrayList<SelectableBean<ResourceType>>();
List<SelectableBean<ResourceType>> allData = new ArrayList<>();
Iterator<SelectableBean<ResourceType>> iterator = resourceProvider.iterator(0, resourceProvider.size());
while (iterator.hasNext()) {
SelectableBean<ResourceType> bean = iterator.next();
Expand All @@ -81,7 +97,7 @@ public void setResourceProviderQuery(ObjectQuery query){
}

private Set<String> createUsedResourceOidSet() {
Set<String> set = new HashSet<String>();
Set<String> set = new HashSet<>();

List<UserAccountDto> accounts = accountsModel.getObject();
if (accounts == null) {
Expand Down

0 comments on commit 15c3b9f

Please sign in to comment.