关于Liferay的deactivate user的研究
当用户在控制面板中选择deactivate user的时候:
它会去走到EditUserAction的processAction()方法,在判断清楚动作是Constants.DEACTIVATE之后,它会调用deleteUser()方法:
这段代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
protected void deleteUsers(ActionRequest actionRequest) throws Exception {
String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
long [] deleteUserIds = StringUtil.split(
ParamUtil.getString(actionRequest, "deleteUserIds" ), 0L);
for ( int i = 0 ; i < deleteUserIds.length; i++) {
if (cmd.equals(Constants.DEACTIVATE) ||
cmd.equals(Constants.RESTORE)) {
int status = WorkflowConstants.STATUS_APPROVED;
if (cmd.equals(Constants.DEACTIVATE)) {
status = WorkflowConstants.STATUS_INACTIVE;
}
UserServiceUtil.updateStatus(deleteUserIds[i], status);
}
else {
UserServiceUtil.deleteUser(deleteUserIds[i]);
}
}
}
|
可以发现deleteUser不仅仅是只删除用户,它是几种情况的糅合体,不仅仅是Delete,而且Deactivate,Restore都会走到这个方法中,我们因为是DEACTIVATE,所以走的分支是第16行,最终它先获取我们操作的用户的id,然后会调用UserServiceUtil.updateStatus(deleteUserIds[i],status)方法:
这个方法接下来会利用动态代理机制调用UserServiceImpl的updateStatus(long userId,int status)方法:
这个方法从调试信息中可以看到,我们要操作的用户id是12113,然后状态位要改成5,这个5应该是对应的Deactivate。
最终,这个方法会调用UserLocalServiceImpl.updateStatus(userId,status)方法:
它其实是对用户表User_进行了操作,并且吧其中UserId 为12113(Jessica这个用户)的状态为改成了5(deactivate):
这个表的DDL如下:
特别注意第2个字段(UserId)和最后一个字段(Status).
而当我们进行操作的时候,很容易从Hypersonic数据库的log中看到我们更新这个字段的操作(不过不明白为什么Update要拆分2条,一条是Delete,一条是insert)
总结:
(1)其实当Deactivate用户时候,并没有真正让用户信息从User_表中删除,仅仅是吧Status位置改成Deactivate.
(2)用户的Restore,Deactivate,Delete操作都合并在了deleteUser()方法中。
(3)Hypersonic操作很不智能,Update方法必须被拆分为一个Delete加一个Insert方法
关于Liferay的deactivate user的研究相关推荐
- Liferay 控制面板在指定文件夹添加Basic Document流程分析
结论: 当在Liferay中用管理员登录,导航到控制面板->Documents and Media ,在指定文件夹下添加BasicDocument时,服务器做了如下的事情: (1) 在DLFIL ...
- Liferay研究-smilingleo
http://blog.csdn.net/smilingleo/article/details/1859908 Liferay研究之一:Ext环境的搭建 本篇主要介绍如何搭建Ext开发环境.网上也有很 ...
- Liferay Portal额外研究-银狐999
Liferay Portal额外研究(一):初步在新Tomcat下部署 开发者在线 Builder.com.cn 更新时间:2008-03-19作者:银狐999 来源:CSDN 本文关键词: 部署 t ...
- Liferay Dynamic CSS Filter方法的研究 - 总体过程
背景知识: 最近项目组遇到一个问题就是改了一个new theme之后导致某些css文件不起作用了,这也激起了我的好奇心,让我有机会去研究下Liferay Dynamic CSS Filter的原理. ...
- Liferay新注册用户缺省页面的研究
Liferay新注册用户缺省页面的研究 在Liferay的基础上进行二次开发,我们都比较困惑的一个问题是:如何控制新注册用户登录后的页面? 关于新用户的缺省页面,最核心的代码是在com.liferay ...
- Liferay研究之廿九:Liferay5.2基础架构变动
前几天Liferay正式发布了5.2, 抽空Down下来研究了一天,感觉还是有不少变化的,很多底层的东西都发生了变化.因为现在重点关注于MDD的研究,所以这次研究重点在基础架构(liferay inf ...
- Liferay研究之廿九:Liferay5.2基础架构变动收藏
前几天Liferay正式发布了5.2, 抽空Down下来研究了一天,感觉还是有不少变化的,很多底层的东西都发生了变化.因为现在重点关注于MDD的研究,所以这次研究重点在基础架构 (liferay in ...
- Liferay MinifierFilter的研究
大家都知道,在Web应用程序中,为了节省网络开销,往往吧多个小的js文件整合成一个大的js文件,吧多个小的css文件整合成一个大的js文件,这样原本N次小文件的请求就可以合并成单次的网络请求.最典型的 ...
- Liferay研究之六:Liferay技巧几则
在Liferay中添加链接的方式 1.通过liferay-ui:icon标签: <% ... PortletURL moreURL = renderResponse.create ...
- Liferay Portal学习笔记-coldTear
[原创]Liferay Portal学习笔记(一):安装 一. 简单安装 1)下载并安装 JDK1.5 1. 下载并安装 Windows Platform J2SE(TM) Development ...
最新文章
- Performance — 前端性能监控利器
- iOS NSNotificationCenter详解
- 日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!
- wso2 esb_使用WSO2 ESB进行邮件内容过滤
- ant中table表格的多选框如何清空
- 前端学习(2211):网络请求模块的选择--axios的配置相关
- [bzoj2850]巧克力王国_KD-Tree
- “拖欠货款、裁员降薪”,这家生鲜电商平台无奈回应...
- MakeGenericMethod Reflection 反射 ObjectToXmlT Generic XmlSerializer
- 一批工业机械网站交换友情链接
- 电池充放电设备招投标解决方案
- three.js 05-01 之 PlaneGeometry 几何体
- C#基础知识(停止更新、移步博客园)
- 计算机绘画社团活动教案,电脑绘画社团课教师教案.doc
- 当析构函数遇到多线程 转载
- WORD/WPS打印目录或输出输出PDF时,目录显示“错误未定义标签”,且无法正常跳转的解决方法
- C语言 自定义类型 之 【枚举】
- 超链接标签 a (锚点链接)
- 手把手教你写专利申请书·如何申请专利
- Depix:还原马赛克工具的试用及总结
热门文章
- HDU4622- Reincarnation(后缀自动机)
- 网吧流媒体服务器系统,网吧视频点播服务器架设完全攻略流媒体服务器 -电脑资料...
- Java邮箱正则匹配
- 在敏捷2013中寻找答案
- 用python扑克随机发牌_python:扑克牌发牌程序
- 基于matlab的-数字调制技术仿真
- 零基础如何入门激光SLAM
- 基于同源策略的移动应用细粒度隐私保护技术
- html js css 简明教程,Web前端开发简明教程(HTML+CSS+JavaScript+jQuery)
- Object中的同步机制[转]