Ejemplo n.º 1
0
        public object MakeUnderlying(object[] propertyValues)
        {
            var outObject = _beanInstantiator.Instantiate();

            if (!_hasPrimitiveTypes)
            {
                for (var i = 0; i < _writeFieldsReflection.Length; i++)
                {
                    try {
                        _writeFieldsReflection[i].SetValue(outObject, propertyValues[i]);
                    }
                    catch (MemberAccessException e) {
                        Handle(e, _writeFieldsReflection[i].Name);
                    }
                }
            }
            else
            {
                for (var i = 0; i < _writeFieldsReflection.Length; i++)
                {
                    if (_primitiveType[i])
                    {
                        if (propertyValues[i] == null)
                        {
                            continue;
                        }
                    }

                    try {
                        _writeFieldsReflection[i].SetValue(outObject, propertyValues[i]);
                    }
                    catch (MemberAccessException e) {
                        Handle(e, _writeFieldsReflection[i].Name);
                    }
                }
            }

            return(outObject);
        }
Ejemplo n.º 2
0
        public Object MakeUnderlying(Object[] propertyValues)
        {
            Object outObject = _beanInstantiator.Instantiate();

            if (_writeMethodsFastClass != null)
            {
                if (!_hasPrimitiveTypes)
                {
                    var parameters = new Object[1];
                    for (int i = 0; i < _writeMethodsFastClass.Length; i++)
                    {
                        parameters[0] = propertyValues[i];
                        try
                        {
                            _writeMethodsFastClass[i].Invoke(outObject, parameters);
                        }
                        catch (Exception e)
                        {
                            HandleAny(e, _writeMethodsFastClass[i].Name);
                        }
                    }
                }
                else
                {
                    Object[] parameters = new Object[1];
                    for (int i = 0; i < _writeMethodsFastClass.Length; i++)
                    {
                        if (_primitiveType[i])
                        {
                            if (propertyValues[i] == null)
                            {
                                continue;
                            }
                        }
                        parameters[0] = propertyValues[i];
                        try
                        {
                            _writeMethodsFastClass[i].Invoke(outObject, parameters);
                        }
                        catch (Exception e)
                        {
                            HandleAny(e, _writeMethodsFastClass[i].Name);
                        }
                    }
                }
            }
            else
            {
                if (!_hasPrimitiveTypes)
                {
                    Object[] parameters = new Object[1];
                    for (int i = 0; i < _writeMethodsReflection.Length; i++)
                    {
                        parameters[0] = propertyValues[i];
                        try
                        {
                            _writeMethodsReflection[i].Invoke(outObject, parameters);
                        }
                        catch (MemberAccessException e)
                        {
                            Handle(e, _writeMethodsReflection[i].Name);
                        }
                        catch (Exception e)
                        {
                            String message = "Unexpected exception encountered invoking setter-method '" + _writeMethodsReflection[i] + "' on class '" +
                                             _beanEventType.UnderlyingType.Name + "' : " + e.InnerException.Message;
                            Log.Error(message, e);
                        }
                    }
                }
                else
                {
                    Object[] parameters = new Object[1];
                    for (int i = 0; i < _writeMethodsReflection.Length; i++)
                    {
                        if (_primitiveType[i])
                        {
                            if (propertyValues[i] == null)
                            {
                                continue;
                            }
                        }
                        parameters[0] = propertyValues[i];
                        try
                        {
                            _writeMethodsReflection[i].Invoke(outObject, parameters);
                        }
                        catch (MemberAccessException e)
                        {
                            Handle(e, _writeMethodsReflection[i].Name);
                        }
                        catch (Exception e)
                        {
                            HandleAny(e, _writeMethodsReflection[i].Name);
                        }
                    }
                }
            }

            return(outObject);
        }
Ejemplo n.º 3
0
        public object MakeUnderlying(object[] propertyValues)
        {
            var outObject = beanInstantiator.Instantiate();

            if (!hasPrimitiveTypes) {
                var parameters = new object[1];
                for (var i = 0; i < writeMembersReflection.Length; i++) {
                    parameters[0] = propertyValues[i];
                    try {
                        var writeMember = writeMembersReflection[i];
                        if (writeMember is MethodInfo writeMethod) {
                            writeMethod.Invoke(outObject, parameters);
                        }
                        else if (writeMember is PropertyInfo writeProperty) {
                            writeProperty.SetValue(outObject, parameters[0]);
                        }
                        else {
                            throw new IllegalStateException("writeMember of invalid type");
                        }
                    }
                    catch (MemberAccessException e) {
                        Handle(e, writeMembersReflection[i].Name);
                    }
                    catch (Exception e) {
                        var message = "Unexpected exception encountered invoking setter-method '" +
                                      writeMembersReflection[i] +
                                      "' on class '" +
                                      beanEventType.UnderlyingType.Name +
                                      "' : " +
                                      e.Message;
                        Log.Error(message, e);
                    }
                }
            }
            else {
                var parameters = new object[1];
                for (var i = 0; i < writeMembersReflection.Length; i++) {
                    if (primitiveType[i] && propertyValues[i] == null) {
                        continue;
                    }

                    parameters[0] = propertyValues[i];
                    try {
                        var writeMember = writeMembersReflection[i];
                        if (writeMember is MethodInfo writeMethod) {
                            writeMethod.Invoke(outObject, parameters);
                        }
                        else if (writeMember is PropertyInfo writeProperty) {
                            writeProperty.SetValue(outObject, parameters[0]);
                        }
                        else {
                            throw new IllegalStateException("invalid member info");
                        }
                    }
                    catch (MemberAccessException e) {
                        Handle(e, writeMembersReflection[i].Name);
                    }
                    catch (Exception e) {
                        HandleAny(e, writeMembersReflection[i].Name);
                    }
                }
            }

            return outObject;
        }