소스 검색

fix #2249 check collection

Shinsuke Sugaya 5 년 전
부모
커밋
af6f119d7b
1개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 1
      src/main/java/org/codelibs/fess/crawler/transformer/FessTransformer.java

+ 9 - 1
src/main/java/org/codelibs/fess/crawler/transformer/FessTransformer.java

@@ -17,6 +17,7 @@ package org.codelibs.fess.crawler.transformer;
 
 
 import java.net.URLDecoder;
 import java.net.URLDecoder;
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
@@ -114,7 +115,14 @@ public interface FessTransformer {
         } else if (dataMap.containsKey(key)) {
         } else if (dataMap.containsKey(key)) {
             if (getFessConfig().isCrawlerDocumentAppendData()) {
             if (getFessConfig().isCrawlerDocumentAppendData()) {
                 final Object oldValue = dataMap.get(key);
                 final Object oldValue = dataMap.get(key);
-                final Object[] oldValues = oldValue instanceof Object[] ? (Object[]) oldValue : new Object[] { oldValue };
+                final Object[] oldValues;
+                if (oldValue instanceof Object[]) {
+                    oldValues = (Object[]) oldValue;
+                } else if (oldValue instanceof Collection<?>) {
+                    oldValues = ((Collection<?>) oldValue).toArray();
+                } else {
+                    oldValues = new Object[] { oldValue };
+                }
                 if (value.getClass().isArray()) {
                 if (value.getClass().isArray()) {
                     final Object[] newValues = (Object[]) value;
                     final Object[] newValues = (Object[]) value;
                     final Object[] values = Arrays.copyOf(oldValues, oldValues.length + newValues.length);
                     final Object[] values = Arrays.copyOf(oldValues, oldValues.length + newValues.length);