From 04a7fa037ad47afc13410d7825a17c4925fdf733 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Sun, 4 Aug 2013 09:53:01 +0800 Subject: [PATCH] update pipeline --- .../main/java/us/codecraft/webmagic/model/OOSpider.java | 8 +++++--- .../java/us/codecraft/webmagic/model/ObjectPipeline.java | 7 +++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/model/OOSpider.java b/webmagic-core/src/main/java/us/codecraft/webmagic/model/OOSpider.java index e008bfe..900c9b4 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/model/OOSpider.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/model/OOSpider.java @@ -28,13 +28,15 @@ public class OOSpider extends Spider { this(ObjectPageProcessor.create(site, pageModels)); this.objectPipeline = new ObjectPipeline(); super.pipeline(objectPipeline); - for (Class pageModel : pageModels) { - this.objectPipeline.put(pageModel, pageModelPipeline); + if (pageModelPipeline!=null){ + for (Class pageModel : pageModels) { + this.objectPipeline.put(pageModel, pageModelPipeline); + } } } public static OOSpider create(Site site, Class... pageModels) { - return new OOSpider(site, new ConsolePageModelPipeline(), pageModels); + return new OOSpider(site, null, pageModels); } public static OOSpider create(Site site, PageModelPipeline pageModelPipeline, Class... pageModels) { diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/model/ObjectPipeline.java b/webmagic-core/src/main/java/us/codecraft/webmagic/model/ObjectPipeline.java index f590384..41296f5 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/model/ObjectPipeline.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/model/ObjectPipeline.java @@ -35,14 +35,13 @@ public class ObjectPipeline implements Pipeline { Object o = resultItems.get(classPageModelPipelineEntry.getKey().getCanonicalName()); if (o != null) { Annotation annotation = classPageModelPipelineEntry.getKey().getAnnotation(ExtractBy.class); - ExtractBy extractBy = (ExtractBy) annotation; - if (extractBy.multi()) { + if (annotation == null || !((ExtractBy) annotation).multi()) { + classPageModelPipelineEntry.getValue().process(o, task); + } else { List list = (List) o; for (Object o1 : list) { classPageModelPipelineEntry.getValue().process(o1, task); } - } else { - classPageModelPipelineEntry.getValue().process(o, task); } } }