Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
runcon
Plantuml Server
Commits
d7192bf8
Commit
d7192bf8
authored
Oct 31, 2013
by
maximesinclair
Browse files
[TASK] Old URL pattern is no more supported
Related code cleaned
parent
24da19bf
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java
View file @
d7192bf8
...
...
@@ -24,7 +24,6 @@
package
net.sourceforge.plantuml.servlet
;
import
java.io.IOException
;
import
java.net.URL
;
import
java.net.URLDecoder
;
import
java.util.StringTokenizer
;
import
java.util.regex.Matcher
;
...
...
@@ -43,11 +42,6 @@ import net.sourceforge.plantuml.StringUtils;
import
net.sourceforge.plantuml.code.Transcoder
;
import
net.sourceforge.plantuml.code.TranscoderUtil
;
import
net.sourceforge.plantuml.api.PlantumlUtils
;
import
HTTPClient.CookieModule
;
import
HTTPClient.HTTPConnection
;
import
HTTPClient.HTTPResponse
;
import
HTTPClient.ModuleException
;
import
HTTPClient.ParseException
;
/*
* Original idea from Achim Abeling for Confluence macro
...
...
@@ -68,42 +62,15 @@ public class PlantUmlServlet extends HttpServlet {
private
static
final
Pattern
encodedPattern
=
Pattern
.
compile
(
"^[a-zA-Z0-9\\-\\_]+$"
);
// Format of a compressed
// diagram
private
static
final
Pattern
startumlPattern
=
Pattern
.
compile
(
"/\\w+/start/(.*)"
);
private
static
final
Pattern
proxyPattern
=
Pattern
.
compile
(
"/\\w+/proxy/((\\d+)/)?((\\w+)/)?(http://.*)"
);
private
static
final
Pattern
oldStartumlPattern
=
Pattern
.
compile
(
"/\\w+/uml/startuml/(.*)"
);
private
static
final
Pattern
oldImagePattern
=
Pattern
.
compile
(
"/\\w+/uml/image/(.*)"
);
private
static
final
Pattern
oldProxyPattern
=
Pattern
.
compile
(
"/\\w+/uml/proxy/((\\d+)/)?((\\w+)/)?(http://.*)"
);
@Override
public
void
doGet
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
ServletException
{
final
String
uri
=
request
.
getRequestURI
();
Matcher
startumlMatcher
=
startumlPattern
.
matcher
(
uri
);
Matcher
proxyMatcher
=
proxyPattern
.
matcher
(
uri
);
Matcher
oldStartumlMatcher
=
oldStartumlPattern
.
matcher
(
uri
);
Matcher
oldImageMatcher
=
oldImagePattern
.
matcher
(
uri
);
Matcher
oldProxyMatcher
=
oldProxyPattern
.
matcher
(
uri
);
if
(
startumlMatcher
.
matches
())
{
String
source
=
startumlMatcher
.
group
(
1
);
handleImage
(
response
,
source
,
uri
);
}
else
if
(
proxyMatcher
.
matches
())
{
String
num
=
proxyMatcher
.
group
(
2
);
String
format
=
proxyMatcher
.
group
(
4
);
String
source
=
proxyMatcher
.
group
(
5
);
handleImageProxy
(
response
,
num
,
source
,
format
,
uri
);
}
else
if
(
oldStartumlMatcher
.
matches
())
{
System
.
out
.
println
(
"PlantUML WARNING This URL syntax is deprecated, please delete the '/uml/' part."
);
String
source
=
oldStartumlMatcher
.
group
(
1
);
handleImage
(
response
,
source
,
uri
);
}
else
if
(
oldImageMatcher
.
matches
())
{
System
.
out
.
println
(
"PlantUML WARNING This URL syntax is deprecated, please delete the '/uml/' part."
);
String
source
=
oldImageMatcher
.
group
(
1
);
handleImageDecompress
(
response
,
source
,
uri
);
}
else
if
(
oldProxyMatcher
.
matches
())
{
System
.
out
.
println
(
"PlantUML WARNING This URL syntax is deprecated, please delete the '/uml/' part."
);
String
num
=
oldProxyMatcher
.
group
(
2
);
String
format
=
oldProxyMatcher
.
group
(
4
);
String
source
=
oldProxyMatcher
.
group
(
5
);
handleImageProxy
(
response
,
num
,
source
,
format
,
uri
);
}
else
{
doPost
(
request
,
response
);
}
...
...
@@ -171,34 +138,6 @@ public class PlantUmlServlet extends HttpServlet {
}
private
void
handleImageDecompress
(
HttpServletResponse
response
,
String
source
,
String
uri
)
throws
IOException
{
source
=
URLDecoder
.
decode
(
source
,
"UTF-8"
);
Transcoder
transcoder
=
getTranscoder
();
String
text2
=
transcoder
.
decode
(
source
);
sendImage
(
response
,
text2
,
uri
);
}
private
void
handleImageProxy
(
HttpServletResponse
response
,
String
num
,
String
source
,
String
format
,
String
uri
)
throws
IOException
{
SourceStringReader
reader
=
new
SourceStringReader
(
getContent
(
source
));
int
n
=
num
==
null
?
0
:
Integer
.
parseInt
(
num
);
reader
.
generateImage
(
response
.
getOutputStream
(),
n
,
getFormat
(
format
));
}
private
FileFormatOption
getFormat
(
String
f
)
{
if
(
f
==
null
)
{
return
new
FileFormatOption
(
FileFormat
.
PNG
);
}
if
(
f
.
equals
(
"svg"
))
{
return
new
FileFormatOption
(
FileFormat
.
SVG
);
}
if
(
f
.
equals
(
"txt"
))
{
return
new
FileFormatOption
(
FileFormat
.
ATXT
);
}
return
new
FileFormatOption
(
FileFormat
.
PNG
);
}
private
void
sendImage
(
HttpServletResponse
response
,
String
text
,
String
uri
)
throws
IOException
{
final
String
uml
;
if
(
text
.
startsWith
(
"@startuml"
))
{
...
...
@@ -228,25 +167,4 @@ public class PlantUmlServlet extends HttpServlet {
reader
.
generateImage
(
response
.
getOutputStream
(),
new
FileFormatOption
(
FileFormat
.
PNG
));
}
private
String
getContent
(
String
adress
)
throws
IOException
{
// HTTPConnection.setProxyServer("proxy", 8080);
CookieModule
.
setCookiePolicyHandler
(
null
);
final
Pattern
p
=
Pattern
.
compile
(
"http://[^/]+(/?.*)"
);
final
Matcher
m
=
p
.
matcher
(
adress
);
if
(
m
.
find
()
==
false
)
{
throw
new
IOException
(
adress
);
}
final
URL
url
=
new
URL
(
adress
);
final
HTTPConnection
httpConnection
=
new
HTTPConnection
(
url
);
try
{
final
HTTPResponse
resp
=
httpConnection
.
Get
(
m
.
group
(
1
));
return
resp
.
getText
();
}
catch
(
ModuleException
e
)
{
throw
new
IOException
(
e
.
toString
());
}
catch
(
ParseException
e
)
{
throw
new
IOException
(
e
.
toString
());
}
}
}
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