You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2016/03/22 15:17:29 UTC
svn commit: r1736195 - in /qpid/java/trunk:
broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/
broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/
broker-plugins/management-http/src/main/java/resour...
Author: lquack
Date: Tue Mar 22 14:17:28 2016
New Revision: 1736195
URL: http://svn.apache.org/viewvc?rev=1736195&view=rev
Log:
QPID-7112: [Java Broker] Add UI for CloudFoundryDashboardManagementGroupProvider
Added:
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/add.html
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/show.html
- copied, changed from r1735943, qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/add.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/show.js
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProvider.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/authenticationprovider/oauth2/add.html
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/oauth2/add.js
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/oauth2/OAuth2AuthenticationProvider.java Tue Mar 22 14:17:28 2016
@@ -44,13 +44,13 @@ public interface OAuth2AuthenticationPro
@ManagedAttribute( description = "Redirect URI to obtain authorization code grant", mandatory = true, defaultValue = "${this:defaultAuthorizationEndpointURI}")
URI getAuthorizationEndpointURI();
- @ManagedAttribute( description = "Token endpoint URI", mandatory = true, defaultValue = "${this:defaultTokenEndpointURI}" )
+ @ManagedAttribute( description = "Token endpoint URI to exchange an authorization code grant for an access token", mandatory = true, defaultValue = "${this:defaultTokenEndpointURI}" )
URI getTokenEndpointURI();
@ManagedAttribute( description = "Whether to use basic authentication when accessing the token endpoint", defaultValue = "false" )
boolean getTokenEndpointNeedsAuth();
- @ManagedAttribute( description = "Identity resolver endpoint URI", mandatory = true, defaultValue = "${this:defaultIdentityResolverEndpointURI}" )
+ @ManagedAttribute( description = "Identity resolver endpoint URI to get user information associated with a given access token", mandatory = true, defaultValue = "${this:defaultIdentityResolverEndpointURI}" )
URI getIdentityResolverEndpointURI();
@ManagedAttribute( description = "The type of the IdentityResolver", mandatory = true,
@@ -66,10 +66,10 @@ public interface OAuth2AuthenticationPro
@ManagedAttribute( description = "Client secret to identify qpid to the OAuth endpoints", mandatory = true, secure = true )
String getClientSecret();
- @ManagedAttribute( description = "The OAuth access token scope passed to the authorization endpoint", defaultValue = "${this:defaultScope}")
+ @ManagedAttribute( description = "The OAuth2 access token scope passed to the authorization endpoint", defaultValue = "${this:defaultScope}")
String getScope();
- @ManagedAttribute( description = "TrustStore to use when contacting OAuth endpoints" )
+ @ManagedAttribute( description = "TrustStore to use when contacting OAuth2 endpoints" )
TrustStore getTrustStore();
@ManagedAttribute( defaultValue = "[ \"XOAUTH2\" ]")
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProvider.java?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProvider.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProvider.java Tue Mar 22 14:17:28 2016
@@ -42,13 +42,13 @@ public interface CloudFoundryDashboardMa
@ManagedContextDefault(name = QPID_GROUPPROVIDER_CLOUDFOUNDRY_READ_TIMEOUT)
int DEFAULT_QPID_GROUPPROVIDER_CLOUDFOUNDRY_READ_TIMEOUT = 60000;
- @ManagedAttribute( mandatory = true )
+ @ManagedAttribute( description = "The CloudFoundry dashboard SSO base URI. The API version and service instance information will be appended by this GroupProvider.", mandatory = true )
URI getCloudFoundryEndpointURI();
- @ManagedAttribute()
+ @ManagedAttribute( description = "The TrustStore that contains the CA certificate that signed the CloudFoundry endpoint." )
TrustStore getTrustStore();
- @ManagedAttribute( mandatory = true )
+ @ManagedAttribute( description = "A service instance id to qpid management group mapping. If the CloudFoundry endpoint grants a user permission to manage a service instance the user will be associated with the corresponding management group.", mandatory = true )
Map<String, String> getServiceToManagementGroupMapping();
@DerivedAttribute
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/cloudfoundry/CloudFoundryDashboardManagementGroupProviderImpl.java Tue Mar 22 14:17:28 2016
@@ -42,6 +42,8 @@ import java.util.Set;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,6 +53,8 @@ import org.apache.qpid.server.model.Brok
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
import org.apache.qpid.server.model.TrustStore;
import org.apache.qpid.server.security.auth.manager.oauth2.OAuth2UserPrincipal;
import org.apache.qpid.server.security.group.GroupPrincipal;
@@ -112,6 +116,7 @@ public class CloudFoundryDashboardManage
super.validateChange(proxyForValidation, changedAttributes);
final CloudFoundryDashboardManagementGroupProvider<?> validationProxy = (CloudFoundryDashboardManagementGroupProvider<?>) proxyForValidation;
validateSecureEndpoint(validationProxy);
+ validateMapping(validationProxy);
}
@Override
@@ -119,6 +124,7 @@ public class CloudFoundryDashboardManage
{
super.onValidate();
validateSecureEndpoint(this);
+ validateMapping(this);
}
private void validateSecureEndpoint(final CloudFoundryDashboardManagementGroupProvider<?> provider)
@@ -130,6 +136,22 @@ public class CloudFoundryDashboardManage
}
}
+ private void validateMapping(final CloudFoundryDashboardManagementGroupProvider<?> provider)
+ {
+ for(Map.Entry<String, String> entry : provider.getServiceToManagementGroupMapping().entrySet())
+ {
+ if ("".equals(entry.getKey()))
+ {
+ throw new IllegalConfigurationException("Service instance id may not be empty");
+ }
+ if ("".equals(entry.getValue()))
+ {
+ throw new IllegalConfigurationException("Group name for service id '"
+ + entry.getKey() + "' may not be empty");
+ }
+ }
+ }
+
@Override
public Set<Principal> getGroupPrincipalsForUser(Principal userPrincipal)
{
@@ -228,6 +250,20 @@ public class CloudFoundryDashboardManage
}
}
+ @StateTransition( currentState = { State.UNINITIALIZED, State.QUIESCED, State.ERRORED }, desiredState = State.ACTIVE )
+ private ListenableFuture<Void> activate()
+ {
+ setState(State.ACTIVE);
+ return Futures.immediateFuture(null);
+ }
+
+ @StateTransition(currentState = {State.ACTIVE}, desiredState = State.DELETED)
+ private ListenableFuture<Void> doDelete()
+ {
+ deleted();
+ return Futures.immediateFuture(null);
+ }
+
@Override
public URI getCloudFoundryEndpointURI()
{
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/authenticationprovider/oauth2/add.html
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/authenticationprovider/oauth2/add.html?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/authenticationprovider/oauth2/add.html (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/authenticationprovider/oauth2/add.html Tue Mar 22 14:17:28 2016
@@ -118,14 +118,16 @@
</div>
<div class="clear">
<div class="formLabel-labelCell tableContainer-labelCell">Trust Store:</div>
- <div class="formLabel-controlCell tableContainer-valueCell">
- <input type="text" id="addAuthenticationProvider.trustStore"
- data-dojo-type="dijit/form/ValidationTextBox"
- data-dojo-props="
- name: 'trustStore',
- placeHolder: 'trust store',
- promptMessage: 'Enter the name of the trust store to use for the above endpoints.',
- title: 'Enter the name of the trust store to use for the above endpoints'"/>
+ <div class="tableContainer-valueCell formLabel-controlCell">
+ <select class="trustStore" data-dojo-type="dijit/form/FilteringSelect"
+ data-dojo-props="
+ required: false,
+ name: 'trustStore',
+ placeHolder: 'Select trust store',
+ promptMessage: 'Select the trust store containing the certificate of the CA that signed the endpoints\' certificates',
+ title: 'Select trust store for secure connection',
+ searchAttr: 'name'">
+ </select>
</div>
</div>
<div class="clear">
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html Tue Mar 22 14:17:28 2016
@@ -17,7 +17,7 @@
~ under the License.
-->
<div class="contextEditor">
- <div class="contextGrid">
+ <div class="dialogGrid">
<div class="grid"></div>
</div>
<div>
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/css/common.css Tue Mar 22 14:17:28 2016
@@ -323,7 +323,7 @@ div .messages {
margin-right:5px;
}
-.contextGrid
+.dialogGrid
{
width:100%;
max-height: 140px;
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/add.html
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/add.html?rev=1736195&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/add.html (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/add.html Tue Mar 22 14:17:28 2016
@@ -0,0 +1,63 @@
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+ -->
+<div>
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">CloudFoundry Endpoint URL*:</div>
+ <div class="formLabel-controlCell tableContainer-valueCell">
+ <input type="text" class="cloudFoundryEndpointURI"
+ data-dojo-type="dijit/form/ValidationTextBox"
+ data-dojo-props="
+ name: 'cloudFoundryEndpointURI',
+ required: true,
+ placeHolder: 'URL to CloudFoundry endpoint',
+ title: 'Enter the URL to the CloudFoundry endpoint',
+ promptMessage: 'Enter the URL to the CloudFoundry endpoint'"/>
+ </div>
+ </div>
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">Trust Store:</div>
+ <div class="tableContainer-valueCell formLabel-controlCell">
+ <select class="trustStore" data-dojo-type="dijit/form/FilteringSelect"
+ data-dojo-props="
+ required: false,
+ name: 'trustStore',
+ placeHolder: 'Select trust store',
+ promptMessage: 'Select the trust store containing the certificate of the CA that signed the endpoint\'s certificate',
+ title: 'Select trust store for secure connection',
+ searchAttr: 'name'">
+ </select>
+ </div>
+ </div>
+ <div class="clear">
+ <div class="formLabel-labelCell tableContainer-labelCell">Service To Group Mapping*:</div>
+ <div class="tableContainer-valueCell clear">
+ <div class="dialogGrid">
+ <div class="serviceToManagementGroupMapping"></div>
+ </div>
+
+ <div>
+ <button data-dojo-type="dijit/form/Button" class="addButton" type="button" data-dojo-props="title:'Add new entry'">+</button>
+ <button data-dojo-type="dijit/form/Button" class="deleteButton" type="button" data-dojo-props="title:'Remove selected entry'">-</button>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+</div>
Copied: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/show.html (from r1735943, qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/show.html?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/show.html&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html&r1=1735943&r2=1736195&rev=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/common/ContextVariablesEditor.html (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/groupprovider/cloudfoundrydashboardmanagement/show.html Tue Mar 22 14:17:28 2016
@@ -16,20 +16,18 @@
~ specific language governing permissions and limitations
~ under the License.
-->
-<div class="contextEditor">
- <div class="contextGrid">
- <div class="grid"></div>
+<div>
+ <div class="clear">
+ <div class="formLabel-labelCell">CloudFoundry endpoint URL:</div>
+ <div class="cloudFoundryEndpointURI formValue-valueCell"></div>
</div>
- <div>
- <button data-dojo-type="dijit/form/Button" class="addButton" type="button" data-dojo-props="title:'Add new entry'">+</button>
- <button data-dojo-type="dijit/form/Button" class="deleteButton" type="button" data-dojo-props="title:'Remove selected entry'">-</button>
- <span class="dijit dijitReset dijitInline">
- <label>Show</label>
- <select class="filter" name="filter" data-dojo-type="dijit/form/Select">
- <option value="*" selected="selected">All</option>
- <option value="false">Local</option>
- <option value="true" >Inherited</option>
- </select>
- </span>
+ <div class="clear">
+ <div class="formLabel-labelCell">Trust Store:</div>
+ <div class="trustStore formValue-valueCell"></div>
</div>
-</div>
\ No newline at end of file
+ <div class="clear">
+ <div class="formLabel-labelCell">Service to Management Group Mapping:</div>
+ <div class="formValue-valueCell"><table class="serviceToManagementGroupMappingTable"></table></div>
+ </div>
+ <div class="clear"></div>
+</div>
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js Tue Mar 22 14:17:28 2016
@@ -547,17 +547,17 @@ define(["dojo/_base/xhr",
for(var i in formWidgets)
{
var widget = formWidgets[i];
- var value = widget.value;
- var propName = widget.name;
- if (propName && (widget.required || value ))
+ var value = widget.get("value");
+ var propName = widget.get("name");
+ if (propName && (widget.get("required") || value ))
{
- if (widget.excluded)
+ if (widget.get("excluded"))
{
continue;
}
if (widget instanceof dijit.form.RadioButton)
{
- if (widget.checked)
+ if (widget.get("checked"))
{
var currentValue = values[propName];
if (currentValue)
@@ -579,7 +579,7 @@ define(["dojo/_base/xhr",
}
else if (widget instanceof dijit.form.CheckBox)
{
- values[ propName ] = widget.checked;
+ values[ propName ] = widget.get("checked");
}
else
{
@@ -636,6 +636,21 @@ define(["dojo/_base/xhr",
return new Memory({ data: typeData });
}
+ util.makeInstanceStore = function(management, parentCategory, category, callback)
+ {
+ var obj = {type:category.toLowerCase(), parent: {type: parentCategory.toLowerCase()}};
+ management.load(obj).then(function(data)
+ {
+ var items = [];
+ for (var i=0; i< data.length; i++)
+ {
+ items.push( {id: data[i].name, name: data[i].name} );
+ }
+ var store = new Memory({ data: items });
+ callback(store);
+ });
+ };
+
util.setMultiSelectOptions = function(multiSelectWidget, options)
{
util.addMultiSelectOptions(multiSelectWidget, options, true);
@@ -740,6 +755,39 @@ define(["dojo/_base/xhr",
util.xhrErrorHandler);
}
+ util.initialiseFields = function(data, containerNode, metadata, category, type) {
+ var attributes = metadata.getMetaData(category, type).attributes;
+
+ var widgets = registry.findWidgets(containerNode);
+ array.forEach(widgets, function(item) {
+ var widgetName = item.name;
+ if (widgetName in attributes)
+ {
+ var attribute = attributes[widgetName];
+ var value = data[widgetName];
+ if (value)
+ {
+ if (item instanceof dijit.form.CheckBox) {
+ item.set("checked", value);
+ }
+ else
+ {
+ var copy = lang.clone(value);
+ if (attribute.secure && /^\*+/.test(value))
+ {
+ item.set("required", false);
+ item.set("placeHolder", copy);
+ }
+ else
+ {
+ item.set("value", copy);
+ }
+ }
+ }
+ }
+ });
+ }
+
util.abortReaderSafely = function(reader)
{
if (reader && reader.readyState > 0)
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/GroupProvider.js Tue Mar 22 14:17:28 2016
@@ -134,6 +134,7 @@ define(["dojo/parser",
GroupProvider.prototype.editGroupProvider = function()
{
var management = this.controller.management;
+ var that = this;
management.load(this.modelObj,{ actuals: true }).then(
function(actualData)
{
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js Tue Mar 22 14:17:28 2016
@@ -25,7 +25,8 @@ define([
"dojo/parser",
"dojo/_base/array",
"dojo/_base/event",
- 'dojo/json',
+ "dojo/_base/lang",
+ "dojo/json",
"qpid/common/util",
"dojo/text!addGroupProvider.html",
"dojo/store/Memory",
@@ -42,7 +43,7 @@ define([
"dijit/layout/ContentPane",
"dojox/layout/TableContainer",
"dojo/domReady!"],
- function (dom, construct, registry, parser, array, event, json, util, template)
+ function (dom, construct, registry, parser, array, event, lang, json, util, template)
{
var addGroupProvider =
@@ -75,9 +76,14 @@ define([
{
this.management = management;
this.modelObj = modelObj;
- this.initialData = actualData;
+ this.initialData = lang.clone(actualData);
this.groupProviderForm.reset();
+ var supportedTypes = management.metadata.getTypesForCategory("GroupProvider");
+ supportedTypes.sort();
+ var supportedTypesStore = util.makeTypeStore(supportedTypes);
+ this.groupProviderType.set("store", supportedTypesStore);
+
if (actualData)
{
this._destroyTypeFields(this.containerNode);
@@ -86,10 +92,6 @@ define([
this.groupProviderName.set("disabled", actualData == null ? false : true);
this.groupProviderType.set("disabled", actualData == null ? false : true);
this.dialog.set("title", actualData == null ? "Add Group Provider" : "Edit Group Provider - " + actualData.name);
- var supportedTypes = management.metadata.getTypesForCategory("GroupProvider");
- supportedTypes.sort();
- var supportedTypesStore = util.makeTypeStore(supportedTypes);
- this.groupProviderType.set("store", supportedTypesStore);
this.dialog.show();
},
_initFields:function(data)
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js Tue Mar 22 14:17:28 2016
@@ -94,7 +94,14 @@ define(["dojo/_base/lang",
}
this.storeName.set("disabled", effectiveData == null ? false : true);
this.storeType.set("disabled", effectiveData == null ? false : true);
- this.dialog.set("title", effectiveData == null ? "Add Key Store" : "Edit Key Store - " + effectiveData.name)
+ if (effectiveData == null)
+ {
+ this.dialog.set("title", "Add " + this.category);
+ }
+ else
+ {
+ this.dialog.set("title", "Edit " + this.category + " - " + effectiveData.name);
+ }
this.dialog.show();
},
_initFields:function(data)
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/oauth2/add.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/oauth2/add.js?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/oauth2/add.js (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/oauth2/add.js Tue Mar 22 14:17:28 2016
@@ -30,39 +30,24 @@ define(["dojo/dom",
{
var addAuthenticationProvier =
{
- show: function(data)
- {
+ show: function (data) {
var that = this;
- this.metadata = data.metadata;
- this.containerNode = data.containerNode;
- data.containerNode.innerHTML = template;
- return parser.parse(this.containerNode).then(function(instances)
- {
- var identityResolverType = registry.byId("addAuthenticationProvider.identityResolverType");
- var validValues = that.metadata.getMetaData(data.category, data.type).attributes.identityResolverType.validValues;
- var validValueStore = util.makeTypeStore(validValues);
- identityResolverType.set("store", validValueStore);
+ util.parse(data.containerNode, template, function(){that._postParse(data);});
+ },
+ _postParse: function(data)
+ {
+ var identityResolverType = registry.byId("addAuthenticationProvider.identityResolverType");
+ var validValues = data.metadata.getMetaData(data.category, data.type).attributes.identityResolverType.validValues;
+ var validValueStore = util.makeTypeStore(validValues);
+ identityResolverType.set("store", validValueStore);
+ util.makeInstanceStore(data.parent.management, "Broker", "TrustStore", function(trustStoresStore)
+ {
+ var trustStore = registry.byNode(query(".trustStore", data.containerNode)[0]);
+ trustStore.set("store", trustStoresStore);
if (data.data)
{
- var authorizationEndpointURI = registry.byId("addAuthenticationProvider.authorizationEndpointURI");
- authorizationEndpointURI.set("value", data.data.authorizationEndpointURI);
- var tokenEndpointURI = registry.byId("addAuthenticationProvider.tokenEndpointURI");
- tokenEndpointURI.set("value", data.data.tokenEndpointURI);
- var tokenEndpointNeedsAuth = registry.byId("addAuthenticationProvider.tokenEndpointNeedsAuth");
- tokenEndpointNeedsAuth.set("value", data.data.tokenEndpointNeedsAuth);
- var identityResolverEndpointURI = registry.byId("addAuthenticationProvider.identityResolverEndpointURI");
- identityResolverEndpointURI.set("value", data.data.identityResolverEndpointURI);
- identityResolverType.set("value", data.data.identityResolverType);
- var clientId = registry.byId("addAuthenticationProvider.clientId");
- clientId.set("value", data.data.clientId);
- var clientSecret = registry.byId("addAuthenticationProvider.clientSecret");
- clientSecret.set("value", data.data.clientSecret);
- var scope = registry.byId("addAuthenticationProvider.scope");
- scope.set("value", data.data.scope);
- var postLogoutURI = registry.byId("addAuthenticationProvider.postLogoutURI");
- postLogoutURI.set("value", data.data.postLogoutURI);
-
+ util.initialiseFields(data.data, data.containerNode, data.metadata, "AuthenticationProvider", "OAuth2");
}
});
}
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/add.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/add.js?rev=1736195&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/add.js (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/add.js Tue Mar 22 14:17:28 2016
@@ -0,0 +1,197 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define(["dojo/dom",
+ "dojo/query",
+ "dojo/_base/array",
+ "dojo/_base/connect",
+ "dojo/_base/lang",
+ "dojo/store/Memory",
+ "dijit/registry",
+ "qpid/common/util",
+ "dojo/text!groupprovider/cloudfoundrydashboardmanagement/add.html",
+ "dijit/form/FilteringSelect",
+ "dojo/domReady!"],
+ function (dom, query, array, connect, lang, Memory, registry, util, template) {
+
+ return {
+ _nextGridItemId : 0,
+
+ show: function (data) {
+ var that = this;
+ this.containerNode = data.containerNode;
+ util.parse(data.containerNode, template, function(){that._postParse(data);});
+ },
+
+ _postParse: function(data)
+ {
+ var that = this;
+ util.makeInstanceStore(data.parent.management, "Broker", "TrustStore", function(trustStoresStore)
+ {
+ var trustStore = registry.byNode(query(".trustStore", data.containerNode)[0]);
+ trustStore.set("store", trustStoresStore);
+ if (data.data)
+ {
+ util.initialiseFields(data.data, data.containerNode, data.parent.management.metadata, "GroupProvider", "CloudFoundryDashboardManagement");
+ }
+ });
+
+ this._setupGrid();
+ if (data.data && data.data.serviceToManagementGroupMapping)
+ {
+ this._populateGrid(data.data.serviceToManagementGroupMapping);
+ }
+ },
+
+ _setupGrid: function() {
+ var that = this;
+ var gridNode = query(".serviceToManagementGroupMapping", this.containerNode)[0];
+ var addButtonNode = query(".addButton", this.containerNode)[0];
+ var deleteButtonNode = query(".deleteButton", this.containerNode)[0];
+ var addButton = registry.byNode(addButtonNode);
+ var deleteButton = registry.byNode(deleteButtonNode);
+ var layout = [[
+ {name: "Service Instance Id", field: "serviceInstanceId", width: "50%", editable: true},
+ {name: 'Group Name', field: 'groupName', width: '50%', editable: true}
+ ]];
+ var data = [];
+ var objectStore = new dojo.data.ObjectStore({objectStore: new Memory({data: data, idProperty: "id"})});
+ var grid = new dojox.grid.EnhancedGrid({
+ selectionMode: "multiple",
+ store: objectStore,
+ singleClickEdit: true,
+ structure: layout,
+ autoHeight: true,
+ sortFields: [{attribute: 'serviceInstanceId', descending: false}],
+ plugins: {indirectSelection: true}
+ }, gridNode);
+
+ grid.name = "serviceToManagementGroupMapping";
+ this._grid = grid;
+
+ var toggleGridButtons = function (index) {
+ var data = grid.selection.getSelected();
+ deleteButton.set("disabled", !data || data.length == 0);
+ };
+
+ connect.connect(grid.selection, 'onSelected', toggleGridButtons);
+ connect.connect(grid.selection, 'onDeselected', toggleGridButtons);
+
+ deleteButton.set("disabled", true);
+ addButton.on("click", function (event) {
+ that._newItem();
+ });
+ deleteButton.on("click", function (event) {
+ that._deleteSelected();
+ });
+ grid._getValueAttr = function() {
+ var value = {};
+ that._grid.store.fetch({
+ onComplete:function(items,request)
+ {
+ array.forEach(items, function(item)
+ {
+ value[item.serviceInstanceId] = item.groupName;
+ });
+ }
+ });
+ return value;
+ };
+
+ grid.startup();
+ },
+
+ _populateGrid: function(serviceToManagementGroupMapping) {
+ var that = this;
+ // delete previous store data
+ this._grid.store.fetch({
+ onComplete:function(items,request)
+ {
+ if(items.length)
+ {
+ array.forEach(items, function(item)
+ {
+ that._grid.store.deleteItem(item);
+ });
+ }
+ }
+ });
+
+ // add new data into grid store
+ this._nextGridItemId = 0;
+ for(var serviceInstanceId in serviceToManagementGroupMapping)
+ {
+ var groupName = serviceToManagementGroupMapping[serviceInstanceId];
+ var storeItem = {
+ id: this._nextId(),
+ serviceInstanceId: serviceInstanceId,
+ groupName: groupName
+ };
+ this._grid.store.newItem(storeItem);
+ }
+ this._grid.store.save();
+ },
+
+ _nextId: function()
+ {
+ this._nextGridItemId = this._nextGridItemId + 1;
+ return this._nextGridItemId;
+ },
+
+ _newItem: function()
+ {
+ var newItem = { id: this._nextId(), serviceInstanceId: "", groupName: "" };
+ var grid = this._grid;
+ grid.store.newItem(newItem);
+ grid.store.save();
+ grid.store.fetch(
+ {
+ onComplete:function(items, request)
+ {
+ var rowIndex = items.length - 1;
+ window.setTimeout(function()
+ {
+ grid.focus.setFocusIndex(rowIndex, 1 );
+ }, 10);
+ }
+ });
+ },
+
+ _deleteSelected: function()
+ {
+ var that = this;
+ var grid = this._grid;
+ var data = grid.selection.getSelected();
+ if(data.length > 0)
+ {
+ array.forEach(data, function(selectedItem) {
+ if (selectedItem !== null)
+ {
+ grid.store.deleteItem(selectedItem);
+ }
+ });
+ grid.store.save();
+ grid.selection.deselectAll();
+ }
+ }
+
+ };
+ }
+);
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/show.js
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/show.js?rev=1736195&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/show.js (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/cloudfoundrydashboardmanagement/show.js Tue Mar 22 14:17:28 2016
@@ -0,0 +1,55 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define(["qpid/common/util",
+ "dojo/query",
+ "dojo/_base/lang",
+ "dojox/html/entities",
+ "dojo/domReady!"],
+ function (util, query, lang, entities)
+ {
+ var fieldNames = ["cloudFoundryEndpointURI", "trustStore", "serviceToManagementGroupMapping"];
+
+ function GroupProvider(params)
+ {
+ this.containerNode = params.containerNode;
+ util.buildUI(params.containerNode, params.parent, "groupprovider/cloudfoundrydashboardmanagement/show.html", fieldNames, this);
+ params.parent.editButton.set("disabled", false);
+ }
+
+ GroupProvider.prototype.update = function(restData)
+ {
+ var data = restData || {};
+ if (data.serviceToManagementGroupMapping)
+ {
+ var tableContent = "";
+ for (var serviceInstanceId in data.serviceToManagementGroupMapping)
+ {
+ tableContent += "<tr><td>" + entities.encode(serviceInstanceId) + "</td><td>: " + entities.encode(data.serviceToManagementGroupMapping[serviceInstanceId]) + "</td></tr>\n";
+ }
+ var table = query(".serviceToManagementGroupMappingTable", this.containerNode)[0];
+ table.innerHTML = tableContent;
+ }
+ util.updateUI(data, fieldNames, this);
+ }
+
+ return GroupProvider;
+ }
+);
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html?rev=1736195&r1=1736194&r2=1736195&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/showGroupProvider.html Tue Mar 22 14:17:28 2016
@@ -37,8 +37,8 @@
<div class="providerDetails"></div>
<br/>
<div class="dijitDialogPaneActionBar">
- <input class="deleteGroupProviderButton" type="button" value="Delete" label="Delete" data-dojo-type="dijit.form.Button" />
<input class="editGroupProviderButton" type="button" value="Edit" label="Edit" data-dojo-type="dijit.form.Button" data-dojo-props="disabled:true"/>
+ <input class="deleteGroupProviderButton" type="button" value="Delete" label="Delete" data-dojo-type="dijit.form.Button" />
</div>
</div>
</div>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org