Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
2e952539
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2e952539
编写于
8月 29, 2012
作者:
C
chegar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7189567: java net obselete protocol
Reviewed-by: alanb, ahgross
上级
51ea0f8c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
0 addition
and
463 deletion
+0
-463
make/sun/net/FILES_java.gmk
make/sun/net/FILES_java.gmk
+0
-2
src/share/classes/sun/net/www/protocol/gopher/GopherClient.java
...are/classes/sun/net/www/protocol/gopher/GopherClient.java
+0
-357
src/share/classes/sun/net/www/protocol/gopher/Handler.java
src/share/classes/sun/net/www/protocol/gopher/Handler.java
+0
-100
test/java/net/URL/Test.java
test/java/net/URL/Test.java
+0
-4
未找到文件。
make/sun/net/FILES_java.gmk
浏览文件 @
2e952539
...
...
@@ -128,8 +128,6 @@ FILES_java = \
sun/net/www/content/audio/x_wav.java \
sun/net/www/protocol/ftp/Handler.java \
sun/net/www/protocol/ftp/FtpURLConnection.java \
sun/net/www/protocol/gopher/GopherClient.java \
sun/net/www/protocol/gopher/Handler.java \
sun/net/www/protocol/mailto/Handler.java \
sun/net/www/protocol/mailto/MailToURLConnection.java \
sun/net/idn/Punycode.java \
...
...
src/share/classes/sun/net/www/protocol/gopher/GopherClient.java
已删除
100644 → 0
浏览文件 @
51ea0f8c
/*
* Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
sun.net.www.protocol.gopher
;
import
java.io.*
;
import
java.util.*
;
import
java.net.*
;
import
sun.net.www.*
;
import
sun.net.NetworkClient
;
import
java.net.URL
;
import
java.net.URLStreamHandler
;
import
sun.security.action.GetBooleanAction
;
/** Class to maintain the state of a gopher fetch and handle the protocol */
public
class
GopherClient
extends
NetworkClient
implements
Runnable
{
/* The following three data members are left in for binary
* backwards-compatibility. Unfortunately, HotJava sets them directly
* when it wants to change the settings. The new design has us not
* cache these, so this is unnecessary, but eliminating the data members
* would break HJB 1.1 under JDK 1.2.
*
* These data members are not used, and their values are meaningless.
* REMIND: Take them out for JDK 2.0!
*/
/**
* @deprecated
*/
@Deprecated
public
static
boolean
useGopherProxy
;
/**
* @deprecated
*/
@Deprecated
public
static
String
gopherProxyHost
;
/**
* @deprecated
*/
@Deprecated
public
static
int
gopherProxyPort
;
static
{
useGopherProxy
=
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetBooleanAction
(
"gopherProxySet"
))
.
booleanValue
();
gopherProxyHost
=
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetPropertyAction
(
"gopherProxyHost"
));
gopherProxyPort
=
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetIntegerAction
(
"gopherProxyPort"
,
80
))
.
intValue
();
}
PipedOutputStream
os
;
URL
u
;
int
gtype
;
String
gkey
;
sun
.
net
.
www
.
URLConnection
connection
;
GopherClient
(
sun
.
net
.
www
.
URLConnection
connection
)
{
this
.
connection
=
connection
;
}
/**
* @return true if gopher connections should go through a proxy, according
* to system properties.
*/
public
static
boolean
getUseGopherProxy
()
{
return
java
.
security
.
AccessController
.
doPrivileged
(
new
GetBooleanAction
(
"gopherProxySet"
)).
booleanValue
();
}
/**
* @return the proxy host to use, or null if nothing is set.
*/
public
static
String
getGopherProxyHost
()
{
String
host
=
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetPropertyAction
(
"gopherProxyHost"
));
if
(
""
.
equals
(
host
))
{
host
=
null
;
}
return
host
;
}
/**
* @return the proxy port to use. Will default reasonably.
*/
public
static
int
getGopherProxyPort
()
{
return
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetIntegerAction
(
"gopherProxyPort"
,
80
))
.
intValue
();
}
/** Given a url, setup to fetch the gopher document it refers to */
InputStream
openStream
(
URL
u
)
throws
IOException
{
this
.
u
=
u
;
this
.
os
=
os
;
int
i
=
0
;
String
s
=
u
.
getFile
();
int
limit
=
s
.
length
();
int
c
=
'1'
;
while
(
i
<
limit
&&
(
c
=
s
.
charAt
(
i
))
==
'/'
)
i
++;
gtype
=
c
==
'/'
?
'1'
:
c
;
if
(
i
<
limit
)
i
++;
gkey
=
s
.
substring
(
i
);
openServer
(
u
.
getHost
(),
u
.
getPort
()
<=
0
?
70
:
u
.
getPort
());
MessageHeader
msgh
=
new
MessageHeader
();
switch
(
gtype
)
{
case
'0'
:
case
'7'
:
msgh
.
add
(
"content-type"
,
"text/plain"
);
break
;
case
'1'
:
msgh
.
add
(
"content-type"
,
"text/html"
);
break
;
case
'g'
:
case
'I'
:
msgh
.
add
(
"content-type"
,
"image/gif"
);
break
;
default
:
msgh
.
add
(
"content-type"
,
"content/unknown"
);
break
;
}
if
(
gtype
!=
'7'
)
{
serverOutput
.
print
(
decodePercent
(
gkey
)
+
"\r\n"
);
serverOutput
.
flush
();
}
else
if
((
i
=
gkey
.
indexOf
(
'?'
))
>=
0
)
{
serverOutput
.
print
(
decodePercent
(
gkey
.
substring
(
0
,
i
)
+
"\t"
+
gkey
.
substring
(
i
+
1
)
+
"\r\n"
));
serverOutput
.
flush
();
msgh
.
add
(
"content-type"
,
"text/html"
);
}
else
{
msgh
.
add
(
"content-type"
,
"text/html"
);
}
connection
.
setProperties
(
msgh
);
if
(
msgh
.
findValue
(
"content-type"
)
==
"text/html"
)
{
os
=
new
PipedOutputStream
();
PipedInputStream
ret
=
new
PipedInputStream
();
ret
.
connect
(
os
);
new
Thread
(
this
).
start
();
return
ret
;
}
return
new
GopherInputStream
(
this
,
serverInput
);
}
/** Translate all the instances of %NN into the character they represent */
private
String
decodePercent
(
String
s
)
{
if
(
s
==
null
||
s
.
indexOf
(
'%'
)
<
0
)
return
s
;
int
limit
=
s
.
length
();
char
d
[]
=
new
char
[
limit
];
int
dp
=
0
;
for
(
int
sp
=
0
;
sp
<
limit
;
sp
++)
{
int
c
=
s
.
charAt
(
sp
);
if
(
c
==
'%'
&&
sp
+
2
<
limit
)
{
int
s1
=
s
.
charAt
(
sp
+
1
);
int
s2
=
s
.
charAt
(
sp
+
2
);
if
(
'0'
<=
s1
&&
s1
<=
'9'
)
s1
=
s1
-
'0'
;
else
if
(
'a'
<=
s1
&&
s1
<=
'f'
)
s1
=
s1
-
'a'
+
10
;
else
if
(
'A'
<=
s1
&&
s1
<=
'F'
)
s1
=
s1
-
'A'
+
10
;
else
s1
=
-
1
;
if
(
'0'
<=
s2
&&
s2
<=
'9'
)
s2
=
s2
-
'0'
;
else
if
(
'a'
<=
s2
&&
s2
<=
'f'
)
s2
=
s2
-
'a'
+
10
;
else
if
(
'A'
<=
s2
&&
s2
<=
'F'
)
s2
=
s2
-
'A'
+
10
;
else
s2
=
-
1
;
if
(
s1
>=
0
&&
s2
>=
0
)
{
c
=
(
s1
<<
4
)
|
s2
;
sp
+=
2
;
}
}
d
[
dp
++]
=
(
char
)
c
;
}
return
new
String
(
d
,
0
,
dp
);
}
/** Turn special characters into the %NN form */
private
String
encodePercent
(
String
s
)
{
if
(
s
==
null
)
return
s
;
int
limit
=
s
.
length
();
char
d
[]
=
null
;
int
dp
=
0
;
for
(
int
sp
=
0
;
sp
<
limit
;
sp
++)
{
int
c
=
s
.
charAt
(
sp
);
if
(
c
<=
' '
||
c
==
'"'
||
c
==
'%'
)
{
if
(
d
==
null
)
d
=
s
.
toCharArray
();
if
(
dp
+
3
>=
d
.
length
)
{
char
nd
[]
=
new
char
[
dp
+
10
];
System
.
arraycopy
(
d
,
0
,
nd
,
0
,
dp
);
d
=
nd
;
}
d
[
dp
]
=
'%'
;
int
dig
=
(
c
>>
4
)
&
0xF
;
d
[
dp
+
1
]
=
(
char
)
(
dig
<
10
?
'0'
+
dig
:
'A'
-
10
+
dig
);
dig
=
c
&
0xF
;
d
[
dp
+
2
]
=
(
char
)
(
dig
<
10
?
'0'
+
dig
:
'A'
-
10
+
dig
);
dp
+=
3
;
}
else
{
if
(
d
!=
null
)
{
if
(
dp
>=
d
.
length
)
{
char
nd
[]
=
new
char
[
dp
+
10
];
System
.
arraycopy
(
d
,
0
,
nd
,
0
,
dp
);
d
=
nd
;
}
d
[
dp
]
=
(
char
)
c
;
}
dp
++;
}
}
return
d
==
null
?
s
:
new
String
(
d
,
0
,
dp
);
}
/** This method is run as a seperate thread when an incoming gopher
document requires translation to html */
public
void
run
()
{
int
qpos
=
-
1
;
try
{
if
(
gtype
==
'7'
&&
(
qpos
=
gkey
.
indexOf
(
'?'
))
<
0
)
{
PrintStream
ps
=
new
PrintStream
(
os
,
false
,
encoding
);
ps
.
print
(
"<html><head><title>Searchable Gopher Index</title></head>\n<body><h1>Searchable Gopher Index</h1><isindex>\n</body></html>\n"
);
}
else
if
(
gtype
!=
'1'
&&
gtype
!=
'7'
)
{
byte
buf
[]
=
new
byte
[
2048
];
try
{
int
n
;
while
((
n
=
serverInput
.
read
(
buf
))
>=
0
)
os
.
write
(
buf
,
0
,
n
);
}
catch
(
Exception
e
)
{
}
}
else
{
PrintStream
ps
=
new
PrintStream
(
os
,
false
,
encoding
);
String
title
=
null
;
if
(
gtype
==
'7'
)
title
=
"Results of searching for \""
+
gkey
.
substring
(
qpos
+
1
)
+
"\" on "
+
u
.
getHost
();
else
title
=
"Gopher directory "
+
gkey
+
" from "
+
u
.
getHost
();
ps
.
print
(
"<html><head><title>"
);
ps
.
print
(
title
);
ps
.
print
(
"</title></head>\n<body>\n<H1>"
);
ps
.
print
(
title
);
ps
.
print
(
"</h1><dl compact>\n"
);
BufferedReader
ds
=
new
BufferedReader
(
new
InputStreamReader
(
serverInput
));
String
s
;
while
((
s
=
ds
.
readLine
())
!=
null
)
{
int
len
=
s
.
length
();
while
(
len
>
0
&&
s
.
charAt
(
len
-
1
)
<=
' '
)
len
--;
if
(
len
<=
0
)
continue
;
int
key
=
s
.
charAt
(
0
);
int
t1
=
s
.
indexOf
(
'\t'
);
int
t2
=
t1
>
0
?
s
.
indexOf
(
'\t'
,
t1
+
1
)
:
-
1
;
int
t3
=
t2
>
0
?
s
.
indexOf
(
'\t'
,
t2
+
1
)
:
-
1
;
if
(
t3
<
0
)
{
// ps.print("<br><i>"+s+"</i>\n");
continue
;
}
String
port
=
t3
+
1
<
len
?
":"
+
s
.
substring
(
t3
+
1
,
len
)
:
""
;
String
host
=
t2
+
1
<
t3
?
s
.
substring
(
t2
+
1
,
t3
)
:
u
.
getHost
();
ps
.
print
(
"<dt><a href=\"gopher://"
+
host
+
port
+
"/"
+
s
.
substring
(
0
,
1
)
+
encodePercent
(
s
.
substring
(
t1
+
1
,
t2
))
+
"\">\n"
);
ps
.
print
(
"<img align=middle border=0 width=25 height=32 src="
);
switch
(
key
)
{
default
:
ps
.
print
(
System
.
getProperty
(
"java.net.ftp.imagepath.file"
));
break
;
case
'0'
:
ps
.
print
(
System
.
getProperty
(
"java.net.ftp.imagepath.text"
));
break
;
case
'1'
:
ps
.
print
(
System
.
getProperty
(
"java.net.ftp.imagepath.directory"
));
break
;
case
'g'
:
ps
.
print
(
System
.
getProperty
(
"java.net.ftp.imagepath.gif"
));
break
;
}
ps
.
print
(
".gif align=middle><dd>\n"
);
ps
.
print
(
s
.
substring
(
1
,
t1
)
+
"</a>\n"
);
}
ps
.
print
(
"</dl></body>\n"
);
ps
.
close
();
}
}
catch
(
UnsupportedEncodingException
e
)
{
throw
new
InternalError
(
encoding
+
" encoding not found"
,
e
);
}
catch
(
IOException
e
)
{
}
finally
{
try
{
closeServer
();
os
.
close
();
}
catch
(
IOException
e2
)
{
}
}
}
}
/** An input stream that does nothing more than hold on to the NetworkClient
that created it. This is used when only the input stream is needed, and
the network client needs to be closed when the input stream is closed. */
class
GopherInputStream
extends
FilterInputStream
{
NetworkClient
parent
;
GopherInputStream
(
NetworkClient
o
,
InputStream
fd
)
{
super
(
fd
);
parent
=
o
;
}
public
void
close
()
{
try
{
parent
.
closeServer
();
super
.
close
();
}
catch
(
IOException
e
)
{
}
}
}
src/share/classes/sun/net/www/protocol/gopher/Handler.java
已删除
100644 → 0
浏览文件 @
51ea0f8c
/*
* Copyright (c) 1995, 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
sun.net.www.protocol.gopher
;
import
java.io.*
;
import
java.util.*
;
import
sun.net.NetworkClient
;
import
java.net.URL
;
import
java.net.URLStreamHandler
;
import
java.net.Proxy
;
import
java.net.InetSocketAddress
;
import
java.net.SocketPermission
;
import
java.security.Permission
;
import
sun.net.www.protocol.http.HttpURLConnection
;
/**
* A class to handle the gopher protocol.
*/
public
class
Handler
extends
java
.
net
.
URLStreamHandler
{
protected
int
getDefaultPort
()
{
return
70
;
}
public
java
.
net
.
URLConnection
openConnection
(
URL
u
)
throws
IOException
{
return
openConnection
(
u
,
null
);
}
public
java
.
net
.
URLConnection
openConnection
(
URL
u
,
Proxy
p
)
throws
IOException
{
/* if set for proxy usage then go through the http code to get */
/* the url connection. */
if
(
p
==
null
&&
GopherClient
.
getUseGopherProxy
())
{
String
host
=
GopherClient
.
getGopherProxyHost
();
if
(
host
!=
null
)
{
InetSocketAddress
saddr
=
InetSocketAddress
.
createUnresolved
(
host
,
GopherClient
.
getGopherProxyPort
());
p
=
new
Proxy
(
Proxy
.
Type
.
HTTP
,
saddr
);
}
}
if
(
p
!=
null
)
{
return
new
HttpURLConnection
(
u
,
p
);
}
return
new
GopherURLConnection
(
u
);
}
}
class
GopherURLConnection
extends
sun
.
net
.
www
.
URLConnection
{
Permission
permission
;
GopherURLConnection
(
URL
u
)
{
super
(
u
);
}
public
void
connect
()
throws
IOException
{
}
public
InputStream
getInputStream
()
throws
IOException
{
return
new
GopherClient
(
this
).
openStream
(
url
);
}
public
Permission
getPermission
()
{
if
(
permission
==
null
)
{
int
port
=
url
.
getPort
();
port
=
port
<
0
?
70
:
port
;
String
host
=
url
.
getHost
()
+
":"
+
url
.
getPort
();
permission
=
new
SocketPermission
(
host
,
"connect"
);
}
return
permission
;
}
}
test/java/net/URL/Test.java
浏览文件 @
2e952539
...
...
@@ -322,10 +322,6 @@ public class Test {
test
(
"ftp://ftp.is.co.za/rfc/rfc1808.txt"
)
.
s
(
"ftp"
).
h
(
"ftp.is.co.za"
).
p
(
"/rfc/rfc1808.txt"
).
z
();
test
(
"gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles"
)
.
s
(
"gopher"
).
h
(
"spinaltap.micro.umn.edu"
)
.
p
(
"/00/Weather/California/Los%20Angeles"
).
z
();
test
(
"http://www.math.uio.no/faq/compression-faq/part1.html"
)
.
s
(
"http"
).
h
(
"www.math.uio.no"
).
p
(
"/faq/compression-faq/part1.html"
).
z
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录