Skip to content

Commit 0261344

Browse files
更新框架至v2.0.6及相关代码优化
1 parent 2b24498 commit 0261344

File tree

9 files changed

+69
-38
lines changed

9 files changed

+69
-38
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
<properties>
1717
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18-
<ymate.platform.version>2.0.5</ymate.platform.version>
19-
<ymate.framework.version>2.0.5</ymate.framework.version>
18+
<ymate.platform.version>2.0.6</ymate.platform.version>
19+
<ymate.framework.version>2.0.6</ymate.framework.version>
2020
</properties>
2121

2222
<developers>

src/main/java/net/ymate/module/oauth/connector/AbstractOAuthConnectProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.commons.logging.LogFactory;
2626
import org.apache.http.Header;
2727

28+
import javax.servlet.http.HttpServletResponse;
2829
import java.util.HashMap;
2930
import java.util.Map;
3031

@@ -137,7 +138,7 @@ protected Header[] __doGetRequestHeaders() {
137138
*/
138139
protected JSONObject __doParseConnectResponseBody(IHttpResponse response) throws Exception {
139140
if (response != null) {
140-
if (response.getStatusCode() == 200) {
141+
if (response.getStatusCode() == HttpServletResponse.SC_OK) {
141142
JSONObject _result = JSON.parseObject(response.getContent());
142143
if (_result.containsKey(__errorFlag)) {
143144
throw new RuntimeException(_result.toJSONString());

src/main/java/net/ymate/module/oauth/connector/IOAuthConnectProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package net.ymate.module.oauth.connector;
1717

1818
import net.ymate.framework.commons.ParamUtils;
19-
import net.ymate.framework.core.Optional;
20-
import net.ymate.framework.core.util.WebUtils;
19+
import net.ymate.platform.webmvc.base.Type;
2120
import net.ymate.platform.webmvc.context.WebContext;
21+
import net.ymate.platform.webmvc.util.WebUtils;
2222
import org.apache.commons.lang.StringUtils;
2323

2424
import java.util.Collections;
@@ -86,10 +86,10 @@ public String getRedirectUri() {
8686
if (StringUtils.isBlank(redirectUri)) {
8787
redirectUri = WebUtils.buildURL(WebContext.getRequest(), "/oauth2/connect/" + name + "/redirect", true);
8888
}
89-
String _redirectUrl = WebContext.getRequest().getParameter(Optional.REDIRECT_URL);
89+
String _redirectUrl = WebContext.getRequest().getParameter(Type.Const.REDIRECT_URL);
9090
if (StringUtils.isNotBlank(_redirectUrl)) {
9191
Map<String, String> _params = new HashMap<String, String>();
92-
_params.put(Optional.REDIRECT_URL, _redirectUrl);
92+
_params.put(Type.Const.REDIRECT_URL, _redirectUrl);
9393
return ParamUtils.appendQueryParamValue(redirectUri, _params, true, "UTF-8");
9494
}
9595
return redirectUri;

src/main/java/net/ymate/module/oauth/connector/IOAuthConnectorModuleCfg.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@
2121
*/
2222
public interface IOAuthConnectorModuleCfg {
2323

24+
String CACHE_NAME_PREFIX = "cache_name_prefix";
25+
26+
String CALLBACK_HANDLER_CLASS = "callback_handler_class";
27+
28+
String PASSWORD_ENCRYPTED = "password_encrypted";
29+
30+
String PASSWORD_CLASS = "password_class";
31+
32+
String CLIENT_ID = "client_id";
33+
34+
String CLIENT_SECRET = "client_secret";
35+
36+
String REDIRECT_URI = "redirect_uri";
37+
2438
/**
2539
* @return 缓存名称前缀, 默认值: ""
2640
*/

src/main/java/net/ymate/module/oauth/connector/OAuthConnector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import net.ymate.module.oauth.connector.annotation.OAuthConnectProcessor;
1919
import net.ymate.module.oauth.connector.handle.OAuthConnectProcessorHandler;
20-
import net.ymate.module.oauth.connector.impl.DefaultModuleCfg;
20+
import net.ymate.module.oauth.connector.impl.DefaultOAuthConnectorModuleCfg;
2121
import net.ymate.platform.core.Version;
2222
import net.ymate.platform.core.YMP;
2323
import net.ymate.platform.core.module.IModule;
@@ -38,7 +38,7 @@ public class OAuthConnector implements IModule, IOAuthConnector {
3838

3939
private static final Log _LOG = LogFactory.getLog(OAuthConnector.class);
4040

41-
public static final Version VERSION = new Version(1, 0, 0, OAuthConnector.class.getPackage().getImplementationVersion(), Version.VersionType.Alphal);
41+
public static final Version VERSION = new Version(1, 0, 0, OAuthConnector.class.getPackage().getImplementationVersion(), Version.VersionType.Release);
4242

4343
private static volatile IOAuthConnector __instance;
4444

@@ -73,7 +73,7 @@ public void init(YMP owner) throws Exception {
7373
_LOG.info("Initializing ymate-module-oauth-connector-" + VERSION);
7474
//
7575
__owner = owner;
76-
__moduleCfg = new DefaultModuleCfg(owner);
76+
__moduleCfg = new DefaultOAuthConnectorModuleCfg(owner);
7777
__owner.registerHandler(OAuthConnectProcessor.class, new OAuthConnectProcessorHandler(this));
7878
//
7979
__moduleCfg.getConnectCallbackHandler().init(this);

src/main/java/net/ymate/module/oauth/connector/controller/OAuthConnectController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class OAuthConnectController {
4747
* @throws Exception 可能产生的任何异常
4848
*/
4949
@RequestMapping("/{connectName}")
50-
public IView __toConnect(@PathVariable String connectName, @RequestParam String state) throws Exception {
50+
public IView __connect(@PathVariable String connectName, @RequestParam String state) throws Exception {
5151
IOAuthConnectProcessor _processor = OAuthConnector.get().getConnectProcessor(connectName);
5252
if (_processor != null) {
5353
state = StringUtils.defaultIfBlank(state, ParamUtils.createNonceStr());
@@ -69,7 +69,7 @@ public IView __toConnect(@PathVariable String connectName, @RequestParam String
6969
* @throws Exception 可能产生的任何异常
7070
*/
7171
@RequestMapping("/{connectName}/redirect")
72-
public IView __onRedirect(@PathVariable String connectName, @RequestParam String code, @RequestParam String state) throws Exception {
72+
public IView __redirect(@PathVariable String connectName, @RequestParam String code, @RequestParam String state) throws Exception {
7373
IOAuthConnectProcessor _processor = OAuthConnector.get().getConnectProcessor(connectName);
7474
if (_processor != null) {
7575
OAuthConnectUser _connectUser = _processor.getConnectUser(code);

src/main/java/net/ymate/module/oauth/connector/impl/DefaultModuleCfg.java renamed to src/main/java/net/ymate/module/oauth/connector/impl/DefaultOAuthConnectorModuleCfg.java

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@
2020
import net.ymate.module.oauth.connector.IOAuthConnector;
2121
import net.ymate.module.oauth.connector.IOAuthConnectorModuleCfg;
2222
import net.ymate.platform.core.YMP;
23-
import net.ymate.platform.core.lang.BlurObject;
23+
import net.ymate.platform.core.support.IConfigReader;
2424
import net.ymate.platform.core.support.IPasswordProcessor;
25-
import net.ymate.platform.core.util.ClassUtils;
26-
import net.ymate.platform.core.util.RuntimeUtils;
25+
import net.ymate.platform.core.support.impl.MapSafeConfigReader;
2726
import org.apache.commons.lang.StringUtils;
2827

2928
import java.util.HashMap;
@@ -34,11 +33,13 @@
3433
* @author 刘镇 (suninformation@163.com) on 2017/03/27 上午 01:31
3534
* @version 1.0
3635
*/
37-
public class DefaultModuleCfg implements IOAuthConnectorModuleCfg {
36+
public class DefaultOAuthConnectorModuleCfg implements IOAuthConnectorModuleCfg {
37+
38+
private YMP __owner;
3839

3940
private String __cacheNamePrefix;
4041

41-
private Map<String, String> __moduleCfgs;
42+
private IConfigReader __moduleCfg;
4243

4344
private IOAuthConnectCallbackHandler __callbackHandler;
4445

@@ -48,21 +49,24 @@ public class DefaultModuleCfg implements IOAuthConnectorModuleCfg {
4849

4950
private Map<String, IOAuthConnectProcessor.ConnectInitCfg> __connectInitCfgs = new ConcurrentHashMap<String, IOAuthConnectProcessor.ConnectInitCfg>();
5051

51-
public DefaultModuleCfg(YMP owner) {
52-
__moduleCfgs = owner.getConfig().getModuleConfigs(IOAuthConnector.MODULE_NAME);
52+
public DefaultOAuthConnectorModuleCfg(YMP owner) {
53+
__owner = owner;
54+
__moduleCfg = MapSafeConfigReader.bind(owner.getConfig().getModuleConfigs(IOAuthConnector.MODULE_NAME));
5355
//
54-
__cacheNamePrefix = StringUtils.trimToEmpty(__moduleCfgs.get("cache_name_prefix"));
56+
__cacheNamePrefix = StringUtils.trimToEmpty(__moduleCfg.getString(CACHE_NAME_PREFIX));
5557
//
56-
__callbackHandler = ClassUtils.impl(__moduleCfgs.get("callback_handler_class"), IOAuthConnectCallbackHandler.class, this.getClass());
58+
__callbackHandler = __moduleCfg.getClassImpl(CALLBACK_HANDLER_CLASS, IOAuthConnectCallbackHandler.class);
5759
if (__callbackHandler == null) {
5860
__callbackHandler = new DefaultConnectCallbackHandler();
5961
}
6062
//
61-
__isPasswordEncrypted = BlurObject.bind(__moduleCfgs.get("password_encrypted")).toBooleanValue();
63+
__isPasswordEncrypted = __moduleCfg.getBoolean(PASSWORD_ENCRYPTED);
6264
//
63-
try {
64-
__password = ClassUtils.impl(__moduleCfgs.get("password_class"), IPasswordProcessor.class, this.getClass());
65-
} catch (Exception ignored) {
65+
if (__isPasswordEncrypted) {
66+
try {
67+
__password = __moduleCfg.getClassImpl(PASSWORD_CLASS, IPasswordProcessor.class);
68+
} catch (Exception ignored) {
69+
}
6670
}
6771
}
6872

@@ -80,21 +84,25 @@ public IOAuthConnectProcessor.ConnectInitCfg getConnectInitCfg(String name) thro
8084
String _redirectUrl = null;
8185
//
8286
Map<String, String> _attributes = new HashMap<String, String>();
83-
Map<String, String> _cfgMap = RuntimeUtils.keyStartsWith(__moduleCfgs, name + ".");
87+
Map<String, String> _cfgMap = __moduleCfg.getMap(name + ".");
8488
for (Map.Entry<String, String> _entry : _cfgMap.entrySet()) {
85-
if ("client_id".equalsIgnoreCase(_entry.getKey())) {
89+
if (CLIENT_ID.equalsIgnoreCase(_entry.getKey())) {
8690
_clientId = _entry.getValue();
87-
} else if ("client_secret".equalsIgnoreCase(_entry.getValue())) {
91+
} else if (CLIENT_SECRET.equalsIgnoreCase(_entry.getValue())) {
8892
_clientSecret = _entry.getValue();
89-
} else if ("redirect_uri".equalsIgnoreCase(_entry.getValue())) {
93+
} else if (REDIRECT_URI.equalsIgnoreCase(_entry.getValue())) {
9094
_redirectUrl = _entry.getValue();
9195
} else {
9296
_attributes.put(_entry.getKey(), _entry.getValue());
9397
}
9498
}
9599
if (StringUtils.isBlank(_clientId) && StringUtils.isBlank(_clientSecret)) {
96-
if (__isPasswordEncrypted && __password != null) {
97-
_clientSecret = __password.decrypt(_clientSecret);
100+
if (__isPasswordEncrypted) {
101+
if (__password != null) {
102+
_clientSecret = __password.decrypt(_clientSecret);
103+
} else {
104+
_clientSecret = __owner.getConfig().getDefaultPasswordClass().newInstance().decrypt(_clientSecret);
105+
}
98106
}
99107
_initCfg = new IOAuthConnectProcessor.ConnectInitCfg(name, _clientId, _clientSecret, _redirectUrl, _attributes);
100108
//

src/main/java/net/ymate/module/oauth/connector/impl/QQConnectProcessor.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import net.ymate.module.oauth.connector.annotation.OAuthConnectProcessor;
2626
import org.apache.commons.lang.StringUtils;
2727

28+
import javax.servlet.http.HttpServletResponse;
2829
import java.util.HashMap;
2930
import java.util.Map;
3031

@@ -43,6 +44,10 @@ public class QQConnectProcessor extends AbstractOAuthConnectProcessor {
4344

4445
private static final String __USERINFO_URL = "https://graph.qq.com/user/get_user_info?";
4546

47+
private static final String M = "男";
48+
49+
private static final String F = "女";
50+
4651
public QQConnectProcessor() {
4752
super();
4853
this.__doSetNeedRedirectUri(true);
@@ -87,9 +92,9 @@ public OAuthConnectUser getConnectUser(String code) throws Exception {
8792
_connectUser.setPhotoUrl(_result.getString("figureurl_qq_1"));
8893
}
8994
String _gender = _result.getString("gender");
90-
if (StringUtils.equals(_gender, "女")) {
95+
if (F.equals(_gender)) {
9196
_connectUser.setGender(OAuthConnectUser.Gender.FEMALE);
92-
} else if (StringUtils.equals(_gender, "男")) {
97+
} else if (M.equals(_gender)) {
9398
_connectUser.setGender(OAuthConnectUser.Gender.MALE);
9499
} else {
95100
_connectUser.setGender(OAuthConnectUser.Gender.UNKNOW);
@@ -105,7 +110,7 @@ public OAuthConnectUser getConnectUser(String code) throws Exception {
105110

106111
@Override
107112
protected JSONObject __doParseConnectResponseBody(IHttpResponse response) throws Exception {
108-
if (response != null && response.getStatusCode() == 200) {
113+
if (response != null && response.getStatusCode() == HttpServletResponse.SC_OK) {
109114
JSONObject _result = null;
110115
if (StringUtils.startsWith(response.getContent(), "callback")) {
111116
_result = JSON.parseObject(StringUtils.substringBetween(response.getContent(), "callback(", ");"));

src/main/java/net/ymate/module/oauth/connector/impl/WeiboConnectProcessor.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public class WeiboConnectProcessor extends AbstractOAuthConnectProcessor {
3939

4040
private static final String __USERINFO_URL = "https://api.weibo.com/2/users/show.json";
4141

42+
private static final String M = "m";
43+
44+
private static final String F = "f";
45+
4246
public WeiboConnectProcessor() {
4347
super("uid");
4448
this.__doSetErrorFlag("error_code");
@@ -62,12 +66,11 @@ public OAuthConnectUser getConnectUser(String code) throws Exception {
6266
IHttpResponse _response = HttpClientHelper.create().get(__USERINFO_URL, _params, __doGetRequestHeaders());
6367
JSONObject _result = __doParseConnectResponseBody(_response);
6468
if (_result != null) {
65-
_connectUser.setNickName(_result.getString("screen_name"))
66-
.setPhotoUrl(_result.getString("avatar_large"));
69+
_connectUser.setNickName(_result.getString("screen_name")).setPhotoUrl(_result.getString("avatar_large"));
6770
String _gender = _result.getString("gender");
68-
if (StringUtils.equals(_gender, "f")) {
71+
if (F.equals(_gender)) {
6972
_connectUser.setGender(OAuthConnectUser.Gender.FEMALE);
70-
} else if (StringUtils.equals(_gender, "m")) {
73+
} else if (M.equals(_gender)) {
7174
_connectUser.setGender(OAuthConnectUser.Gender.MALE);
7275
} else {
7376
_connectUser.setGender(OAuthConnectUser.Gender.UNKNOW);

0 commit comments

Comments
 (0)