为[analysis]模块相关类添加Serializable接口标识,以支持可能的序列化场景,比如缓存

This commit is contained in:
datagear 2021-08-17 08:01:01 +08:00
parent 29c8e2bf47
commit 8b6d9fe827
57 changed files with 195 additions and 33 deletions

View File

@ -7,14 +7,18 @@
package org.datagear.analysis;
import java.io.Serializable;
/**
* 抽象{@linkplain DataNameType}
*
* @author datagear@163.com
*
*/
public abstract class AbstractDataNameType implements DataNameType
public abstract class AbstractDataNameType implements DataNameType, Serializable
{
private static final long serialVersionUID = 1L;
/** 名称 */
private String name;

View File

@ -15,9 +15,11 @@ package org.datagear.analysis;
*/
public class Chart extends ChartDefinition
{
private static final long serialVersionUID = 1L;
private ChartPlugin plugin;
private RenderContext renderContext;
private transient RenderContext renderContext;
public Chart()
{

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
@ -20,8 +21,10 @@ import java.util.Set;
* @author datagear@163.com
*
*/
public class ChartDataSet
public class ChartDataSet implements Serializable
{
private static final long serialVersionUID = 1L;
/** 数据集 */
private DataSet dataSet;

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -19,8 +20,10 @@ import java.util.Map;
* @author datagear@163.com
*
*/
public class ChartDefinition extends AbstractIdentifiable implements ResultDataFormatAware
public class ChartDefinition extends AbstractIdentifiable implements ResultDataFormatAware, Serializable
{
private static final long serialVersionUID = 1L;
public static final String PROPERTY_ID = "id";
public static final String PROPERTY_NAME = "name";
public static final String PROPERTY_CHART_DATASETS = "chartDataSets";

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@ -19,7 +20,7 @@ import org.datagear.util.i18n.Labeled;
* @author datagear@163.com
*
*/
public interface ChartPlugin extends Identifiable, Labeled
public interface ChartPlugin extends Identifiable, Labeled, Serializable
{
String PROPERTY_ID = "id";
String PROPERTY_NAME_LABEL = Labeled.PROPERTY_NAME_LABEL;

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
@ -16,8 +17,10 @@ import java.util.List;
* @author datagear@163.com
*
*/
public class ChartQuery implements ResultDataFormatAware
public class ChartQuery implements ResultDataFormatAware, Serializable
{
private static final long serialVersionUID = 1L;
private List<DataSetQuery> dataSetQueries = Collections.emptyList();
/** 图表结果数格式 */

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -17,14 +18,16 @@ import java.util.Map;
* @author datagear@163.com
*
*/
public class Dashboard extends AbstractIdentifiable
public class Dashboard extends AbstractIdentifiable implements Serializable
{
private static final long serialVersionUID = 1L;
public static final String PROPERTY_ID = "id";
public static final String PROPERTY_RENDER_CONTEXT = "renderContext";
public static final String PROPERTY_WIDGET = "widget";
public static final String PROPERTY_CHARTS = "charts";
private RenderContext renderContext;
private transient RenderContext renderContext;
private DashboardWidget widget;

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
@ -16,8 +17,10 @@ import java.util.Map;
* @author datagear@163.com
*
*/
public class DashboardQuery implements ResultDataFormatAware
public class DashboardQuery implements ResultDataFormatAware, Serializable
{
private static final long serialVersionUID = 1L;
/** 图表ID-查询映射表 */
private Map<String, ChartQuery> chartQueries = Collections.emptyMap();

View File

@ -7,6 +7,8 @@
package org.datagear.analysis;
import java.io.Serializable;
/**
* 看板部件
* <p>
@ -16,7 +18,7 @@ package org.datagear.analysis;
* @author datagear@163.com
*
*/
public interface DashboardWidget extends Identifiable
public interface DashboardWidget extends Identifiable, Serializable
{
/**
* 渲染{@linkplain Dashboard}

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.List;
/**
@ -15,7 +16,7 @@ import java.util.List;
* @author datagear@163.com
*
*/
public interface DataSet extends Identifiable
public interface DataSet extends Identifiable, Serializable
{
/**
* 获取名称

View File

@ -18,6 +18,8 @@ package org.datagear.analysis;
*/
public class DataSetParam extends AbstractDataNameType
{
private static final long serialVersionUID = 1L;
/** 是否必须 */
private boolean required;

View File

@ -7,6 +7,7 @@
package org.datagear.analysis;
import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
@ -19,8 +20,10 @@ import java.util.Map;
* @author datagear@163.com
*
*/
public class DataSetQuery implements ResultDataFormatAware
public class DataSetQuery implements ResultDataFormatAware, Serializable
{
private static final long serialVersionUID = 1L;
/** 参数值映射表 */
private Map<String, ?> paramValues = Collections.emptyMap();

View File

@ -9,6 +9,7 @@ package org.datagear.analysis;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
/**
* 图标
@ -16,7 +17,7 @@ import java.io.InputStream;
* @author datagear@163.com
*
*/
public interface Icon
public interface Icon extends Serializable
{
/**
* 获取图标类型{@code png}{@code jpeg}未知则返回空字符串

View File

@ -25,6 +25,8 @@ import org.datagear.util.StringUtil;
*/
public abstract class TemplateDashboardWidget extends AbstractIdentifiable implements DashboardWidget
{
private static final long serialVersionUID = 1L;
public static final String DEFAULT_TEMPLATE_ENCODING = "UTF-8";
private String[] templates;

View File

@ -26,6 +26,8 @@ import org.datagear.util.i18n.Label;
*/
public abstract class AbstractChartPlugin extends AbstractIdentifiable implements ChartPlugin
{
private static final long serialVersionUID = 1L;
private Label nameLabel;
private Label descLabel;

View File

@ -34,6 +34,8 @@ import org.datagear.util.IOUtil;
*/
public abstract class AbstractCsvDataSet extends AbstractResolvableDataSet implements ResolvableDataSet
{
private static final long serialVersionUID = 1L;
public static final DataSetFmkTemplateResolver CSV_TEMPLATE_RESOLVER = new DataSetFmkTemplateResolver(
CsvOutputFormat.INSTANCE);

View File

@ -26,6 +26,8 @@ import org.datagear.util.IOUtil;
*/
public abstract class AbstractCsvFileDataSet extends AbstractCsvDataSet
{
private static final long serialVersionUID = 1L;
/** 文件编码 */
private String encoding = IOUtil.CHARSET_UTF_8;

View File

@ -33,6 +33,8 @@ import org.datagear.analysis.ResultDataFormat;
*/
public abstract class AbstractDataSet extends AbstractIdentifiable implements DataSet
{
private static final long serialVersionUID = 1L;
public static final DataSetFmkTemplateResolver GENERAL_TEMPLATE_RESOLVER = new DataSetFmkTemplateResolver();
private String name;

View File

@ -58,6 +58,8 @@ import org.slf4j.LoggerFactory;
*/
public abstract class AbstractExcelDataSet extends AbstractResolvableDataSet implements ResolvableDataSet
{
private static final long serialVersionUID = 1L;
protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractExcelDataSet.class);
public static final String EXTENSION_XLSX = "xlsx";

View File

@ -42,6 +42,8 @@ import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
*/
public abstract class AbstractJsonDataSet extends AbstractResolvableDataSet implements ResolvableDataSet
{
private static final long serialVersionUID = 1L;
public static final DataSetFmkTemplateResolver JSON_TEMPLATE_RESOLVER = new DataSetFmkTemplateResolver(
JsonOutputFormat.INSTANCE);

View File

@ -26,6 +26,8 @@ import org.datagear.util.IOUtil;
*/
public abstract class AbstractJsonFileDataSet extends AbstractJsonDataSet
{
private static final long serialVersionUID = 1L;
/** 文件编码 */
private String encoding = IOUtil.CHARSET_UTF_8;

View File

@ -26,6 +26,8 @@ import org.datagear.analysis.ResolvedDataSetResult;
*/
public abstract class AbstractResolvableDataSet extends AbstractDataSet implements ResolvableDataSet
{
private static final long serialVersionUID = 1L;
public AbstractResolvableDataSet()
{
super();

View File

@ -25,6 +25,8 @@ import org.datagear.util.IOUtil;
*/
public class BytesIcon implements Icon
{
private static final long serialVersionUID = 1L;
private String type;
private byte[] bytes;

View File

@ -7,6 +7,7 @@
package org.datagear.analysis.support;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@ -28,8 +29,10 @@ import org.datagear.util.IDUtil;
* @author datagear@163.com
*
*/
public class ChartWidget extends ChartDefinition
public class ChartWidget extends ChartDefinition implements Serializable
{
private static final long serialVersionUID = 1L;
/** 图表部件渲染时的部件信息属性名 */
public static final String ATTR_CHART_WIDGET = "chartWidget";

View File

@ -26,6 +26,8 @@ import org.datagear.util.FileUtil;
*/
public class CsvDirectoryFileDataSet extends AbstractCsvFileDataSet
{
private static final long serialVersionUID = 1L;
/** CSV文件所在的目录 */
private File directory;

View File

@ -26,6 +26,8 @@ import org.datagear.util.IOUtil;
*/
public class CsvValueDataSet extends AbstractCsvDataSet
{
private static final long serialVersionUID = 1L;
/** CSV字符串 */
private String value;

View File

@ -27,6 +27,8 @@ import org.datagear.util.FileUtil;
*/
public class ExcelDirectoryFileDataSet extends AbstractExcelDataSet
{
private static final long serialVersionUID = 1L;
/** Excel文件所在的目录 */
private File directory;

View File

@ -56,6 +56,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
*/
public class HttpDataSet extends AbstractResolvableDataSet
{
private static final long serialVersionUID = 1L;
protected static final Logger LOGGER = LoggerFactory.getLogger(HttpDataSet.class);
public static final String REQUEST_METHOD_GET = "GET";
@ -91,7 +93,7 @@ public class HttpDataSet extends AbstractResolvableDataSet
protected static final List<NameValuePair> NOT_NAME_VALUE_PAIR_OBJ_ARRAY_JSON = new ArrayList<>(0);
/** HTTP客户端 */
private HttpClient httpClient;
private transient HttpClient httpClient;
/** HTTP请求地址 */
private String uri;
@ -625,7 +627,9 @@ public class HttpDataSet extends AbstractResolvableDataSet
protected static class HttpResponseJsonDataSet extends AbstractJsonDataSet
{
private Reader responseJsonReader;
private static final long serialVersionUID = 1L;
private transient Reader responseJsonReader;
public HttpResponseJsonDataSet(Reader responseJsonReader)
{

View File

@ -27,6 +27,8 @@ import org.datagear.util.FileUtil;
*/
public class JsonDirectoryFileDataSet extends AbstractJsonFileDataSet
{
private static final long serialVersionUID = 1L;
/** JSON文件所在的目录 */
private File directory;

View File

@ -26,6 +26,8 @@ import org.datagear.util.IOUtil;
*/
public class JsonValueDataSet extends AbstractJsonDataSet
{
private static final long serialVersionUID = 1L;
private String value;
public JsonValueDataSet()

View File

@ -26,6 +26,8 @@ import org.datagear.analysis.DataSetResult;
*/
public class ProfileDataSet extends AbstractDataSet
{
private static final long serialVersionUID = 1L;
public ProfileDataSet()
{
}

View File

@ -24,6 +24,8 @@ import org.datagear.analysis.DataSetQuery;
*/
public class SimpleCsvFileDataSet extends AbstractCsvFileDataSet
{
private static final long serialVersionUID = 1L;
/** CSV文件 */
private File file;

View File

@ -25,6 +25,8 @@ import org.datagear.analysis.DataSetQuery;
*/
public class SimpleExcelDataSet extends AbstractExcelDataSet
{
private static final long serialVersionUID = 1L;
/** Excel文件 */
private File file;

View File

@ -25,6 +25,8 @@ import org.datagear.analysis.DataSetQuery;
*/
public class SimpleJsonFileDataSet extends AbstractJsonFileDataSet
{
private static final long serialVersionUID = 1L;
/** JSON文件 */
private File file;

View File

@ -47,6 +47,8 @@ import org.slf4j.LoggerFactory;
*/
public class SqlDataSet extends AbstractResolvableDataSet implements ResolvableDataSet
{
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(SqlDataSet.class);
public static final DataSetFmkTemplateResolver SQL_TEMPLATE_RESOLVER = new DataSetFmkTemplateResolver(

View File

@ -170,6 +170,8 @@ public abstract class AbstractHtmlScriptObjectWriter
protected static class RefHtmlChartPlugin extends HtmlChartPlugin implements JsonRefObject
{
private static final long serialVersionUID = 1L;
private String refName;
public RefHtmlChartPlugin(String refName)

View File

@ -22,6 +22,8 @@ import org.datagear.util.i18n.Label;
*/
public class AttributeValueHtmlChartPlugin extends HtmlChartPlugin
{
private static final long serialVersionUID = 1L;
private String chartAttributeName;
public AttributeValueHtmlChartPlugin()

View File

@ -21,6 +21,8 @@ import org.datagear.analysis.RenderContext;
*/
public class HtmlChart extends Chart
{
private static final long serialVersionUID = 1L;
/** 图表的HTML元素ID */
private String elementId;

View File

@ -58,6 +58,8 @@ import org.datagear.util.i18n.Label;
*/
public class HtmlChartPlugin extends AbstractChartPlugin
{
private static final long serialVersionUID = 1L;
public static final String PROPERTY_CHART_RENDERER = "chartRenderer";
/** HTML换行符 */

View File

@ -100,6 +100,8 @@ public class HtmlChartPluginScriptObjectWriter extends AbstractHtmlScriptObjectW
*/
protected static class HtmlChartPluginJson extends AbstractChartPlugin
{
private static final long serialVersionUID = 1L;
public HtmlChartPluginJson(HtmlChartPlugin plugin)
{
super(plugin.getId(), plugin.getNameLabel());

View File

@ -104,6 +104,8 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter
*/
protected static class HtmlChartJson extends HtmlChart
{
private static final long serialVersionUID = 1L;
public HtmlChartJson(HtmlChart htmlChart, String renderContextVarName, String pluginVarName)
{
super(htmlChart);
@ -121,6 +123,8 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter
*/
protected static class ChartDataSetJson extends ChartDataSet
{
private static final long serialVersionUID = 1L;
public ChartDataSetJson(ChartDataSet chartDataSet)
{
super(new DataSetJson(chartDataSet.getDataSet()));
@ -159,6 +163,8 @@ public class HtmlChartScriptObjectWriter extends AbstractHtmlScriptObjectWriter
*/
protected static class DataSetJson extends AbstractDataSet
{
private static final long serialVersionUID = 1L;
public DataSetJson(DataSet dataSet)
{
super(dataSet.getId(), dataSet.getName(), dataSet.getProperties());

View File

@ -28,6 +28,8 @@ import org.datagear.analysis.support.html.HtmlChartRenderAttr.HtmlChartRenderOpt
*/
public class HtmlChartWidget extends ChartWidget
{
private static final long serialVersionUID = 1L;
public HtmlChartWidget()
{
super();

View File

@ -19,6 +19,8 @@ import org.datagear.analysis.TemplateDashboard;
*/
public class HtmlTplDashboard extends TemplateDashboard
{
private static final long serialVersionUID = 1L;
/** 看板JS对象变量名 */
private String varName;

View File

@ -71,6 +71,8 @@ public class HtmlTplDashboardScriptObjectWriter extends AbstractHtmlScriptObject
*/
protected static class HtmlTplDashboardJson extends HtmlTplDashboard
{
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public HtmlTplDashboardJson(HtmlTplDashboard dashboard, String renderContextVarName)
{
@ -89,6 +91,8 @@ public class HtmlTplDashboardScriptObjectWriter extends AbstractHtmlScriptObject
*/
protected static class TemplateDashboardWidgetJson extends HtmlTplDashboardWidget
{
private static final long serialVersionUID = 1L;
public TemplateDashboardWidgetJson(HtmlTplDashboardWidget dashboardWidget)
{
super(dashboardWidget.getId(), dashboardWidget.getTemplates(), null);

View File

@ -28,7 +28,9 @@ import org.datagear.analysis.support.html.HtmlTplDashboardRenderAttr.WebContext;
*/
public class HtmlTplDashboardWidget extends TemplateDashboardWidget
{
private HtmlTplDashboardWidgetRenderer renderer;
private static final long serialVersionUID = 1L;
private transient HtmlTplDashboardWidgetRenderer renderer;
public HtmlTplDashboardWidget()
{

View File

@ -9,6 +9,7 @@ package org.datagear.analysis.support.html;
import java.io.IOException;
import java.io.Reader;
import java.io.Serializable;
/**
* JS图表渲染器
@ -34,7 +35,7 @@ import java.io.Reader;
* @author datagear@163.com
*
*/
public interface JsChartRenderer
public interface JsChartRenderer extends Serializable
{
/** JS图表渲染器的渲染函数名 */
public static final String RENDER_FUNCTION_NAME = "render";

View File

@ -7,6 +7,7 @@
package org.datagear.analysis.support.html;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
@ -16,8 +17,10 @@ import java.util.List;
* @author datagear@163.com
*
*/
public class SimpleHtmlTplDashboardImport implements HtmlTplDashboardImport
public class SimpleHtmlTplDashboardImport implements HtmlTplDashboardImport, Serializable
{
private static final long serialVersionUID = 1L;
private List<ImportItem> importItems = Collections.emptyList();
public SimpleHtmlTplDashboardImport()

View File

@ -9,7 +9,6 @@ package org.datagear.analysis.support.html;
import java.io.IOException;
import java.io.Reader;
import java.io.Serializable;
import java.io.StringReader;
/**
@ -18,7 +17,7 @@ import java.io.StringReader;
* @author datagear@163.com
*
*/
public class StringJsChartRenderer implements JsChartRenderer, Serializable
public class StringJsChartRenderer implements JsChartRenderer
{
private static final long serialVersionUID = 1L;

View File

@ -309,6 +309,8 @@ public class AbstractDataSetTest
private static class TestAbstractDataSet extends AbstractDataSet
{
private static final long serialVersionUID = 1L;
@Override
public DataSetResult getResult(DataSetQuery query) throws DataSetException
{

View File

@ -81,6 +81,8 @@ public class AbstractResolvableDataSetTest
private static class TestAbstractResolvableDataSet extends AbstractResolvableDataSet
{
private static final long serialVersionUID = 1L;
@Override
protected ResolvedDataSetResult resolveResult(DataSetQuery query, List<DataSetProperty> properties,
boolean resolveProperties) throws DataSetException

View File

@ -169,6 +169,8 @@ public class JsonChartPluginPropertiesResolverTest
private static class TestChartPlugin extends AbstractChartPlugin
{
private static final long serialVersionUID = 1L;
public TestChartPlugin()
{
super();

View File

@ -22,6 +22,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
*/
public class ChartDataSetVO extends ChartDataSet implements CloneableEntity
{
private static final long serialVersionUID = 1L;
public ChartDataSetVO()
{
super();

View File

@ -9,6 +9,9 @@ package org.datagear.management.domain;
/**
* 可克隆实体
* <p>
* 此接口主要为无序列化缓存比如进程内缓存提供支持先克隆实体再存入缓存从缓存中取出实体后先克隆再返回避免实体被修改导致缓存混乱
* </p>
*
* @author datagear@163.com
*
@ -20,9 +23,11 @@ public interface CloneableEntity extends Cloneable
* <p>
* 实现方法应遵循如下克隆规则
* </p>
* <p>
* 如果属性值是实体对象则应仅克隆引用否则应对属性值进行深度克隆
* </p>
* <ul>
* <li>如果属性值是实体对象有独立生命周期则仅需浅克隆克隆引用</li>
* <li>如果属性值是值对象且其内部不包含实体对象有独立生命周期则仅需浅克隆克隆引用</li>
* <li>如果属性值是值对象且其内部包含实体对象有独立生命周期则应对其继续应用上述克隆规则</li>
* </ul>
*
* @return
*/

View File

@ -7,6 +7,7 @@
package org.datagear.management.domain;
import java.io.Serializable;
import java.sql.Connection;
import org.datagear.connection.ConnectionSource;
@ -20,9 +21,11 @@ import org.datagear.util.resource.ConnectionFactory;
* @author datagear@163.com
*
*/
public class SchemaConnectionFactory extends SchemaConnectionSupport implements ConnectionFactory
public class SchemaConnectionFactory extends SchemaConnectionSupport implements ConnectionFactory, Serializable
{
private ConnectionSource connectionSource;
private static final long serialVersionUID = 1L;
private transient ConnectionSource connectionSource;
private Schema schema;

View File

@ -135,6 +135,12 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
/**
* 获取实体
* <p>
* 此方法先从缓存中获取实体如果没有则调用{@linkplain #getByIdFromDB(Object, Map)}从底层数据库获取
* </p>
* <p>
* 注意在调用此方法获取实体后应重新设置其引用的实体对象属性值以保证它们是最新的
* </p>
*
* @param id
* @param params
@ -227,7 +233,7 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
/**
* 是否开启缓存
* <p>
* 子类应注意是否需要重写{@linkplain #cacheCloneValue(Entity)}方法
* 子类应注意是否需要重写{@linkplain #cacheCloneEntity(Entity)}方法
* </p>
*
* @return
@ -238,9 +244,12 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
}
/**
* 拷贝缓存值
* 克隆缓存实体
* <p>
* 当从缓存中取出对象时{@linkplain #cacheGet(Object)}将对象放入缓存时{@linkplain #cachePut(Object, Entity)}进行拷贝
* 参考{@linkplain #cacheGet(Object)}{@linkplain #cachePut(Object, Entity)}{@linkplain #cachePutQueryResult(List)}
* </p>
* <p>
* 对于无序列化缓存比如进程内缓存应遵循{@linkplain CloneableEntity#clone()}规则对于序列化缓存则可直接返回原实体
* </p>
* <p>
* 此方法默认是现是如果{@code value}{@linkplain CloneableEntity}则返回{@linkplain CloneableEntity#clone()}否则返回原对象
@ -250,7 +259,7 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
* @return
*/
@SuppressWarnings("unchecked")
protected T cacheCloneValue(T value)
protected T cacheCloneEntity(T value)
{
if (value instanceof CloneableEntity)
return (T) ((CloneableEntity) value).clone();
@ -269,6 +278,15 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
return id;
}
/**
* 从缓存中读取实体
* <p>
* 此方法将使用{@linkplain #cacheCloneEntity(Entity)}返回克隆后的实体对象
* </p>
*
* @param id
* @return
*/
protected ValueWrapper cacheGet(ID id)
{
if (!cacheEnabled())
@ -283,22 +301,39 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
T value = (T) valueWrapper.get();
if (value != null)
value = cacheCloneValue(value);
value = cacheCloneEntity(value);
return new SimpleValueWrapper(value);
}
/**
* 将实体存入缓存
* <p>
* 此方法将使用{@linkplain #cacheCloneEntity(Entity)}缓存克隆后的实体对象
* </p>
*
* @param id
* @param value
*/
protected void cachePut(ID id, T value)
{
if (!cacheEnabled())
return;
if (value != null)
value = cacheCloneValue(value);
value = cacheCloneEntity(value);
cachePut(getCache(), toCacheKey(id), value);
}
/**
* 将实体存入缓存
* <p>
* 此方法将使用{@linkplain #cacheCloneEntity(Entity)}缓存克隆后的实体对象
* </p>
*
* @param values
*/
protected void cachePutQueryResult(List<T> values)
{
if (!cacheEnabled())
@ -312,7 +347,7 @@ public abstract class AbstractMybatisEntityService<ID, T extends Entity<ID>> ext
if (value != null)
{
value = cacheCloneValue(value);
value = cacheCloneEntity(value);
cachePut(getCache(), toCacheKey(value.getId()), value);
}
}

View File

@ -564,6 +564,8 @@ public class HtmlChartWidgetEntityServiceImpl
protected static class IdDataSet extends AbstractIdentifiable implements DataSet
{
private static final long serialVersionUID = 1L;
public IdDataSet()
{
super();

View File

@ -293,6 +293,8 @@ public class AbstractChartPluginAwareController extends AbstractDataAnalysisCont
*/
public static class ChartDataSetViewObj extends ChartDataSet
{
private static final long serialVersionUID = 1L;
public ChartDataSetViewObj()
{
super();