Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
bda144a3
Unverified
Commit
bda144a3
authored
May 18, 2018
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐛
#12448 修复 Sitemap
parent
d1532c4e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
94 deletions
+98
-94
src/main/java/org/b3log/solo/model/feed/atom/Feed.java
src/main/java/org/b3log/solo/model/feed/atom/Feed.java
+3
-40
src/main/java/org/b3log/solo/model/feed/rss/Channel.java
src/main/java/org/b3log/solo/model/feed/rss/Channel.java
+5
-42
src/main/java/org/b3log/solo/model/feed/rss/Item.java
src/main/java/org/b3log/solo/model/feed/rss/Item.java
+1
-1
src/main/java/org/b3log/solo/model/sitemap/URL.java
src/main/java/org/b3log/solo/model/sitemap/URL.java
+7
-8
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
+5
-3
src/main/java/org/b3log/solo/util/XMLs.java
src/main/java/org/b3log/solo/util/XMLs.java
+77
-0
No files found.
src/main/java/org/b3log/solo/model/feed/atom/Feed.java
View file @
bda144a3
...
...
@@ -17,21 +17,10 @@ package org.b3log.solo.model.feed.atom;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.solo.processor.FeedProcessor
;
import
org.w3c.dom.Document
;
import
org.xml.sax.InputSource
;
import
javax.xml.parsers.DocumentBuilder
;
import
javax.xml.parsers.DocumentBuilderFactory
;
import
javax.xml.transform.OutputKeys
;
import
javax.xml.transform.Transformer
;
import
javax.xml.transform.TransformerFactory
;
import
javax.xml.transform.dom.DOMSource
;
import
javax.xml.transform.stream.StreamResult
;
import
java.io.StringReader
;
import
java.io.StringWriter
;
import
org.b3log.solo.util.XMLs
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -181,32 +170,6 @@ public final class Feed {
*/
private
List
<
Entry
>
entries
=
new
ArrayList
<>();
/**
* Returns pretty print of the specified xml string.
*
* @param xml the specified xml string
* @return the pretty print of the specified xml string
* @throws Exception exception
*/
private
static
String
format
(
final
String
xml
)
{
try
{
final
DocumentBuilder
db
=
DocumentBuilderFactory
.
newInstance
().
newDocumentBuilder
();
final
Document
doc
=
db
.
parse
(
new
InputSource
(
new
StringReader
(
xml
)));
final
Transformer
transformer
=
TransformerFactory
.
newInstance
().
newTransformer
();
transformer
.
setOutputProperty
(
OutputKeys
.
INDENT
,
"yes"
);
transformer
.
setOutputProperty
(
"{http://xml.apache.org/xslt}indent-amount"
,
"2"
);
final
StreamResult
result
=
new
StreamResult
(
new
StringWriter
());
final
DOMSource
source
=
new
DOMSource
(
doc
);
transformer
.
transform
(
source
,
result
);
return
result
.
getWriter
().
toString
();
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"format pretty XML failed"
,
e
);
return
xml
;
}
}
/**
* Gets the id.
*
...
...
@@ -362,6 +325,6 @@ public final class Feed {
stringBuilder
.
append
(
END_FEED_ELEMENT
);
return
format
(
stringBuilder
.
toString
());
return
XMLs
.
format
(
stringBuilder
.
toString
());
}
}
src/main/java/org/b3log/solo/model/feed/rss/Channel.java
View file @
bda144a3
...
...
@@ -17,21 +17,10 @@ package org.b3log.solo.model.feed.rss;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.b3log.solo.processor.FeedProcessor
;
import
org.w3c.dom.Document
;
import
org.xml.sax.InputSource
;
import
javax.xml.parsers.DocumentBuilder
;
import
javax.xml.parsers.DocumentBuilderFactory
;
import
javax.xml.transform.OutputKeys
;
import
javax.xml.transform.Transformer
;
import
javax.xml.transform.TransformerFactory
;
import
javax.xml.transform.dom.DOMSource
;
import
javax.xml.transform.stream.StreamResult
;
import
java.io.StringReader
;
import
java.io.StringWriter
;
import
org.b3log.solo.util.XMLs
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -182,32 +171,6 @@ public final class Channel {
*/
private
List
<
Item
>
items
=
new
ArrayList
<>();
/**
* Returns pretty print of the specified xml string.
*
* @param xml the specified xml string
* @return the pretty print of the specified xml string
* @throws Exception exception
*/
private
static
String
format
(
final
String
xml
)
{
try
{
final
DocumentBuilder
db
=
DocumentBuilderFactory
.
newInstance
().
newDocumentBuilder
();
final
Document
doc
=
db
.
parse
(
new
InputSource
(
new
StringReader
(
xml
)));
final
Transformer
transformer
=
TransformerFactory
.
newInstance
().
newTransformer
();
transformer
.
setOutputProperty
(
OutputKeys
.
INDENT
,
"yes"
);
transformer
.
setOutputProperty
(
"{http://xml.apache.org/xslt}indent-amount"
,
"2"
);
final
StreamResult
result
=
new
StreamResult
(
new
StringWriter
());
final
DOMSource
source
=
new
DOMSource
(
doc
);
transformer
.
transform
(
source
,
result
);
return
result
.
getWriter
().
toString
();
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"format pretty XML failed"
,
e
);
return
xml
;
}
}
/**
* Gets the atom link.
*
...
...
@@ -364,7 +327,7 @@ public final class Channel {
stringBuilder
.
append
(
END_DESCRIPTION_ELEMENT
);
stringBuilder
.
append
(
START_GENERATOR_ELEMENT
);
stringBuilder
.
append
(
generator
);
stringBuilder
.
append
(
StringEscapeUtils
.
escapeXml
(
generator
)
);
stringBuilder
.
append
(
END_GENERATOR_ELEMENT
);
stringBuilder
.
append
(
START_LAST_BUILD_DATE_ELEMENT
);
...
...
@@ -372,7 +335,7 @@ public final class Channel {
stringBuilder
.
append
(
END_LAST_BUILD_DATE_ELEMENT
);
stringBuilder
.
append
(
START_LANGUAGE_ELEMENT
);
stringBuilder
.
append
(
language
);
stringBuilder
.
append
(
StringEscapeUtils
.
escapeXml
(
language
)
);
stringBuilder
.
append
(
END_LANGUAGE_ELEMENT
);
for
(
final
Item
item
:
items
)
{
...
...
@@ -381,6 +344,6 @@ public final class Channel {
stringBuilder
.
append
(
END
);
return
format
(
stringBuilder
.
toString
());
return
XMLs
.
format
(
stringBuilder
.
toString
());
}
}
src/main/java/org/b3log/solo/model/feed/rss/Item.java
View file @
bda144a3
...
...
@@ -261,7 +261,7 @@ public final class Item {
stringBuilder
.
append
(
END_DESCRIPTION_ELEMENT
);
stringBuilder
.
append
(
START_AUTHOR_ELEMENT
);
stringBuilder
.
append
(
author
);
stringBuilder
.
append
(
StringEscapeUtils
.
escapeXml
(
author
)
);
stringBuilder
.
append
(
END_AUTHOR_ELEMENT
);
stringBuilder
.
append
(
START_GUID_ELEMENT
);
...
...
src/main/java/org/b3log/solo/model/sitemap/URL.java
View file @
bda144a3
...
...
@@ -15,15 +15,14 @@
*/
package
org
.
b3log
.
solo
.
model
.
sitemap
;
import
org.apache.commons.lang.StringEscapeUtils
;
import
org.b3log.latke.util.Strings
;
/**
* Sitemap URL.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.
0.0, Sep 22, 2011
* @version 1.1.
1.0, May 18, 2018
* @since 0.3.1
*/
public
final
class
URL
{
...
...
@@ -70,7 +69,7 @@ public final class URL {
/**
* Gets the last modified.
*
*
* @return last modified
*/
public
String
getLastMod
()
{
...
...
@@ -79,7 +78,7 @@ public final class URL {
/**
* Sets the last modified with the specified last modified.
*
*
* @param lastMod the specified modified
*/
public
void
setLastMod
(
final
String
lastMod
)
{
...
...
@@ -88,7 +87,7 @@ public final class URL {
/**
* Gets the loc.
*
*
* @return loc
*/
public
String
getLoc
()
{
...
...
@@ -97,7 +96,7 @@ public final class URL {
/**
* Sets the loc with the specified loc.
*
*
* @param loc the specified loc
*/
public
void
setLoc
(
final
String
loc
)
{
...
...
@@ -111,7 +110,7 @@ public final class URL {
stringBuilder
.
append
(
START_URL_ELEMENT
);
stringBuilder
.
append
(
START_LOC_ELEMENT
);
stringBuilder
.
append
(
loc
);
stringBuilder
.
append
(
StringEscapeUtils
.
escapeXml
(
loc
)
);
stringBuilder
.
append
(
END_LOC_ELEMENT
);
if
(!
Strings
.
isEmptyOrNull
(
lastMod
))
{
...
...
src/main/java/org/b3log/solo/processor/SitemapProcessor.java
View file @
bda144a3
...
...
@@ -42,6 +42,7 @@ import org.b3log.solo.repository.PageRepository;
import
org.b3log.solo.repository.TagRepository
;
import
org.b3log.solo.repository.impl.ArticleRepositoryImpl
;
import
org.b3log.solo.service.PreferenceQueryService
;
import
org.b3log.solo.util.XMLs
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
...
...
@@ -54,7 +55,7 @@ import java.util.Date;
* Site map (sitemap) processor.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.
1.0, Mar 10
, 2018
* @version 1.0.
2.0, Mar 18
, 2018
* @since 0.3.1
*/
@RequestProcessor
...
...
@@ -115,9 +116,10 @@ public class SitemapProcessor {
addArchives
(
sitemap
);
LOGGER
.
log
(
Level
.
INFO
,
"Generating sitemap...."
);
final
String
content
=
sitemap
.
toString
();
String
content
=
sitemap
.
toString
();
content
=
XMLs
.
format
(
content
);
LOGGER
.
log
(
Level
.
INFO
,
"Generated sitemap"
);
LOGGER
.
info
(
content
);
renderer
.
setContent
(
content
);
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Get blog article feed error"
,
e
);
...
...
src/main/java/org/b3log/solo/util/XMLs.java
0 → 100644
View file @
bda144a3
/*
* Copyright (c) 2010-2018, b3log.org & hacpai.com
*
* 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
org
.
b3log
.
solo
.
util
;
import
org.b3log.latke.logging.Level
;
import
org.b3log.latke.logging.Logger
;
import
org.w3c.dom.Document
;
import
org.xml.sax.InputSource
;
import
javax.xml.parsers.DocumentBuilder
;
import
javax.xml.parsers.DocumentBuilderFactory
;
import
javax.xml.transform.OutputKeys
;
import
javax.xml.transform.Transformer
;
import
javax.xml.transform.TransformerFactory
;
import
javax.xml.transform.dom.DOMSource
;
import
javax.xml.transform.stream.StreamResult
;
import
java.io.StringReader
;
import
java.io.StringWriter
;
/**
* XML utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.6, May 18, 2018
* @since 2.9.1
*/
public
final
class
XMLs
{
/**
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
XMLs
.
class
);
/**
* Returns pretty print of the specified xml string.
*
* @param xml the specified xml string
* @return the pretty print of the specified xml string
*/
public
static
String
format
(
final
String
xml
)
{
try
{
final
DocumentBuilder
db
=
DocumentBuilderFactory
.
newInstance
().
newDocumentBuilder
();
final
Document
doc
=
db
.
parse
(
new
InputSource
(
new
StringReader
(
xml
)));
final
Transformer
transformer
=
TransformerFactory
.
newInstance
().
newTransformer
();
transformer
.
setOutputProperty
(
OutputKeys
.
INDENT
,
"yes"
);
transformer
.
setOutputProperty
(
"{http://xml.apache.org/xslt}indent-amount"
,
"2"
);
final
StreamResult
result
=
new
StreamResult
(
new
StringWriter
());
final
DOMSource
source
=
new
DOMSource
(
doc
);
transformer
.
transform
(
source
,
result
);
return
result
.
getWriter
().
toString
();
}
catch
(
final
Exception
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"format pretty XML failed"
,
e
);
return
xml
;
}
}
/**
* Private constructor.
*/
private
XMLs
()
{
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment