Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
117f2bc6
F
Flowable Engine
项目概览
开发团队
/
Flowable Engine
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Flowable Engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
117f2bc6
编写于
8月 20, 2014
作者:
O
Oleg Efimov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SerializableType object stream subclassing improved
上级
6bddf067
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
16 deletion
+13
-16
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
...c/main/java/org/activiti/engine/impl/db/DbSqlSession.java
+0
-4
modules/activiti-engine/src/main/java/org/activiti/engine/impl/variable/DeserializedObject.java
...org/activiti/engine/impl/variable/DeserializedObject.java
+5
-4
modules/activiti-engine/src/main/java/org/activiti/engine/impl/variable/SerializableType.java
...a/org/activiti/engine/impl/variable/SerializableType.java
+8
-8
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
浏览文件 @
117f2bc6
...
...
@@ -554,10 +554,6 @@ public class DbSqlSession implements Session {
// deserialized objects /////////////////////////////////////////////////////
public
void
addDeserializedObject
(
Object
deserializedObject
,
byte
[]
serializedBytes
,
VariableInstanceEntity
variableInstanceEntity
)
{
addDeserializedObject
(
new
DeserializedObject
(
deserializedObject
,
serializedBytes
,
variableInstanceEntity
));
}
public
void
addDeserializedObject
(
DeserializedObject
deserializedObject
)
{
deserializedObjects
.
add
(
deserializedObject
);
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/variable/DeserializedObject.java
浏览文件 @
117f2bc6
...
...
@@ -21,12 +21,13 @@ import org.activiti.engine.impl.persistence.entity.VariableInstanceEntity;
* @author Tom Baeyens
*/
public
class
DeserializedObject
{
SerializableType
type
;
Object
deserializedObject
;
byte
[]
originalBytes
;
VariableInstanceEntity
variableInstanceEntity
;
public
DeserializedObject
(
Object
deserializedObject
,
byte
[]
serializedBytes
,
VariableInstanceEntity
variableInstanceEntity
)
{
public
DeserializedObject
(
SerializableType
type
,
Object
deserializedObject
,
byte
[]
serializedBytes
,
VariableInstanceEntity
variableInstanceEntity
)
{
this
.
type
=
type
;
this
.
deserializedObject
=
deserializedObject
;
this
.
originalBytes
=
serializedBytes
;
this
.
variableInstanceEntity
=
variableInstanceEntity
;
...
...
@@ -35,7 +36,7 @@ public class DeserializedObject {
public
void
flush
()
{
// this first check verifies if the variable value was not overwritten with another object
if
(
deserializedObject
==
variableInstanceEntity
.
getCachedValue
()
&&
!
variableInstanceEntity
.
isDeleted
())
{
byte
[]
bytes
=
SerializableT
ype
.
serialize
(
deserializedObject
,
variableInstanceEntity
);
byte
[]
bytes
=
t
ype
.
serialize
(
deserializedObject
,
variableInstanceEntity
);
if
(!
Arrays
.
equals
(
originalBytes
,
bytes
))
{
variableInstanceEntity
.
setBytes
(
bytes
);
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/variable/SerializableType.java
浏览文件 @
117f2bc6
...
...
@@ -61,9 +61,9 @@ public class SerializableType extends ByteArrayType {
// so that it can be serialized again if it was changed.
Context
.
getCommandContext
()
.
getDbSqlSession
()
.
addDeserializedObject
(
deserializedObject
,
bytes
,
(
VariableInstanceEntity
)
valueFields
);
.
addDeserializedObject
(
new
DeserializedObject
(
this
,
deserializedObject
,
bytes
,
(
VariableInstanceEntity
)
valueFields
)
);
}
return
deserializedObject
;
}
catch
(
Exception
e
)
{
throw
new
ActivitiException
(
"Couldn't deserialize object in variable '"
+
valueFields
.
getName
()+
"'"
,
e
);
...
...
@@ -77,21 +77,21 @@ public class SerializableType extends ByteArrayType {
public
void
setValue
(
Object
value
,
ValueFields
valueFields
)
{
byte
[]
byteArray
=
serialize
(
value
,
valueFields
);
valueFields
.
setCachedValue
(
value
);
if
(
valueFields
.
getBytes
()
==
null
)
{
// TODO why the null check? won't this cause issues when setValue is called the second this with a different object?
if
(
valueFields
instanceof
VariableInstanceEntity
)
{
// register the deserialized object for dirty checking.
Context
.
getCommandContext
()
.
getDbSqlSession
()
.
addDeserializedObject
(
valueFields
.
getCachedValue
(),
byteArray
,
(
VariableInstanceEntity
)
valueFields
);
.
addDeserializedObject
(
new
DeserializedObject
(
this
,
valueFields
.
getCachedValue
(),
byteArray
,
(
VariableInstanceEntity
)
valueFields
)
);
}
}
super
.
setValue
(
byteArray
,
valueFields
);
}
public
static
byte
[]
serialize
(
Object
value
,
ValueFields
valueFields
)
{
public
byte
[]
serialize
(
Object
value
,
ValueFields
valueFields
)
{
if
(
value
==
null
)
{
return
null
;
}
...
...
@@ -120,8 +120,8 @@ public class SerializableType extends ByteArrayType {
}
};
}
private
static
ObjectOutputStream
createObjectOutputStream
(
OutputStream
os
)
throws
IOException
{
protected
ObjectOutputStream
createObjectOutputStream
(
OutputStream
os
)
throws
IOException
{
return
new
ObjectOutputStream
(
os
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录