@SuppressWarnings("unchecked") private <T> T maybeUnwrapBindable(T object) { if (object instanceof BindableProxy) { object = (T) ((BindableProxy<T>) object).deepUnwrap(); } return object; } }
private FieldDefinition unwrap(FieldDefinition fieldDefinition) { if (fieldDefinition instanceof BindableProxy) { return ((BindableProxy<FieldDefinition>) fieldDefinition).deepUnwrap(); } return fieldDefinition; }
@Override public Map<String, Object> deepUnwrap() { final Map<String, Object> clone = new HashMap<>(); agent.target.forEach((k,v) -> clone.put(k, (v instanceof BindableProxy ? ((BindableProxy<?>) v).deepUnwrap() : v))); return clone; }
@Override public List<M> deepUnwrap() { final List<M> unwrapped = new ArrayList<>(list.size()); for (M m : list) { if (m instanceof BindableProxy) { m = ((BindableProxy<M>) m).deepUnwrap(); } unwrapped.add(m); } return unwrapped; } }
@Override public List<M> deepUnwrap() { final List<M> unwrapped = new ArrayList<>(list.size()); for (M m : list) { if (m instanceof BindableProxy) { m = ((BindableProxy<M>) m).deepUnwrap(); } unwrapped.add(m); } return unwrapped; } }
@Override public Map<String, Object> deepUnwrap() { final Map<String, Object> clone = new HashMap<>(); agent.target.forEach((k,v) -> clone.put(k, (v instanceof BindableProxy ? ((BindableProxy<?>) v).deepUnwrap() : v))); return clone; }
public static <T> T deepClone(T instance) { if(instance == null) { return null; } return doDeepClone(instance).deepUnwrap(); }
/** * Pauses all bindings. The model and UI fields are no longer kept in sync * until either {@link #resume(StateSync)} or {@link #setModel(Object)} is * called. This method has no effect if the bindings are already paused. */ @SuppressWarnings("unchecked") public void pause() { if (paused != null) return; final T paused = proxy; final T clone = (T) ((BindableProxy<?>) proxy).deepUnwrap(); setModel(clone); this.paused = paused; }
/** * Pauses all bindings. The model and UI fields are no longer kept in sync * until either {@link #resume(StateSync)} or {@link #setModel(Object)} is * called. This method has no effect if the bindings are already paused. */ @SuppressWarnings("unchecked") public void pause() { if (paused != null) return; final T paused = proxy; final T clone = (T) ((BindableProxy<?>) proxy).deepUnwrap(); setModel(clone); this.paused = paused; }
/** * Pauses all bindings. The model and UI fields are no longer kept in sync * until either {@link #resume(StateSync)} or {@link #setModel(Object)} is * called. This method has no effect if the bindings are already paused. */ @SuppressWarnings("unchecked") public void pause() { if (paused != null) return; final T paused = proxy; final T clone = (T) ((BindableProxy<?>) proxy).deepUnwrap(); setModel(clone); this.paused = paused; }
@SuppressWarnings("unchecked") public static <T> T clone(final T pojo) { if (null != pojo) { final BindableProxy proxy = (BindableProxy) DataBinder.forModel(pojo).getModel(); return (T) proxy.deepUnwrap(); } return null; }
private Object cloneValue(Object value) { if (value == null || isSimpleValue(value)) { return value; } else { BindableProxy bindableProxy = (BindableProxy) BindableProxyFactory.getBindableProxy(value); return bindableProxy.deepUnwrap(); } } }
model = ((BindableProxy<MODEL>)model).deepUnwrap();
@Override public boolean validate(FormField formField, MODEL model) { boolean isValid = true; if (model instanceof BindableProxy) { model = ((BindableProxy<MODEL>)model).deepUnwrap(); } try { Set<ConstraintViolation<Object>> result = validator.validate(model); for (ConstraintViolation<Object> constraintViolation : result) { String propertyName = getFieldNameFromConstraint(constraintViolation, formField.getFieldName().contains( NESTED_PROPERTY_SEPARATOR)); if (checkBinding(formField, propertyName)) { formField.showError(constraintViolation.getMessage()); return false; } } } catch (IllegalArgumentException ex) { GWT.log("Error trying to validate model: model does not any validation constraint. "); } return isValid; }
private void doRender(final String domainObjectUUID, final Object domainObject, final Path diagramPath, final FieldChangeHandler changeHandler, final RenderMode renderMode) { final List<String> previousExpandedCollapses = new ArrayList<>(); if (renderer.isInitialized()) { // Collecting expanded collapses from current form to synchronize the new form collapses renderer.getCurrentForm().getFields() .stream() .filter(this::checkCollapsibleGroup) .filter(formField -> ((CollapsibleFormGroup) formField.getContainer()).isExpanded()) .map(FormField::getFieldName) .collect(Collectors.toCollection(() -> previousExpandedCollapses)); LOGGER.fine("Clearing previous form"); renderer.unBind(); } LOGGER.fine("Rendering a new form for element"); Collection<FormElementFilter> filters = FormFiltersProviderFactory.getFilterForDefinition(domainObjectUUID, domainObject); final BindableProxy<?> proxy = (BindableProxy<?>) BindableProxyFactory.getBindableProxy(domainObject); final StaticModelFormRenderingContext generatedCtx = modelGenerator.getContextForModel(proxy.deepUnwrap(), filters.stream().toArray(FormElementFilter[]::new)); final FormRenderingContext<?> pathAwareCtx = new PathAwareFormContext<>(generatedCtx, diagramPath); pathAwareCtx.setRenderMode(renderMode); renderer.render(pathAwareCtx); syncCollapses(previousExpandedCollapses); renderer.addFieldChangeHandler(changeHandler); }
public IsFormView<Object> getEditInstanceForm(int position) { if (field.getEditionForm() != null) { BindableProxy instanceProxy = bindingHelper.getProxyForModel(values.get(position)); BindableProxy editionProxy = bindingHelper.getProxyForModel(instanceProxy.deepUnwrap()); String namespace = renderingContext.getNamespace() + FormRenderingContext.NAMESPACE_SEPARATOR + EDITION_NAMESPACE; formRenderer.render(renderingContext.getCopyFor(namespace, field.getEditionForm(), editionProxy)); return formRenderer; } return null; }