@SuppressWarnings({ "rawtypes", "unchecked" })
	public void assign(RuleProxyField target, Object value, RuleContext ruleContext, boolean dummy)
    {
    	ProxyField target1 = target.getProxyField();
        Class<?> clazz = target1.getPropertyMetadata().getSetMethod().getParameterTypes()[0];
        if (value instanceof List<?>)
        {
			List<ProxyField> sourceList = (List<ProxyField>)value;
            RuleProxyField rpf = target;
            for (ProxyField pf: sourceList)
            {
                Object listValue = pf.getValue();
                if (rpf.isDifferent(listValue))
                {
                    if (isExcluded(target1,String.valueOf(listValue)))
                    {
                        String message = m_messageSourceAccessor.getMessage("nz.co.senanque.rules.excluded.value", new Object[]{ listValue, target1.getFieldName()});
                        throw new InferenceException(message);
                    }
                    if (listValue != null && !clazz.isAssignableFrom(listValue.getClass()))
                    {
                        listValue = ConvertUtils.convertToComparable((Class<Comparable>)clazz, listValue,m_messageSourceAccessor);
                    }
                    addAssignedField(target1);
                    target.assign(listValue);
                    addToAgenda(rpf);
                }
                ruleContext.addAssign(rpf);
            }
            return;
        }
        if (value != null && !clazz.isAssignableFrom(value.getClass()))
        {
            value = ConvertUtils.convertToComparable((Class<Comparable>)clazz, value,m_messageSourceAccessor);
        }
        RuleProxyField rpf = getRuleProxyField(target1);
        if (rpf.isDifferent(value))
        {
            if (isExcluded(target1,String.valueOf(value)))
            {
                String message = m_messageSourceAccessor.getMessage("nz.co.senanque.rules.excluded.value", new Object[]{ value, target1.getFieldName()});
                throw new InferenceException(message);
            }
            addAssignedField(target1);
            removeUnknownField(target1);
            target.assign(value);
            addToAgenda(rpf);
        }
        ruleContext.addAssign(rpf);
    }
@ SuppressWarnings ( { "rawtypes" , "unchecked" } ) public void assign ( RuleProxyField target , Object value , RuleContext ruleContext , boolean dummy ) { ProxyField target1 = target . getProxyField ( ) ; Class < ? > clazz = target1 . getPropertyMetadata ( ) . getSetMethod ( ) . getParameterTypes ( ) [ 0 ] ; if ( value instanceof List < ? > ) { List < ProxyField > sourceList = ( List < ProxyField > ) value ; RuleProxyField rpf = target ; for ( ProxyField pf : sourceList ) { Object listValue = pf . getValue ( ) ; if ( rpf . isDifferent ( listValue ) ) { if ( isExcluded ( target1 , String . valueOf ( listValue ) ) ) { String message = m_messageSourceAccessor . getMessage ( "nz.co.senanque.rules.excluded.value" , new Object [ ] { listValue , target1 . getFieldName ( ) } ) ; throw new InferenceException ( message ) ; } if ( listValue != null && ! clazz . isAssignableFrom ( listValue . getClass ( ) ) ) { listValue = ConvertUtils . convertToComparable ( ( Class < Comparable > ) clazz , listValue , m_messageSourceAccessor ) ; } addAssignedField ( target1 ) ; target . assign ( listValue ) ; addToAgenda ( rpf ) ; } ruleContext . addAssign ( rpf ) ; } return ; } if ( value != null && ! clazz . isAssignableFrom ( value . getClass ( ) ) ) { value = ConvertUtils . convertToComparable ( ( Class < Comparable > ) clazz , value , m_messageSourceAccessor ) ; } RuleProxyField rpf = getRuleProxyField ( target1 ) ; if ( rpf . isDifferent ( value ) ) { if ( isExcluded ( target1 , String . valueOf ( value ) ) ) { String message = m_messageSourceAccessor . getMessage ( "nz.co.senanque.rules.excluded.value" , new Object [ ] { value , target1 . getFieldName ( ) } ) ; throw new InferenceException ( message ) ; } addAssignedField ( target1 ) ; removeUnknownField ( target1 ) ; target . assign ( value ) ; addToAgenda ( rpf ) ; } ruleContext . addAssign ( rpf ) ; }
/* (non-Javadoc)
@see nz.co.senanque.rules.RuleSession#assign(nz.co.senanque.validationengine.ProxyField, java.lang.Object, nz.co.senanque.rules.RuleContext, boolean)