You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/05/04 11:33:01 UTC
[57/60] [abbrv] ignite git commit: IGNITE-5146 Simplified generation
for user properties.
IGNITE-5146 Simplified generation for user properties.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6579197a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6579197a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6579197a
Branch: refs/heads/ignite-5075-cacheStart
Commit: 6579197a86d6c6a4421aa20af8dbc792c2f49e44
Parents: 8be6813
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Thu May 4 11:42:58 2017 +0700
Committer: Andrey Novikov <an...@gridgain.com>
Committed: Thu May 4 11:42:58 2017 +0700
----------------------------------------------------------------------
.../generator/Properties.service.js | 63 ++++++++++----------
1 file changed, 32 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6579197a/modules/web-console/frontend/app/modules/configuration/generator/Properties.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/Properties.service.js b/modules/web-console/frontend/app/modules/configuration/generator/Properties.service.js
index 8a6a471..882ac5b 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/Properties.service.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/Properties.service.js
@@ -24,54 +24,55 @@ export default class IgnitePropertiesGenerator {
_collectProperties(bean) {
const props = [];
- _.forEach(bean.arguments, (arg) => {
- switch (arg.clsName) {
- case 'BEAN':
- props.push(...this._collectProperties(arg.value));
-
- break;
- case 'PROPERTY':
- case 'PROPERTY_CHAR':
- case 'PROPERTY_INT':
- props.push(`${arg.value}=${arg.hint}`);
+ // Append properties for complex object.
+ const processBean = (bean) => {
+ const newProps = _.difference(this._collectProperties(bean), props);
- break;
- default:
- // No-op.
- }
- });
+ if (!_.isEmpty(newProps)) {
+ props.push(...newProps);
- _.forEach(bean.properties, (prop) => {
- switch (prop.clsName) {
- case 'DATA_SOURCE':
- props.push(...this._collectProperties(prop.value));
+ if (!_.isEmpty(_.last(props)))
props.push('');
+ }
+ };
- break;
- case 'BEAN':
- props.push(...this._collectProperties(prop.value));
-
- break;
+ // Append properties from item.
+ const processItem = (item) => {
+ switch (item.clsName) {
case 'PROPERTY':
case 'PROPERTY_CHAR':
case 'PROPERTY_INT':
- props.push(`${prop.value}=${prop.hint}`);
+ props.push(..._.difference([`${item.value}=${item.hint}`], props));
+
+ break;
+ case 'BEAN':
+ case 'DATA_SOURCE':
+ processBean(item.value);
break;
case 'ARRAY':
case 'COLLECTION':
- _.forEach(prop.items, (item) => {
- const itemLines = this._collectProperties(item);
+ _.forEach(item.items, processBean);
- if (_.intersection(props, itemLines).length !== itemLines.length)
- props.push(...this._collectProperties(item));
+ break;
+ case 'MAP':
+ // Generate properties for all objects in keys and values of map.
+ _.forEach(item.entries, (entry) => {
+ processBean(entry.name);
+ processBean(entry.value);
});
break;
default:
// No-op.
}
- });
+ };
+
+ // Generate properties for object arguments.
+ _.forEach(_.get(bean, 'arguments'), processItem);
+
+ // Generate properties for object properties.
+ _.forEach(_.get(bean, 'properties'), processItem);
return props;
}
@@ -84,7 +85,7 @@ export default class IgnitePropertiesGenerator {
const sb = new StringBuilder();
- sb.append(`# ${sb.generatedBy()}`);
+ sb.append(`# ${sb.generatedBy()}`).emptyLine();
_.forEach(lines, (line) => sb.append(line));