-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContent.java
More file actions
132 lines (113 loc) · 3.69 KB
/
Content.java
File metadata and controls
132 lines (113 loc) · 3.69 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
126
127
128
129
130
131
132
/* Copyright (c) 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.gdata.data;
import com.google.gdata.util.common.xml.XmlWriter;
import com.google.gdata.util.ParseException;
import com.google.gdata.util.XmlParser;
import org.xml.sax.Attributes;
import java.io.IOException;
/**
* Abstract base class for entry content.
*
*
*/
public abstract class Content implements IContent {
/**
* Returns this content's type. See {@link IContent.Type} for the set of
* expected values.
*/
public abstract int getType();
/** Returns the human language that this content is written in. */
public abstract String getLang();
/**
* Generates XML in the Atom format.
*
* @param w
* output writer
* @param extProfile
* extension profile for nested extensions.
*
* @throws IOException
*/
public abstract void generateAtom(XmlWriter w, ExtensionProfile extProfile)
throws IOException;
/**
* Generates XML in the RSS format.
*
* @param w
* output writer
* @param extProfile
* extension profile for nested extensions.
*
* @throws IOException
*/
public abstract void generateRss(XmlWriter w, ExtensionProfile extProfile)
throws IOException;
/**
* Parses XML in the Atom format.
*
* @param extProfile
* ExtensionProfile used for nested content.
* @param attrs
* XML attributes of the Content node.
* Used to determine the type of this node.
*
* @return a child handler
*
* @throws ParseException
* @throws IOException
*/
public static ChildHandlerInfo getChildHandler(ExtensionProfile extProfile,
Attributes attrs) throws ParseException, IOException {
String type = attrs.getValue("", "type");
ChildHandlerInfo childHandlerInfo = new ChildHandlerInfo();
String src = attrs.getValue("", "src");
if (src == null) {
// In-line content
if (type == null ||
type.equals("text") ||
type.equals("text/plain") ||
type.equals("html") ||
type.equals("text/html") ||
type.equals("xhtml")) {
TextContent tc = new TextContent();
TextConstruct.ChildHandlerInfo chi =
TextConstruct.getChildHandler(attrs);
tc.setContent(chi.textConstruct);
childHandlerInfo.handler = chi.handler;
childHandlerInfo.content = tc;
} else {
OtherContent oc = new OtherContent();
childHandlerInfo.handler = oc.new AtomHandler(extProfile, attrs);
childHandlerInfo.content = oc;
}
} else {
OutOfLineContent oolc = new OutOfLineContent();
childHandlerInfo.handler = oolc.new AtomHandler();
childHandlerInfo.content = oolc;
}
return childHandlerInfo;
}
/**
* Return type for
* {@link Content#getChildHandler(ExtensionProfile, Attributes)} contains an
* element handler and a content element. This is mainly because Content
* is not actually an ExtensionPoint so things are handled manually.
*/
public static class ChildHandlerInfo {
public XmlParser.ElementHandler handler;
public Content content;
}
}