2012년 8월 9일 목요일

egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl 버그

public void afterPropertiesSet() throws FdlException {
        try {

            egovProperties = new ExtendedProperties();

            // 외부파일이 정의되었을때
            if (extFileName != null) {
                refreshPropertyFiles();
            }

            Iterator it = properties.entrySet().iterator();
            while (it.hasNext()) {

                Map.Entry entry = (Map.Entry) it.next();
                String key = (String) entry.getKey();
                String value = (String) entry.getValue();

                if (EgovPropertyService.LOGGER.isDebugEnabled()) {
                    EgovPropertyService.LOGGER.debug(messageSource.getMessage(
                        "debug.properties.property",
                        new String[] {key, value }, Locale.getDefault()));
                }

                if (key == null || key.equals("")) {
                    if (EgovPropertyService.LOGGER.isErrorEnabled())
                        EgovPropertyService.LOGGER.error(messageSource
                            .getMessage("error.properties.check.essential",
                                new String[] {}, Locale.getDefault()));
                    throw new FdlException(messageSource,
                        "error.properties.check.essential", null);
                }

                egovProperties.put(key, value);
            }

        } catch (Exception e) {
            if (e instanceof FdlException)
                throw (FdlException) e;
            else {
                if (EgovPropertyService.LOGGER.isErrorEnabled())
                    EgovPropertyService.LOGGER.error(messageSource.getMessage(
                        "error.properties.initialize.reason", new String[] {},
                        Locale.getDefault()));
                throw new FdlException(messageSource,
                    "error.properties.initialize", e);
            }
        }
    }

위의 코드에서

  egovProperties.put(key, value);

이 부분이 버그이다.
이 소스를 그대로 쓰면

public class Test {
   private EgovPropertyService propertiesService;

   public void showKeys() {
       Iterator keys = soapPropertiesService.getKeys();
       while(keys.hasNext()) {
         System.out.println(keys.next());
       }
   }
}


위와 같이 했을 경우 key값이 절대로 나오질 않는다.
ExtendedProperties 가 hashMap을 상속받아서
addProperties란 메소드를 쓰지 않으면  keys 들어가질 않는다.
put으로 HashTable에서 직접 key,value을 넣으니 기능을 잘돌아가지만
getKeys로 해서 가져올려고 할 경우엔 값이 나오질 않는 버그가 있다. ㅡㅡa

만들어 놓고 테스트도 안하고 배포 하는거 같다.

댓글 없음:

댓글 쓰기