class ValidateFormDataActor {

    public void validate(final ValidateFormDataMessage message) throws ValidateFormException {
        try {
            IObject formFields = message.getForm();
            IObject clientData = message.getFormFromRequest();

            IObject resultObject = IOC.resolve(Keys.getOrAdd("info.smart_tools.smartactors.iobject.iobject.IObject"));

            Iterator<Map.Entry<IFieldName, Object>> fieldsIterator = formFields.iterator();
            Map.Entry<IFieldName, Object> entry = fieldsIterator.next();

            while (entry != null) {
                IFieldName key = entry.getKey();

                List<IObject> rules = validationRulesF.in((IObject) formFields.getValue(key));
                if (rules != null) {
                    for (IObject ruleObject : rules) {
                        if (!new Parser((String) ruleF.in(ruleObject), (String) clientData.getValue(key)).validate()) {
                            throw new ValidateFormException("Fields is not correct");
                        }
                    }
                }
                resultObject.setValue(key, clientData.getValue(key));

                if (!fieldsIterator.hasNext()) {
                    break;
                }
                entry = fieldsIterator.next();
            }
            message.setFormData(resultObject);
        } catch (Exception e) {
            throw new ValidateFormException(e);
        }
    }

    public  ValidateFormDataActor(final IObject params);

}