Package com.alibaba.rocketmq.remoting

Examples of com.alibaba.rocketmq.remoting.CommandCustomHeader


        cmd.setRemark(remark);
        setCmdVersion(cmd);

        if (classHeader != null) {
            try {
                CommandCustomHeader objectHeader = classHeader.newInstance();
                cmd.customHeader = objectHeader;
            }
            catch (InstantiationException e) {
                return null;
            }
View Full Code Here



    public CommandCustomHeader decodeCommandCustomHeader(Class<? extends CommandCustomHeader> classHeader)
            throws RemotingCommandException {
        if (this.extFields != null) {
            CommandCustomHeader objectHeader;
            try {
                objectHeader = classHeader.newInstance();
            }
            catch (InstantiationException e) {
                return null;
            }
            catch (IllegalAccessException e) {
                return null;
            }

            // 检查返回对象是否有效
            Field[] fields = objectHeader.getClass().getDeclaredFields();
            for (Field field : fields) {
                if (!Modifier.isStatic(field.getModifiers())) {
                    String fieldName = field.getName();
                    if (!fieldName.startsWith("this")) {
                        try {
                            String value = this.extFields.get(fieldName);
                            if (null == value) {
                                Annotation annotation = field.getAnnotation(CFNotNull.class);
                                if (annotation != null) {
                                    throw new RemotingCommandException("the custom field <" + fieldName
                                            + "> is null");
                                }

                                continue;
                            }

                            field.setAccessible(true);
                            String type = field.getType().getCanonicalName();
                            Object valueParsed = null;

                            if (type.equals(StringName)) {
                                valueParsed = value;
                            }
                            else if (type.equals(IntegerName1) || type.equals(IntegerName2)) {
                                valueParsed = Integer.parseInt(value);
                            }
                            else if (type.equals(LongName1) || type.equals(LongName2)) {
                                valueParsed = Long.parseLong(value);
                            }
                            else if (type.equals(BooleanName1) || type.equals(BooleanName2)) {
                                valueParsed = Boolean.parseBoolean(value);
                            }
                            else if (type.equals(DoubleName1) || type.equals(DoubleName2)) {
                                valueParsed = Double.parseDouble(value);
                            }
                            else {
                                throw new RemotingCommandException("the custom field <" + fieldName
                                        + "> type is not supported");
                            }

                            field.set(objectHeader, valueParsed);

                        }
                        catch (Throwable e) {
                        }
                    }
                }
            }

            objectHeader.checkFields();

            return objectHeader;
        }

        return null;
View Full Code Here

        cmd.setRemark(remark);
        setCmdVersion(cmd);

        if (classHeader != null) {
            try {
                CommandCustomHeader objectHeader = classHeader.newInstance();
                cmd.customHeader = objectHeader;
            }
            catch (InstantiationException e) {
                return null;
            }
View Full Code Here


    public CommandCustomHeader decodeCommandCustomHeader(Class<? extends CommandCustomHeader> classHeader)
            throws RemotingCommandException {
        if (this.extFields != null) {
            CommandCustomHeader objectHeader;
            try {
                objectHeader = classHeader.newInstance();
            }
            catch (InstantiationException e) {
                return null;
            }
            catch (IllegalAccessException e) {
                return null;
            }

            Iterator<Entry<String, String>> it = this.extFields.entrySet().iterator();
            while (it.hasNext()) {
                Entry<String, String> entry = it.next();
                String name = entry.getKey();
                String value = entry.getValue();

                try {
                    Field field = objectHeader.getClass().getDeclaredField(name);
                    field.setAccessible(true);
                    String type = field.getType().getSimpleName();
                    Object valueParsed = null;

                    if (type.equals("String")) {
                        valueParsed = value;
                    }
                    else if (type.equals("Integer")) {
                        valueParsed = Integer.parseInt(value);
                    }
                    else if (type.equals("Long")) {
                        valueParsed = Long.parseLong(value);
                    }
                    else if (type.equals("Boolean")) {
                        valueParsed = Boolean.parseBoolean(value);
                    }
                    else if (type.equals("Double")) {
                        valueParsed = Double.parseDouble(value);
                    }
                    else if (type.equals("int")) {
                        valueParsed = Integer.parseInt(value);
                    }
                    else if (type.equals("long")) {
                        valueParsed = Long.parseLong(value);
                    }
                    else if (type.equals("boolean")) {
                        valueParsed = Boolean.parseBoolean(value);
                    }
                    else if (type.equals("double")) {
                        valueParsed = Double.parseDouble(value);
                    }

                    field.set(objectHeader, valueParsed);
                }
                catch (SecurityException e) {
                }
                catch (NoSuchFieldException e) {
                }
                catch (IllegalArgumentException e) {
                }
                catch (IllegalAccessException e) {
                }
            }

            // 检查返回对象是否有效
            Field[] fields = objectHeader.getClass().getDeclaredFields();
            for (Field field : fields) {
                if (!Modifier.isStatic(field.getModifiers())) {
                    String name = field.getName();
                    if (!name.startsWith("this")) {
                        Object value = null;
                        try {
                            field.setAccessible(true);
                            value = field.get(objectHeader);
                        }
                        catch (IllegalArgumentException e) {
                        }
                        catch (IllegalAccessException e) {
                        }

                        // 空值检查
                        if (null == value) {
                            Annotation annotation = field.getAnnotation(CFNotNull.class);
                            if (annotation != null) {
                                throw new RemotingCommandException("the custom field <" + name + "> is null");
                            }
                        }
                    }
                }
            }

            objectHeader.checkFields();

            return objectHeader;
        }

        return null;
View Full Code Here

    }


    @Override
    public void doBeforeRequest(String remoteAddr, RemotingCommand request) {
        CommandCustomHeader header = request.readCustomHeader();
        try {
            // sort property
            SortedMap<String, String> map = new TreeMap<String, String>();
            map.put(AccessKey, sessionCredentials.getAccessKey());

            // add header properties
            if (null != header) {
                Field[] fields = fieldCache.get(header.getClass());
                if (null == fields) {
                    fields = header.getClass().getDeclaredFields();
                    for (Field field : fields) {
                        field.setAccessible(true);
                    }
                    Field[] tmp = fieldCache.putIfAbsent(header.getClass(), fields);
                    if (null != tmp) {
                        fields = tmp;
                    }
                }
View Full Code Here

        cmd.setRemark(remark);
        setCmdVersion(cmd);

        if (classHeader != null) {
            try {
                CommandCustomHeader objectHeader = classHeader.newInstance();
                cmd.customHeader = objectHeader;
            }
            catch (InstantiationException e) {
                return null;
            }
View Full Code Here


    public CommandCustomHeader decodeCommandCustomHeader(Class<? extends CommandCustomHeader> classHeader)
            throws RemotingCommandException {
        if (this.extFields != null) {
            CommandCustomHeader objectHeader;
            try {
                objectHeader = classHeader.newInstance();
            }
            catch (InstantiationException e) {
                return null;
            }
            catch (IllegalAccessException e) {
                return null;
            }

            Iterator<Entry<String, String>> it = this.extFields.entrySet().iterator();
            while (it.hasNext()) {
                Entry<String, String> entry = it.next();
                String name = entry.getKey();
                String value = entry.getValue();

                try {
                    Field field = objectHeader.getClass().getDeclaredField(name);
                    field.setAccessible(true);
                    String type = field.getType().getSimpleName();
                    Object valueParsed = null;

                    if (type.equals("String")) {
                        valueParsed = value;
                    }
                    else if (type.equals("Integer")) {
                        valueParsed = Integer.parseInt(value);
                    }
                    else if (type.equals("Long")) {
                        valueParsed = Long.parseLong(value);
                    }
                    else if (type.equals("Boolean")) {
                        valueParsed = Boolean.parseBoolean(value);
                    }
                    else if (type.equals("Double")) {
                        valueParsed = Double.parseDouble(value);
                    }
                    else if (type.equals("int")) {
                        valueParsed = Integer.parseInt(value);
                    }
                    else if (type.equals("long")) {
                        valueParsed = Long.parseLong(value);
                    }
                    else if (type.equals("boolean")) {
                        valueParsed = Boolean.parseBoolean(value);
                    }
                    else if (type.equals("double")) {
                        valueParsed = Double.parseDouble(value);
                    }

                    field.set(objectHeader, valueParsed);
                }
                catch (Throwable e) {
                }
            }

            // 检查返回对象是否有效
            Field[] fields = objectHeader.getClass().getDeclaredFields();
            for (Field field : fields) {
                if (!Modifier.isStatic(field.getModifiers())) {
                    String name = field.getName();
                    if (!name.startsWith("this")) {
                        Object value = null;
                        try {
                            field.setAccessible(true);
                            value = field.get(objectHeader);
                        }
                        catch (IllegalArgumentException e) {
                        }
                        catch (IllegalAccessException e) {
                        }

                        // 空值检查
                        if (null == value) {
                            Annotation annotation = field.getAnnotation(CFNotNull.class);
                            if (annotation != null) {
                                throw new RemotingCommandException("the custom field <" + name + "> is null");
                            }
                        }
                    }
                }
            }

            objectHeader.checkFields();

            return objectHeader;
        }

        return null;
View Full Code Here

TOP

Related Classes of com.alibaba.rocketmq.remoting.CommandCustomHeader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.