DMI:可疑方法调用 (FB.DMI_CALLING_NEXT_FROM_HASNEXT)-hasNext() 调用了 next()

Coverity报错:

CID 30382(1 的 1 数):DMI:可疑方法调用 (FB.DMI_CALLING_NEXT_FROM_HASNEXT)1. defect: org.apache.camel.component.jdbc.DefaultJdbcPrepareStatementStrategy$1.hasNext() 调用了 next()

原:

                  
                    @Override
                    public boolean hasNext() {
                        if (!done && !preFetched) {
                            next();
                            preFetched = true;
                        }
                        return !done;
                    }

                    @Override
                    public Object next() {
                        if (!preFetched) {
                            String key = parser.next();
                            if (key == null) {
                                done = true;
                                return null;
                            }
                            // the key is expected to exist, if not report so end user can see this
                            boolean contains = headerMap != null && headerMap.containsKey(key);
                            if (!contains) {
                                throw new RuntimeExchangeException("Cannot find key [" + key + "] in message body or headers to use when setting named parameter in query [" + query + "]", exchange);
                            }
                            next = headerMap.get(key);
                        }
                        preFetched = false;
                        return next;
                    }


改后:(将next()中的代码并入hasNext())

                    @Override
                    public boolean hasNext() {
                        if (!done && !preFetched) {
                            String key = parser.next();
                            if (key == null) {
                                done = true;
                            }
                            // the key is expected to exist, if not report so end user can see this
                            boolean contains = headerMap != null && headerMap.containsKey(key);
                            if (!contains) {
                                throw new RuntimeExchangeException("Cannot find key [" + key + "] in message body or headers to use when setting named parameter in query [" + query + "]", exchange);
                            }
                            next = headerMap.get(key);
                            preFetched = true;
                        }
                        return !done;
                    }

猜你喜欢

转载自blog.csdn.net/ydk888888/article/details/80283929
今日推荐