List of usage examples for org.apache.wicket.model ChainingModel ChainingModel
public ChainingModel(final Object modelObject)
From source file:com.evolveum.midpoint.web.component.assignment.ConstructionDetailsPanelChainedModel.java
License:Apache License
private void initModels() { resourceModel = new LoadableDetachableModel<PrismObject<ResourceType>>() { @Override//from w w w.j av a 2 s. co m protected PrismObject<ResourceType> load() { ObjectReferenceType resourceRef = getModelObject().getResourceRef(); Task loadResourceTask = getPageBase().createSimpleTask(OPERATION_LOAD_RESOURCE); OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCE); PrismObject<ResourceType> resource = WebModelServiceUtils.loadObject(resourceRef, getPageBase(), loadResourceTask, result); result.computeStatusIfUnknown(); if (!result.isAcceptable()) { LOGGER.error("Cannot find resource referenced from construction. {}", result.getMessage()); result.recordPartialError("Could not find resource referenced from construction."); return null; } return resource; } }; kindModel = new IModel<ShadowKindType>() { @Override public ShadowKindType getObject() { return getModelObject().getKind(); } @Override public void setObject(ShadowKindType shadowKindType) { getModelObject().setKind(shadowKindType); } @Override public void detach() { } }; intentChoicesModel = new ChainingModel<String>(kindModel) { private static final long serialVersionUID = 1L; @Override public String getObject() { List<String> availableIntentValues = new ArrayList<>(); try { if (resourceModel.getObject() == null) { return availableIntentValues.toString(); } RefinedResourceSchema refinedSchema = RefinedResourceSchema .getRefinedSchema(resourceModel.getObject()); if (refinedSchema != null) { ShadowKindType kind = ((IModel<ShadowKindType>) super.getChainedModel()).getObject(); List<? extends RefinedObjectClassDefinition> definitions = refinedSchema .getRefinedDefinitions(kind); for (RefinedObjectClassDefinition def : definitions) { if (def.getIntent() != null) { availableIntentValues.add(def.getIntent()); } } } } catch (SchemaException ex) { LOGGER.error("Cannot get refined resource schema for resource {}. {}", resourceModel.getObject().getName().getOrig(), ex.getLocalizedMessage()); } return availableIntentValues.toString(); } @Override public void setObject(String o) { super.setObject(o); } }; }