All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zkoss.bind.impl.AccessInfo Maven / Gradle / Ivy

There is a newer version: 10.0.0-jakarta
Show newest version
/* AccessInfo.java

	Purpose:
		
	Description:
		
	History:
		Jul 28, 2011 5:17:48 PM, Created by henrichen

Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/

package org.zkoss.bind.impl;

import java.io.Serializable;

import org.zkoss.bind.BindContext;
import org.zkoss.bind.Binder;
import org.zkoss.bind.sys.BindEvaluatorX;
import org.zkoss.bind.sys.Binding;
import org.zkoss.bind.sys.ConditionType;
import org.zkoss.lang.Strings;
import org.zkoss.xel.ExpressionX;

/**
 * Represent an load/save binding expression 
 * 

e.g. * "load = property (before|after) command" * "save = property (before|after) command" *

* @author henrichen * @since 6.0.0 */ public class AccessInfo implements Serializable { private static final long serialVersionUID = 1463169907348730644L; final String commandName; //command name final ExpressionX property; //property expression final ConditionType type; //the condition type, prompt, before command or after command public AccessInfo(ExpressionX property, ConditionType type, String command) { this.property = property; this.type = type; this.commandName = command; } public String getCommandName() { return this.commandName; } public ConditionType getConditionType() { return this.type; } public ExpressionX getProperty() { return this.property; } public static AccessInfo create(Binding binding, String accessExpr, Class expectedType, ConditionType type, String command, boolean ignoreTracker) { final Binder binder = binding.getBinder(); if (ConditionType.PROMPT != type && Strings.isEmpty(command)) { throw new IllegalArgumentException(MiscUtil.formatLocationMessage( "condition type is " + type + ", but command is null", binding.getComponent())); } final BindEvaluatorX eval = binder.getEvaluatorX(); //ZK-1066 Incorrect form value if inner binding waiting a command //ignore when non-prompt and binding marked ignored final BindContext ctx = BindContextUtil.newBindContext(binder, binding, false, null, binding.getComponent(), null); if (ConditionType.PROMPT != type || ignoreTracker) { ctx.setAttribute(BinderImpl.IGNORE_TRACKER, Boolean.TRUE); } final ExpressionX prop = eval.parseExpressionX(ctx, accessExpr, expectedType); return new AccessInfo(prop, type, command); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy