Improve UI handling of catalog item parameters.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f16cbe0b Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f16cbe0b Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f16cbe0b Branch: refs/heads/master Commit: f16cbe0b779af13e7522fdfcb1b2a05b53aee0ca Parents: 5a69cd6 Author: Svetoslav Neykov <[email protected]> Authored: Wed Nov 4 13:48:47 2015 +0200 Committer: Svetoslav Neykov <[email protected]> Committed: Thu Nov 5 15:23:39 2015 +0200 ---------------------------------------------------------------------- .../brooklyn/core/objs/BasicSpecParameter.java | 6 ++--- .../objs/BasicSpecParameterFromClassTest.java | 27 ++++++++++++++++---- .../assets/js/view/application-add-wizard.js | 14 ++++++---- .../app-add-wizard/required-config-entry.html | 2 +- .../rest/transform/CatalogTransformer.java | 7 ++--- 5 files changed, 39 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f16cbe0b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java index 5707b8f..e882d79 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/BasicSpecParameter.java @@ -264,14 +264,14 @@ public class BasicSpecParameter<T> implements SpecParameter<T>{ private static final class WeightedParameterComparator implements Comparator<WeightedParameter> { @Override public int compare(WeightedParameter o1, WeightedParameter o2) { - if (o1.getWeight() == o2.getWeight()) { - return 0; + if (o1.getWeight() == null && o2.getWeight() == null) { + return o1.getInput().getLabel().compareTo(o2.getInput().getLabel()); } else if (o1.getWeight() == null) { return 1; } else if (o2.getWeight() == null) { return -1; } else { - return Double.compare(o1.getWeight(), o2.getWeight()); + return -Double.compare(o1.getWeight(), o2.getWeight()); } } } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f16cbe0b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromClassTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromClassTest.java b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromClassTest.java index b0f71a0..49cb2d6 100644 --- a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromClassTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromClassTest.java @@ -56,7 +56,16 @@ public class BasicSpecParameterFromClassTest { @CatalogConfig(label="Predicate Key", priority=1) ConfigKey<Predicate<String>> PREDICATE_KEY = ConfigKeys.newConfigKey(new TypeToken<Predicate<String>>() {}, "predicate_key"); - ConfigKey<String> UNPINNNED_KEY = ConfigKeys.newStringConfigKey("unpinned_key"); + @SuppressWarnings("serial") + @CatalogConfig(label="Hidden 1 Key", priority=-1) + ConfigKey<Predicate<String>> HIDDEN1_KEY = ConfigKeys.newConfigKey(new TypeToken<Predicate<String>>() {}, "hidden1_key"); + + @SuppressWarnings("serial") + @CatalogConfig(label="Hidden 2 Key", priority=-2) + ConfigKey<Predicate<String>> HIDDEN2_KEY = ConfigKeys.newConfigKey(new TypeToken<Predicate<String>>() {}, "hidden2_key"); + + ConfigKey<String> UNPINNNED2_KEY = ConfigKeys.newStringConfigKey("unpinned2_key"); + ConfigKey<String> UNPINNNED1_KEY = ConfigKeys.newStringConfigKey("unpinned1_key"); } @ImplementedBy(ConfigInImplParameterTestEntityImpl.class) @@ -68,11 +77,19 @@ public class BasicSpecParameterFromClassTest { @Test public void testFullDefinition() { List<SpecParameter<?>> inputs = BasicSpecParameter.fromClass(mgmt, SpecParameterTestEntity.class); - assertEquals(inputs.size(), 4); - assertInput(inputs.get(0), "Predicate Key", true, SpecParameterTestEntity.PREDICATE_KEY); + assertEquals(inputs.size(), 7); + assertInput(inputs.get(0), "String Key", true, SpecParameterTestEntity.STRING_KEY); assertInput(inputs.get(1), "Integer Key", true, SpecParameterTestEntity.INTEGER_KEY); - assertInput(inputs.get(2), "String Key", true, SpecParameterTestEntity.STRING_KEY); - assertInput(inputs.get(3), "unpinned_key", false, SpecParameterTestEntity.UNPINNNED_KEY); + assertInput(inputs.get(2), "Predicate Key", true, SpecParameterTestEntity.PREDICATE_KEY); + assertInput(inputs.get(3), "Hidden 1 Key", true, SpecParameterTestEntity.HIDDEN1_KEY); + assertInput(inputs.get(4), "Hidden 2 Key", true, SpecParameterTestEntity.HIDDEN2_KEY); + assertInput(inputs.get(5), "unpinned1_key", false, SpecParameterTestEntity.UNPINNNED1_KEY); + assertInput(inputs.get(6), "unpinned2_key", false, SpecParameterTestEntity.UNPINNNED2_KEY); + } + + @Test + public void testDebug() throws ClassNotFoundException { + System.out.println(BasicSpecParameter.fromClass(mgmt, Class.forName("org.apache.brooklyn.entity.stock.BasicApplication"))); } @Test http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f16cbe0b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js ---------------------------------------------------------------------- diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js index 850ccf0..77710c2 100644 --- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js +++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js @@ -517,7 +517,10 @@ define([ getConfigMap:function (root) { var map = {} $('.app-add-wizard-config-entry',root).each( function (index,elt) { - map[$('#key',elt).val()] = getConvertedConfigValue($('#value',elt).val()) + var value = getConvertedConfigValue($('#value',elt).val()); + if (value !== null) { + map[$('#key',elt).val()] = value; + } }) return map; }, @@ -776,7 +779,6 @@ define([ // (others might be included in future with an "expand" option, or priority option) }) } - configs = configs.sort( function(a,b) { return b.priority - a.priority } ) for (var c in configs) { that.$('.config-table').append(configs[c].html) } @@ -786,9 +788,11 @@ define([ getConfigMap:function() { var map = {}; $('.app-add-wizard-config-entry').each( function (index,elt) { - map[$('#key',elt).val()] = - $('#checkboxValue',elt).length ? $('#checkboxValue',elt).is(':checked') : - getConvertedConfigValue($('#value',elt).val()) + var value = $('#checkboxValue',elt).length ? $('#checkboxValue',elt).is(':checked') : + getConvertedConfigValue($('#value',elt).val()); + if (value !== null) { + map[$('#key',elt).val()] = value; + } }) return map; }, http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f16cbe0b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/required-config-entry.html ---------------------------------------------------------------------- diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/required-config-entry.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/required-config-entry.html index b802624..45c8770 100644 --- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/required-config-entry.html +++ b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/required-config-entry.html @@ -39,7 +39,7 @@ under the License. </select> <% } else { %> <input id="value" type="text" class="input-medium" name="value" value="<% - if (typeof data.defaultValue !== "undefined") { %><%= data.defaultValue %><% } + if (typeof data.defaultValue !== "undefined") { %><%- data.defaultValue %><% } %>" style="width: 250px"> <% } %> </td> http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f16cbe0b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java index 4d72cf8..58bc473 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java @@ -59,18 +59,19 @@ public class CatalogTransformer { private static final org.slf4j.Logger log = LoggerFactory.getLogger(CatalogTransformer.class); public static <T extends Entity> CatalogEntitySummary catalogEntitySummary(BrooklynRestResourceUtils b, CatalogItem<T,EntitySpec<? extends T>> item) { - Set<EntityConfigSummary> config = Sets.newTreeSet(SummaryComparators.nameComparator()); + Set<EntityConfigSummary> config = Sets.newLinkedHashSet(); Set<SensorSummary> sensors = Sets.newTreeSet(SummaryComparators.nameComparator()); Set<EffectorSummary> effectors = Sets.newTreeSet(SummaryComparators.nameComparator()); + for (SpecParameter<?> input: item.getParameters()) + config.add(EntityTransformer.entityConfigSummary(input)); + try { @SuppressWarnings({ "unchecked", "rawtypes" }) EntitySpec<?> spec = (EntitySpec<?>) b.getCatalog().createSpec((CatalogItem) item); EntityDynamicType typeMap = BrooklynTypes.getDefinedEntityType(spec.getType()); EntityType type = typeMap.getSnapshot(); - for (SpecParameter<?> input: item.getParameters()) - config.add(EntityTransformer.entityConfigSummary(input)); for (Sensor<?> x: type.getSensors()) sensors.add(SensorTransformer.sensorSummaryForCatalog(x)); for (Effector<?> x: type.getEffectors())
