DesignImporterHTMLParser.java
4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.cq.dam.indd.PageBuilder
* com.day.cq.dam.indd.PageComponent
* com.day.cq.wcm.api.Page
* org.apache.tika.io.CloseShieldInputStream
* org.ccil.cowan.tagsoup.Parser
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.wcm.designimporter.parser;
import com.day.cq.dam.indd.PageBuilder;
import com.day.cq.dam.indd.PageComponent;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.designimporter.DesignImportException;
import com.day.cq.wcm.designimporter.DesignImporterContext;
import com.day.cq.wcm.designimporter.api.TagHandlerProvider;
import com.day.cq.wcm.designimporter.parser.HTML5Schema;
import com.day.cq.wcm.designimporter.parser.HTMLContent;
import com.day.cq.wcm.designimporter.parser.HTMLContentHandler;
import com.day.cq.wcm.designimporter.parser.ModifiableHTMLContent;
import com.day.cq.wcm.designimporter.parser.ParseResult;
import com.day.cq.wcm.designimporter.util.StreamUtil;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.tika.io.CloseShieldInputStream;
import org.ccil.cowan.tagsoup.Parser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class DesignImporterHTMLParser {
protected DesignImporterContext designImporterContext;
private String canvasresourceType;
private HTMLContentHandler handler;
private Logger logger = LoggerFactory.getLogger(DesignImporterHTMLParser.class);
private TagHandlerProvider tagHandlerProvider;
private ParseResult parseResult;
@Deprecated
public HTMLContent getBodyHtmlContent() {
return this.parseResult.getBodyHtmlContent();
}
@Deprecated
public List<PageComponent> getComponents() {
return this.parseResult.getComponents();
}
@Deprecated
public HTMLContent getHeadHtmlContent() {
return this.parseResult.getHeadHtmlContent();
}
@Deprecated
public String getLanguage() {
return this.parseResult.getLanguage();
}
private void parse(InputStream stream, ContentHandler handler) throws IOException, SAXException {
if (!stream.markSupported()) {
stream = new BufferedInputStream(stream);
}
stream = new CloseShieldInputStream(stream);
InputSource source = new InputSource(stream);
source.setEncoding(StreamUtil.getEncoding(stream));
Parser parser = new Parser();
parser.setProperty("http://www.ccil.org/~cowan/tagsoup/properties/schema", (Object)new HTML5Schema());
parser.setFeature("http://www.ccil.org/~cowan/tagsoup/features/ignore-bogons", true);
parser.setContentHandler(handler);
parser.parse(source);
}
@Deprecated
public void parse(Page page, InputStream stream, PageBuilder pageBuilder) throws DesignImportException {
this.parse(stream, pageBuilder);
}
public ParseResult parse(InputStream stream, PageBuilder pageBuilder) throws DesignImportException {
block4 : {
this.handler = new HTMLContentHandler();
this.handler.setTagHandlerProvider(this.tagHandlerProvider);
this.handler.setDesignImporterContext(this.designImporterContext);
this.handler.setCanvasResourceType(this.canvasresourceType);
this.handler.setPageBuilder(pageBuilder);
try {
this.parse(stream, this.handler);
}
catch (IOException e) {
this.logger.error("An IO error occured while parsing the input HTML stream", (Throwable)e);
}
catch (SAXException e) {
if (!(e.getException() instanceof DesignImportException)) break block4;
throw (DesignImportException)e.getException();
}
}
List<PageComponent> generatedComponents = this.handler.getGeneratedComponents();
if (generatedComponents == null) {
generatedComponents = new ArrayList<PageComponent>();
}
this.parseResult = new ParseResult(generatedComponents, this.handler.getHeadHtmlContent(), this.handler.getBodyHtmlContent(), this.handler.getLanguage());
return this.parseResult;
}
public void setCanvasResourceType(String canvasResourceType) {
this.canvasresourceType = canvasResourceType;
}
public void setDesignImporterContext(DesignImporterContext designImporterContext) {
this.designImporterContext = designImporterContext;
}
public void setTagHandlerProvider(TagHandlerProvider tagHandlerProvider) {
this.tagHandlerProvider = tagHandlerProvider;
}
}