Author: lquack
Date: Mon Aug  8 15:57:24 2016
New Revision: 1755516

URL: http://svn.apache.org/viewvc?rev=1755516&view=rev
Log:
QPID-7352: [Java Broker] Add Principal origin information to serialization

Added:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/QpidPrincipal.java
      - copied, changed from r1755480, 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupManager.java
Removed:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupManager.java
Modified:
    
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceFactory.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/UserPreferencesImpl.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/preferences/PreferenceFactoryTest.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/PreferencesTest.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/TestPrincipalUtils.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/preferences/PreferencesRecovererTest.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceBrowserWidget.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceSaveDialogContent.js
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
    
qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestUserPreferenceHandlerTest.java
    
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/UserPreferencesRestTest.java

Modified: 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
 (original)
+++ 
qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/tuple/MapBinding.java
 Mon Aug  8 15:57:24 2016
@@ -28,6 +28,7 @@ import com.sleepycat.bind.tuple.TupleBin
 import com.sleepycat.bind.tuple.TupleInput;
 import com.sleepycat.bind.tuple.TupleOutput;
 
+import org.apache.qpid.server.model.ConfiguredObjectJacksonModule;
 import org.apache.qpid.server.store.StoreException;
 
 public class MapBinding extends TupleBinding<Map<String, Object>>
@@ -43,7 +44,7 @@ public class MapBinding extends TupleBin
     public Map<String, Object> entryToObject(final TupleInput input)
     {
         String json = input.readString();
-        ObjectMapper mapper = new ObjectMapper();
+        ObjectMapper mapper = ConfiguredObjectJacksonModule.newObjectMapper();
         try
         {
             Map<String, Object> value = mapper.readValue(json, Map.class);
@@ -62,7 +63,7 @@ public class MapBinding extends TupleBin
         try
         {
             StringWriter writer = new StringWriter();
-            final ObjectMapper objectMapper = new ObjectMapper();
+            final ObjectMapper objectMapper = 
ConfiguredObjectJacksonModule.newObjectMapper();
             objectMapper.writeValue(writer, map);
             output.writeString(writer.toString());
         }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
 Mon Aug  8 15:57:24 2016
@@ -1983,7 +1983,7 @@ public abstract class AbstractConfigured
                 {
                     if(value instanceof Collection || value instanceof Map)
                     {
-                        ObjectMapper mapper = new ObjectMapper();
+                        ObjectMapper mapper = 
ConfiguredObjectJacksonModule.newObjectMapper();
                         try(StringWriter stringWriter = new StringWriter())
                         {
                             mapper.writeValue(stringWriter, value);

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
 Mon Aug  8 15:57:24 2016
@@ -30,6 +30,7 @@ import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
+import java.security.Principal;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
@@ -52,6 +53,7 @@ import javax.xml.bind.DatatypeConverter;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.base.Defaults;
 
+import org.apache.qpid.server.model.preferences.GenericPrincipal;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 
 abstract class AttributeValueConverter<T>
@@ -566,6 +568,31 @@ abstract class AttributeValueConverter<T
         }
     };
 
+    public static final AttributeValueConverter<Principal> PRINCIPAL_CONVERTER 
= new AttributeValueConverter<Principal>()
+    {
+        @Override
+        public Principal convert(final Object value, final ConfiguredObject 
object)
+        {
+            if (value instanceof Principal)
+            {
+                return (Principal) value;
+            }
+            else if (value instanceof String)
+            {
+                String interpolated = 
AbstractConfiguredObject.interpolate(object, (String) value);
+                return new GenericPrincipal(interpolated);
+            }
+            else if (value == null)
+            {
+                return null;
+            }
+            else
+            {
+                throw new IllegalArgumentException("Cannot convert type " + 
value.getClass() + " to a Principal");
+            }
+        }
+    };
+
     private static <T> T convertFromJson(final String value, final 
ConfiguredObject object, final Class<T> valueType)
     {
         String interpolated = AbstractConfiguredObject.interpolate(object, 
value);
@@ -684,6 +711,10 @@ abstract class AttributeValueConverter<T
                 return (AttributeValueConverter<X>) COLLECTION_CONVERTER;
             }
         }
+        else if(Principal.class.isAssignableFrom(type))
+        {
+            return (AttributeValueConverter<X>) PRINCIPAL_CONVERTER;
+        }
         else if(ConfiguredObject.class.isAssignableFrom(type))
         {
             return (AttributeValueConverter<X>) new 
ConfiguredObjectConverter(type);

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectJacksonModule.java
 Mon Aug  8 15:57:24 2016
@@ -23,6 +23,7 @@ package org.apache.qpid.server.model;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.security.Principal;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateEncodingException;
 import java.util.Collections;
@@ -31,6 +32,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 
+import com.fasterxml.jackson.core.JsonGenerationException;
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.Version;
 import com.fasterxml.jackson.databind.JsonSerializer;
@@ -38,6 +40,8 @@ import com.fasterxml.jackson.databind.Ob
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 
+import org.apache.qpid.server.model.preferences.GenericPrincipal;
+import org.apache.qpid.server.security.QpidPrincipal;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 
 public class ConfiguredObjectJacksonModule extends SimpleModule
@@ -59,6 +63,44 @@ public class ConfiguredObjectJacksonModu
         addConfiguredObjectSerializer();
         addManageableAttributeTypeSerializer();
         addCertificateSerializer();
+        addPrincipalSerializer();
+    }
+
+    private void addPrincipalSerializer()
+    {
+        final JsonSerializer<Principal> serializer = new 
JsonSerializer<Principal>()
+        {
+            @Override
+            public void serialize(final Principal value, final JsonGenerator 
jgen, final SerializerProvider provider)
+                    throws IOException, JsonGenerationException
+            {
+                if (value == null)
+                {
+                    jgen.writeNull();
+                }
+                else if (value instanceof QpidPrincipal)
+                {
+                    QpidPrincipal principal = (QpidPrincipal) value;
+                    jgen.writeString(String.format("%s@%s('%s')",
+                                                   principal.getName(),
+                                                   
principal.getOrigin().getType(),
+                                                   
principal.getOrigin().getName()));
+                }
+                else if (value instanceof GenericPrincipal)
+                {
+                    GenericPrincipal principal = (GenericPrincipal) value;
+                    jgen.writeString(String.format("%s@%s('%s')",
+                                                   principal.getName(),
+                                                   principal.getOriginType(),
+                                                   principal.getOriginName()));
+                }
+                else
+                {
+                    jgen.writeString(value.getName());
+                }
+            }
+        };
+        addSerializer(Principal.class, serializer);
     }
 
     private void addCertificateSerializer()

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectTypeRegistry.java
 Mon Aug  8 15:57:24 2016
@@ -960,13 +960,13 @@ public class ConfiguredObjectTypeRegistr
                         {
                             try
                             {
-                                stringValue = new 
ObjectMapper().writeValueAsString(value);
+                                stringValue = 
ConfiguredObjectJacksonModule.newObjectMapper().writeValueAsString(value);
                             }
                             catch (JsonProcessingException e)
                             {
                                 throw new ServerScopedRuntimeException("Unable 
to convert value of type '"
                                                                        + 
value.getClass()
-                                                                       + "' to 
a JSON string for conext variable ${"
+                                                                       + "' to 
a JSON string for context variable ${"
                                                                        + name
                                                                        + "}");
                             }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/GenericPrincipal.java
 Mon Aug  8 15:57:24 2016
@@ -20,10 +20,19 @@
 package org.apache.qpid.server.model.preferences;
 
 import java.security.Principal;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
-public class GenericPrincipal implements Principal, Comparable<Principal>
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.security.QpidPrincipal;
+
+public class GenericPrincipal implements Principal
 {
+    private static final Pattern PATTERN = 
Pattern.compile("(\\w+)@(\\w+)\\('(\\w+)'\\)");
+
     private final String _name;
+    private final String _originType;
+    private final String _originName;
 
     public GenericPrincipal(final String name)
     {
@@ -31,7 +40,14 @@ public class GenericPrincipal implements
         {
             throw new IllegalArgumentException("Principal name cannot be 
null");
         }
-        _name = name;
+        Matcher m = PATTERN.matcher(name);
+        if (!m.matches())
+        {
+            throw new IllegalArgumentException("Principal has unexpected 
format");
+        }
+        _name = m.group(1);
+        _originType = m.group(2);
+        _originName = m.group(3);
     }
 
     @Override
@@ -41,8 +57,80 @@ public class GenericPrincipal implements
     }
 
     @Override
-    public int compareTo(final Principal other)
+    public boolean equals(final Object o)
+    {
+        if (this == o)
+        {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass())
+        {
+            return false;
+        }
+
+        final GenericPrincipal that = (GenericPrincipal) o;
+
+        return _name.equals(that._name) && 
_originType.equals(that._originType) && _originName.equals(that._originName);
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return _name.hashCode();
+    }
+
+    public String getOriginType()
+    {
+        return _originType;
+    }
+
+    public String getOriginName()
+    {
+        return _originName;
+    }
+
+    public static boolean principalsEqual(final Principal p1, final Principal 
p2)
+    {
+        if (p1 == null)
+        {
+            return p2 == null;
+        }
+        else if (p2 == null)
+        {
+            return false;
+        }
+
+        if (p1 instanceof GenericPrincipal)
+        {
+            return genericPrincipalEquals((GenericPrincipal) p1, p2);
+        }
+        if (p2 instanceof GenericPrincipal)
+        {
+            return genericPrincipalEquals((GenericPrincipal) p2, p1);
+        }
+
+        return p1.equals(p2);
+    }
+
+    private static boolean genericPrincipalEquals(GenericPrincipal 
genericPrincipal, Principal otherPrincipal)
+    {
+        if (otherPrincipal instanceof GenericPrincipal)
+        {
+            GenericPrincipal otherGenericPrincipal = (GenericPrincipal) 
otherPrincipal;
+            return genericPrincipalEqualsByStrings(genericPrincipal, 
otherGenericPrincipal.getName(), otherGenericPrincipal.getOriginType(), 
otherGenericPrincipal.getOriginName());
+        }
+        else if (otherPrincipal instanceof QpidPrincipal)
+        {
+            ConfiguredObject<?> origin = ((QpidPrincipal) 
otherPrincipal).getOrigin();
+            return genericPrincipalEqualsByStrings(genericPrincipal, 
otherPrincipal.getName(), origin.getType(), origin.getName());
+        }
+        return genericPrincipal.equals(otherPrincipal);
+    }
+
+    private static boolean genericPrincipalEqualsByStrings(GenericPrincipal 
genericPrincipal, String name, String originType, String originName)
     {
-        return _name.compareTo(other.getName());
+        return (genericPrincipal.getName().equals(name)
+                && genericPrincipal.getOriginType().equals(originType)
+                && genericPrincipal.getOriginName().equals(originName));
     }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceFactory.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceFactory.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceFactory.java
 Mon Aug  8 15:57:24 2016
@@ -39,7 +39,7 @@ public class PreferenceFactory
     {
         AuthenticatedPrincipal currentUser = 
AuthenticatedPrincipal.getCurrentUser();
         Map<String, Object> overriddenAttributes =  new HashMap<>(attributes);
-        overriddenAttributes.put(Preference.OWNER_ATTRIBUTE, currentUser == 
null ? null : currentUser.getName());
+        overriddenAttributes.put(Preference.OWNER_ATTRIBUTE, currentUser);
         overriddenAttributes.put(Preference.LAST_UPDATED_DATE_ATTRIBUTE, 
System.currentTimeMillis());
         return recover(associatedObject, overriddenAttributes);
     }
@@ -51,7 +51,7 @@ public class PreferenceFactory
         final String type = getAttributeAsString(Preference.TYPE_ATTRIBUTE, 
attributes);
         final String name = getAttributeAsString(Preference.NAME_ATTRIBUTE, 
attributes);
         final String description = 
getAttributeAsString(Preference.DESCRIPTION_ATTRIBUTE, attributes);
-        final String owner = getAttributeAsString(Preference.OWNER_ATTRIBUTE, 
attributes);
+        final Principal owner = getOwner(attributes);
         if (owner == null)
         {
             throw new IllegalArgumentException("Preference owner is 
mandatory");
@@ -61,7 +61,7 @@ public class PreferenceFactory
         final Map<String, Object> preferenceValueAttributes = 
getPreferenceValue(attributes);
         PreferenceValue value = convertMapToPreferenceValue(type, 
preferenceValueAttributes);
         return new PreferenceImpl(associatedObject, uuid, name, type, 
description,
-                                  new GenericPrincipal(owner),
+                                  owner,
                                   lastUpdatedDate,
                                   visibilitySet,
                                   value);
@@ -148,6 +148,21 @@ public class PreferenceFactory
                                                          
Preference.VISIBILITY_LIST_ATTRIBUTE));
     }
 
+    private static Principal getOwner(final Map<String, Object> attributes)
+    {
+        Object value = attributes.get(Preference.OWNER_ATTRIBUTE);
+        if (value == null || value instanceof Principal)
+        {
+            return (Principal) value;
+        }
+        else if (value instanceof String)
+        {
+            return new GenericPrincipal((String) value);
+        }
+        throw new IllegalArgumentException(String.format("Cannot recover '%s' 
as Principal",
+                                                         
Preference.OWNER_ATTRIBUTE));
+    }
+
     private static String getAttributeAsString(final String attributeName, 
final Map<String, Object> attributes)
     {
         Object value = attributes.get(attributeName);

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceImpl.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/PreferenceImpl.java
 Mon Aug  8 15:57:24 2016
@@ -21,7 +21,6 @@ package org.apache.qpid.server.model.pre
 
 import java.security.Principal;
 import java.util.Date;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
@@ -151,15 +150,10 @@ public class PreferenceImpl implements P
         map.put(NAME_ATTRIBUTE, _name);
         map.put(TYPE_ATTRIBUTE, _type);
         map.put(DESCRIPTION_ATTRIBUTE, _description);
-        map.put(OWNER_ATTRIBUTE, _owner == null ? "" : _owner.getName());
+        map.put(OWNER_ATTRIBUTE, _owner);
         map.put(ASSOCIATED_OBJECT_ATTRIBUTE, _associatedObject.getId());
-        Set<String> visibilityList = new HashSet<>(_visibilitySet.size());
-        for (Principal principal : _visibilitySet)
-        {
-            visibilityList.add(principal.getName());
-        }
-        map.put(VISIBILITY_LIST_ATTRIBUTE, visibilityList);
-        map.put(LAST_UPDATED_DATE_ATTRIBUTE, new 
Date(_lastUpdatedDate.getTime()));
+        map.put(VISIBILITY_LIST_ATTRIBUTE, getVisibilityList());
+        map.put(LAST_UPDATED_DATE_ATTRIBUTE, getLastUpdatedDate());
         map.put(VALUE_ATTRIBUTE, _preferenceValue.getAttributes());
         return map;
     }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/UserPreferencesImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/UserPreferencesImpl.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/UserPreferencesImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/preferences/UserPreferencesImpl.java
 Mon Aug  8 15:57:24 2016
@@ -582,9 +582,7 @@ public class UserPreferencesImpl impleme
 
     private boolean principalsEqual(final Principal p1, final Principal p2)
     {
-        return (p1.equals(p2)
-                || ((p1 instanceof GenericPrincipal) && (((GenericPrincipal) 
p1).compareTo(p2) == 0))
-                || ((p2 instanceof GenericPrincipal) && (((GenericPrincipal) 
p2).compareTo(p1) == 0)));
+        return GenericPrincipal.principalsEqual(p1, p2);
     }
 
     private boolean principalsContain(Collection<Principal> principals, 
Principal principal)

Copied: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/QpidPrincipal.java
 (from r1755480, 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupManager.java)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/QpidPrincipal.java?p2=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/QpidPrincipal.java&p1=qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupManager.java&r1=1755480&r2=1755516&rev=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupManager.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/QpidPrincipal.java
 Mon Aug  8 15:57:24 2016
@@ -15,34 +15,16 @@
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- *
  */
-package org.apache.qpid.server.security.group;
 
-import java.security.Principal;
-import java.util.Set;
-
-public interface GroupManager
-{
-    Set<Principal> getGroupPrincipalsForUser(String user);
-
-    Set<Principal> getGroupPrincipals();
-
-    Set<Principal> getUserPrincipalsForGroup(String group);
-
-    void createGroup(String group);
+package org.apache.qpid.server.security;
 
-    void removeGroup(String group);
-
-    void addUserToGroup(String user, String group);
-
-    void removeUserFromGroup(String user, String group);
-
-    void open();
+import java.security.Principal;
 
-    void close();
+import org.apache.qpid.server.model.ConfiguredObject;
 
-    void onDelete();
 
-    void onCreate();
+public interface QpidPrincipal extends Principal
+{
+    ConfiguredObject<?> getOrigin();
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/AuthenticatedPrincipal.java
 Mon Aug  8 15:57:24 2016
@@ -18,21 +18,21 @@
  */
 package org.apache.qpid.server.security.auth;
 
-import java.io.Serializable;
 import java.security.AccessController;
 import java.security.Principal;
 import java.util.Set;
 
 import javax.security.auth.Subject;
 
-import org.apache.qpid.server.security.auth.UsernamePrincipal;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.security.QpidPrincipal;
 
 /**
  * A simple Principal wrapper. Exists to allow us to identify the "primary" 
principal
  * by calling {@link Subject#getPrincipals(Class)}, passing in {@link 
AuthenticatedPrincipal}.class,
  * e.g. when logging.
  */
-public final class AuthenticatedPrincipal implements Principal, Serializable
+public final class AuthenticatedPrincipal implements QpidPrincipal
 {
     private final Principal _wrappedPrincipal;
 
@@ -70,6 +70,19 @@ public final class AuthenticatedPrincipa
     }
 
     @Override
+    public ConfiguredObject<?> getOrigin()
+    {
+        if (_wrappedPrincipal instanceof QpidPrincipal)
+        {
+            return ((QpidPrincipal) _wrappedPrincipal).getOrigin();
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    @Override
     public String getName()
     {
         return _wrappedPrincipal.getName();

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
 Mon Aug  8 15:57:24 2016
@@ -20,13 +20,11 @@
  */
 package org.apache.qpid.server.security.auth;
 
-import java.io.Serializable;
-import java.security.Principal;
-
 import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.security.QpidPrincipal;
 
 /** A principal that is just a wrapper for a simple username. */
-public class UsernamePrincipal implements Principal, Serializable
+public class UsernamePrincipal implements QpidPrincipal
 {
     private final String _name;
     private final AuthenticationProvider<?> _authenticationProvider;
@@ -52,6 +50,12 @@ public class UsernamePrincipal implement
     }
 
     @Override
+    public AuthenticationProvider<?> getOrigin()
+    {
+        return _authenticationProvider;
+    }
+
+    @Override
     public int hashCode()
     {
         final int prime = 31;

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
 Mon Aug  8 15:57:24 2016
@@ -20,13 +20,13 @@
  */
 package org.apache.qpid.server.security.group;
 
-import java.io.Serializable;
 import java.security.Principal;
-import java.security.acl.Group;
 import java.util.Enumeration;
 
 import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.security.QpidPrincipal;
 
 /**
  * Immutable representation of a user group.  In Qpid, groups do <b>not</b> 
know
@@ -34,7 +34,7 @@ import org.apache.qpid.server.model.Grou
  * methods etc throw {@link UnsupportedOperationException}.
  *
  */
-public class GroupPrincipal implements Group, Serializable
+public class GroupPrincipal implements QpidPrincipal
 {
     /** Name of the group */
     private final String _groupName;
@@ -80,6 +80,12 @@ public class GroupPrincipal implements G
         throw new UnsupportedOperationException("Not supported");
     }
 
+    @Override
+    public ConfiguredObject<?> getOrigin()
+    {
+        return (_groupAuthProvider != null ? _groupAuthProvider : 
_groupProvider);
+    }
+
     /**
      * @see java.lang.Object#hashCode()
      */

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/AbstractJDBCPreferenceStore.java
 Mon Aug  8 15:57:24 2016
@@ -42,6 +42,7 @@ import com.fasterxml.jackson.databind.Ob
 import org.slf4j.Logger;
 
 import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.ConfiguredObjectJacksonModule;
 import org.apache.qpid.server.model.ModelVersion;
 import org.apache.qpid.server.store.StoreException;
 import org.apache.qpid.server.util.BaseAction;
@@ -348,7 +349,7 @@ public abstract class AbstractJDBCPrefer
                                      final Map<String, Object> attributes)
             throws JsonProcessingException, SQLException
     {
-        final ObjectMapper objectMapper = new ObjectMapper();
+        final ObjectMapper objectMapper = 
ConfiguredObjectJacksonModule.newObjectMapper();
         if (attributes != null)
         {
             byte[] attributesAsBytes = 
objectMapper.writeValueAsBytes(attributes);

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/preferences/JsonFilePreferenceStore.java
 Mon Aug  8 15:57:24 2016
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.Ob
 import com.fasterxml.jackson.databind.SerializationFeature;
 
 import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.ConfiguredObjectJacksonModule;
 import org.apache.qpid.server.model.ModelVersion;
 import org.apache.qpid.server.store.AbstractJsonFileStore;
 import org.apache.qpid.server.store.StoreException;
@@ -49,7 +50,7 @@ public class JsonFilePreferenceStore ext
         super();
         _storePath = path;
         _posixFilePermissions = posixFilePermissions;
-        _objectMapper = new 
ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+        _objectMapper = 
ConfiguredObjectJacksonModule.newObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
         _recordMap = new LinkedHashMap<>();
     }
 

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/preferences/PreferenceFactoryTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/preferences/PreferenceFactoryTest.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/preferences/PreferenceFactoryTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/preferences/PreferenceFactoryTest.java
 Mon Aug  8 15:57:24 2016
@@ -37,7 +37,8 @@ import org.apache.qpid.test.utils.QpidTe
 
 public class PreferenceFactoryTest extends QpidTestCase
 {
-    public static final String TEST_USERNAME = "testUser";
+    private static final String TEST_USERNAME = "testUser";
+    private static final String TEST_PRINCIPAL_SERIALIZATION = 
TestPrincipalUtils.getTestPrincipalSerialization(TEST_USERNAME);
     private ConfiguredObject<?> _testObject;
     private Subject _testSubject;
 
@@ -86,7 +87,7 @@ public class PreferenceFactoryTest exten
                                                                                
          "X-PREF1",
                                                                                
          "myprefname",
                                                                                
          "myprefdescription",
-                                                                               
          TEST_USERNAME,
+                                                                               
          TEST_PRINCIPAL_SERIALIZATION,
                                                                                
          Collections.<String>emptySet(),
                                                                                
          prefValueMap));
         assertNotNull("Creation failed", p);
@@ -109,7 +110,7 @@ public class PreferenceFactoryTest exten
                                                                               
"X-PREF1",
                                                                               
null,
                                                                               
"myprefdescription",
-                                                                              
TEST_USERNAME,
+                                                                              
TEST_PRINCIPAL_SERIALIZATION,
                                                                               
Collections.<String>emptySet(),
                                                                               
prefValueMap));
             fail("Preference name must not be null");
@@ -143,7 +144,7 @@ public class PreferenceFactoryTest exten
                                                                                
           "X-TESTPREF",
                                                                                
           "testProp1",
                                                                                
           "",
-                                                                               
           TEST_USERNAME,
+                                                                               
           TEST_PRINCIPAL_SERIALIZATION,
                                                                                
           null,
                                                                                
           Collections.<String, Object>emptyMap()));
         Preference p2 = PreferenceFactory.recover(_testObject, 
createPreferenceAttributes(null,
@@ -151,7 +152,7 @@ public class PreferenceFactoryTest exten
                                                                                
           "X-TESTPREF",
                                                                                
           "testProp2",
                                                                                
           "",
-                                                                               
           TEST_USERNAME,
+                                                                               
           TEST_PRINCIPAL_SERIALIZATION,
                                                                                
           Collections.<String>emptySet(),
                                                                                
           Collections.<String, Object>emptyMap()));
         UUID id1 = p1.getId();
@@ -168,11 +169,11 @@ public class PreferenceFactoryTest exten
                                                                                
          "X-TESTPREF",
                                                                                
          "testProp1",
                                                                                
          null,
-                                                                               
          TEST_USERNAME,
+                                                                               
          TEST_PRINCIPAL_SERIALIZATION,
                                                                                
          null,
                                                                                
          Collections.<String, Object>emptyMap()));
         final Principal testPrincipal = 
_testSubject.getPrincipals(AuthenticatedPrincipal.class).iterator().next();
-        assertEquals("Unexpected preference owner", testPrincipal.getName(), 
p.getOwner().getName());
+        assertTrue("Unexpected preference owner", 
GenericPrincipal.principalsEqual(testPrincipal, p.getOwner()));
     }
 
     public void testPreferenceOwnerIsMandatoryOnRecovery()
@@ -202,7 +203,7 @@ public class PreferenceFactoryTest exten
                                                                                
          "X-TESTPREF",
                                                                                
          "testProp1",
                                                                                
          null,
-                                                                               
          TEST_USERNAME,
+                                                                               
          TEST_PRINCIPAL_SERIALIZATION,
                                                                                
          null,
                                                                                
          Collections.<String, Object>emptyMap()));
         assertEquals("Unexpected associated object", _testObject, 
p.getAssociatedObject());
@@ -216,7 +217,7 @@ public class PreferenceFactoryTest exten
                                                                                
          type,
                                                                                
          "testProp1",
                                                                                
          null,
-                                                                               
          TEST_USERNAME,
+                                                                               
          TEST_PRINCIPAL_SERIALIZATION,
                                                                                
          null,
                                                                                
          Collections.<String, Object>emptyMap()));
         assertEquals("Unexpected type", type, p.getType());
@@ -229,7 +230,7 @@ public class PreferenceFactoryTest exten
                                                                     
"X-TESTPREF",
                                                                     
"testProp1",
                                                                     null,
-                                                                    
TEST_USERNAME,
+                                                                    
TEST_PRINCIPAL_SERIALIZATION,
                                                                     null,
                                                                     
Collections.<String, Object>emptyMap());
         attributes.put(Preference.LAST_UPDATED_DATE_ATTRIBUTE, 1);

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/PreferencesTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/PreferencesTest.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/PreferencesTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/PreferencesTest.java
 Mon Aug  8 15:57:24 2016
@@ -43,6 +43,7 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.model.preferences.GenericPrincipal;
 import org.apache.qpid.server.model.preferences.Preference;
 import org.apache.qpid.server.model.preferences.PreferenceFactory;
 import org.apache.qpid.server.model.preferences.PreferenceTestHelper;
@@ -54,7 +55,9 @@ import org.apache.qpid.test.utils.QpidTe
 public class PreferencesTest extends QpidTestCase
 {
     public static final String TEST_USERNAME = "testUser";
+    private static final String TEST_PRINCIPAL_SERIALIZATION = 
TestPrincipalUtils.getTestPrincipalSerialization(TEST_USERNAME);
     public static final String TEST_USERNAME2 = "testUser2";
+    private static final String TEST_PRINCIPAL2_SERIALIZATION = 
TestPrincipalUtils.getTestPrincipalSerialization(TEST_USERNAME2);
     private final Model _model = TestModel.getInstance();
     private ConfiguredObject<?> _testObject;
     private Subject _testSubject;
@@ -93,7 +96,7 @@ public class PreferencesTest extends Qpi
                 "X-TestPropType",
                 "testProp1",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Subject.doAs(_testSubject, new PrivilegedAction<Void>()
@@ -117,7 +120,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "prop1",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -150,7 +153,7 @@ public class PreferencesTest extends Qpi
                         "X-testType",
                         "prop1",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -163,7 +166,7 @@ public class PreferencesTest extends Qpi
                         "X-testType",
                         "prop2",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -191,7 +194,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -201,7 +204,8 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "newPropName",
                 "newDescription",
-                TEST_USERNAME, null,
+                TEST_PRINCIPAL_SERIALIZATION,
+                null,
                 Collections.<String, Object>emptyMap()));
 
         Subject.doAs(_testSubject, new PrivilegedAction<Void>()
@@ -232,7 +236,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -241,7 +245,7 @@ public class PreferencesTest extends Qpi
                 "X-differentTestType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Subject.doAs(_testSubject, new PrivilegedAction<Void>()
@@ -272,7 +276,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -281,7 +285,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -314,7 +318,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -323,7 +327,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Subject.doAs(_testSubject, new PrivilegedAction<Void>()
@@ -359,8 +363,8 @@ public class PreferencesTest extends Qpi
                 "X-PREF",
                 "prefname",
                 null,
-                TEST_USERNAME,
-                Collections.singleton(testGroupName),
+                TEST_PRINCIPAL_SERIALIZATION,
+                
Collections.singleton(TestPrincipalUtils.getTestPrincipalSerialization(testGroupName)),
                 Collections.<String,Object>emptyMap());
         final Preference originalPreference = 
PreferenceFactory.recover(_testObject, preferenceAttributes);
         updateOrAppendAs(user1Subject, originalPreference);
@@ -378,7 +382,7 @@ public class PreferencesTest extends Qpi
 
                 final Preference target = visiblePreferences.iterator().next();
                 Map<String, Object> replacementAttributes = new 
HashMap(target.getAttributes());
-                replacementAttributes.put(Preference.OWNER_ATTRIBUTE, 
TEST_USERNAME2);
+                replacementAttributes.put(Preference.OWNER_ATTRIBUTE, 
TEST_PRINCIPAL2_SERIALIZATION);
 
                 try
                 {
@@ -408,7 +412,7 @@ public class PreferencesTest extends Qpi
                         prefType,
                         prefName,
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -422,7 +426,7 @@ public class PreferencesTest extends Qpi
                         prefType,
                         prefName,
                         "new preference",
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         try
@@ -503,7 +507,7 @@ public class PreferencesTest extends Qpi
                         preferenceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(testSubject2, unaffectedPreference);
@@ -514,7 +518,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -523,7 +527,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "newPropName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -555,7 +559,7 @@ public class PreferencesTest extends Qpi
                 "X-type-1",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -564,7 +568,7 @@ public class PreferencesTest extends Qpi
                 "X-type-2",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, p1, p2);
@@ -592,7 +596,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         String unaffectedType = "X-type-2";
@@ -603,7 +607,7 @@ public class PreferencesTest extends Qpi
                         unaffectedType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, deletePreference, unaffectedPreference);
@@ -635,7 +639,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         deletePropertyName,
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         final Preference unaffectedPreference1 =
@@ -645,7 +649,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName2",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         String unaffectedType = "X-type-2";
@@ -656,7 +660,7 @@ public class PreferencesTest extends Qpi
                         unaffectedType,
                         deletePropertyName,
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, deletePreference, 
unaffectedPreference1, unaffectedPreference2);
@@ -691,7 +695,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         final Preference unaffectedPreference1 =
@@ -701,7 +705,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName2",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         String unaffectedType = "X-type-2";
@@ -712,7 +716,7 @@ public class PreferencesTest extends Qpi
                         unaffectedType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, deletePreference, 
unaffectedPreference1, unaffectedPreference2);
@@ -747,7 +751,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         final Preference unaffectedPreference1 =
@@ -757,7 +761,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName2",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         String unaffectedType = "X-type-2";
@@ -768,7 +772,7 @@ public class PreferencesTest extends Qpi
                         unaffectedType,
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, deletePreference, 
unaffectedPreference1, unaffectedPreference2);
@@ -804,7 +808,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         deletePropertyName,
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         final Preference unaffectedPreference1 =
@@ -814,7 +818,7 @@ public class PreferencesTest extends Qpi
                         deleteType,
                         "propName2",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         String unaffectedType = "X-type-2";
@@ -825,7 +829,7 @@ public class PreferencesTest extends Qpi
                         unaffectedType,
                         deletePropertyName,
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(_testSubject, deletePreference, 
unaffectedPreference1, unaffectedPreference2);
@@ -882,7 +886,7 @@ public class PreferencesTest extends Qpi
                         preferenceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(testSubject2, unaffectedPreference);
@@ -893,7 +897,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -929,7 +933,7 @@ public class PreferencesTest extends Qpi
                         preferenceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
         updateOrAppendAs(testSubject2, unaffectedPreference);
@@ -940,7 +944,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -949,7 +953,7 @@ public class PreferencesTest extends Qpi
                 unaffectedPreferenceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -988,7 +992,7 @@ public class PreferencesTest extends Qpi
                         preferenceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -1000,7 +1004,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1010,7 +1014,7 @@ public class PreferencesTest extends Qpi
                 preferenceType,
                 "unaffectedPropName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1050,7 +1054,7 @@ public class PreferencesTest extends Qpi
                         replaceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -1062,7 +1066,7 @@ public class PreferencesTest extends Qpi
                 replaceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p2 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -1071,7 +1075,7 @@ public class PreferencesTest extends Qpi
                 unaffectedType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p3 = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -1080,7 +1084,7 @@ public class PreferencesTest extends Qpi
                 replaceType,
                 "newPropName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Subject.doAs(_testSubject, new PrivilegedAction<Void>()
@@ -1120,7 +1124,7 @@ public class PreferencesTest extends Qpi
                         replaceType,
                         "propName",
                         null,
-                        TEST_USERNAME2,
+                        TEST_PRINCIPAL2_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -1132,7 +1136,7 @@ public class PreferencesTest extends Qpi
                 replaceType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         final Preference p1b = PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
@@ -1141,7 +1145,7 @@ public class PreferencesTest extends Qpi
                 replaceType,
                 "unaffectedPropName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1151,7 +1155,7 @@ public class PreferencesTest extends Qpi
                 unaffectedType,
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1161,7 +1165,7 @@ public class PreferencesTest extends Qpi
                 replaceType,
                 "propName",
                 "new description",
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1195,15 +1199,15 @@ public class PreferencesTest extends Qpi
     {
         final Principal testPrincipal = 
_testSubject.getPrincipals().iterator().next();
 
-        Subject peerSubject = TestPrincipalUtils.createTestSubject("peer");
+        Subject peerSubject = 
TestPrincipalUtils.createTestSubject(TEST_USERNAME2);
         final Preference sharedPreference = 
PreferenceFactory.recover(_testObject, 
PreferenceTestHelper.createPreferenceAttributes(
                 null,
                 null,
                 "X-testType",
                 "propName1",
                 "shared with colleague testUser",
-                "peer",
-                Collections.singleton(testPrincipal.toString()),
+                TEST_PRINCIPAL2_SERIALIZATION,
+                Collections.singleton(TEST_PRINCIPAL_SERIALIZATION),
                 Collections.<String, Object>emptyMap()));
 
         Subject.doAs(peerSubject, new PrivilegedAction<Void>()
@@ -1223,7 +1227,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName2",
                 null,
-                "anotherUser",
+                
TestPrincipalUtils.getTestPrincipalSerialization("anotherUser"),
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1243,7 +1247,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
 
@@ -1280,11 +1284,11 @@ public class PreferencesTest extends Qpi
                         "X-testType",
                         "propName1",
                         null,
-                        "peer",
-                        Collections.singleton(testGroupName),
+                        TEST_PRINCIPAL2_SERIALIZATION,
+                        
Collections.singleton(TestPrincipalUtils.getTestPrincipalSerialization(testGroupName)),
                         Collections.<String, Object>emptyMap()));
 
-        Subject peerSubject = TestPrincipalUtils.createTestSubject("peer");
+        Subject peerSubject = 
TestPrincipalUtils.createTestSubject(TEST_USERNAME2);
         Subject.doAs(peerSubject, new PrivilegedAction<Void>()
         {
             @Override
@@ -1302,7 +1306,7 @@ public class PreferencesTest extends Qpi
                         "X-testType",
                         "propName",
                         null,
-                        TEST_USERNAME,
+                        TEST_PRINCIPAL_SERIALIZATION,
                         null,
                         Collections.<String, Object>emptyMap()));
 
@@ -1335,7 +1339,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName1",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Thread.sleep(1);
@@ -1357,7 +1361,7 @@ public class PreferencesTest extends Qpi
                 "X-testType",
                 "propName1",
                 null,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 null,
                 Collections.<String, Object>emptyMap()));
         Date lastUpdatedDate = p1.getLastUpdatedDate();
@@ -1380,7 +1384,7 @@ public class PreferencesTest extends Qpi
                 type,
                 name,
                 description,
-                TEST_USERNAME,
+                TEST_PRINCIPAL_SERIALIZATION,
                 visibilitySet,
                 prefValueMap));
         assertNotNull("Creation failed", p);
@@ -1391,7 +1395,7 @@ public class PreferencesTest extends Qpi
         expectedAttributes.put("type", type);
         expectedAttributes.put("name", name);
         expectedAttributes.put("description", description);
-        expectedAttributes.put("owner", TEST_USERNAME);
+        expectedAttributes.put("owner", new 
GenericPrincipal(TEST_PRINCIPAL_SERIALIZATION));
         expectedAttributes.put("associatedObject", _testObject.getId());
         expectedAttributes.put("visibilityList", visibilitySet);
         expectedAttributes.put("lastUpdatedDate", lastUpdatedDate);

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/TestPrincipalUtils.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/TestPrincipalUtils.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/TestPrincipalUtils.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/TestPrincipalUtils.java
 Mon Aug  8 15:57:24 2016
@@ -20,8 +20,12 @@
  */
 package org.apache.qpid.server.security.auth;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import javax.security.auth.Subject;
 
+import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.GroupProvider;
 import org.apache.qpid.server.security.group.GroupPrincipal;
 
@@ -32,19 +36,33 @@ import java.util.Set;
 
 public class TestPrincipalUtils
 {
+    public static final String TEST_AUTH_PROVIDER_TYPE = 
"TestAuthProviderType";
+    public static final String TEST_AUTH_PROVIDER_NAME = "testAuthProvider";
+    private static final AuthenticationProvider TEST_AUTH_PROVIDER = 
mock(AuthenticationProvider.class);
+
+    static
+    {
+        when(TEST_AUTH_PROVIDER.getType()).thenReturn(TEST_AUTH_PROVIDER_TYPE);
+        when(TEST_AUTH_PROVIDER.getName()).thenReturn(TEST_AUTH_PROVIDER_NAME);
+    }
+
     /**
      * Creates a test subject, with exactly one {@link AuthenticatedPrincipal} 
and zero or more GroupPrincipals.
      */
     public static Subject createTestSubject(final String username, final 
String... groups)
     {
         final Set<Principal> principals = new HashSet<Principal>(1 + 
groups.length);
-        principals.add(new AuthenticatedPrincipal(new 
UsernamePrincipal(username, null)));
+        principals.add(new AuthenticatedPrincipal(new 
UsernamePrincipal(username, TEST_AUTH_PROVIDER)));
         for (String group : groups)
         {
-            principals.add(new GroupPrincipal(group, (GroupProvider) null));
+            principals.add(new GroupPrincipal(group, TEST_AUTH_PROVIDER));
         }
 
         return new Subject(false, principals, Collections.EMPTY_SET, 
Collections.EMPTY_SET);
     }
 
+    public static String getTestPrincipalSerialization(final String 
principalName)
+    {
+        return String.format("%s@%s('%s')", principalName, 
TEST_AUTH_PROVIDER_TYPE, TEST_AUTH_PROVIDER_NAME);
+    }
 }

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/preferences/PreferencesRecovererTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/preferences/PreferencesRecovererTest.java?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/preferences/PreferencesRecovererTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/preferences/PreferencesRecovererTest.java
 Mon Aug  8 15:57:24 2016
@@ -93,7 +93,7 @@ public class PreferencesRecovererTest ex
                 "X-testType",
                 "testPref1",
                 null,
-                TEST_USERNAME,
+                
TestPrincipalUtils.getTestPrincipalSerialization(TEST_USERNAME),
                 null,
                 Collections.<String, Object>emptyMap());
         PreferenceRecord record1 = new PreferenceRecordImpl(p1Id, 
pref1Attributes);
@@ -104,7 +104,7 @@ public class PreferencesRecovererTest ex
                 "X-testType",
                 "testPref2",
                 null,
-                TEST_USERNAME,
+                
TestPrincipalUtils.getTestPrincipalSerialization(TEST_USERNAME),
                 null,
                 Collections.<String, Object>emptyMap());
         PreferenceRecord record2 = new PreferenceRecordImpl(p2Id, 
pref2Attributes);

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ConsoleHelper.js
 Mon Aug  8 15:57:24 2016
@@ -194,7 +194,7 @@ define(["dojo/query",
                              "below-centered"];
                         if (controlButton)
                         {
-                            controlButton.set("label", 
management.getAuthenticatedUser().name);
+                            controlButton.set("label", 
management.getAuthenticatedUser());
                             controlButton.domNode.style.display = '';
                         }
                     });

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceBrowserWidget.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceBrowserWidget.js?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceBrowserWidget.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceBrowserWidget.js
 Mon Aug  8 15:57:24 2016
@@ -327,7 +327,7 @@ define(["dojo/_base/declare",
                 {
                     if (this.filter != "all")
                     {
-                        var authenticatedUser = 
this.management.getAuthenticatedUser().name;
+                        var authenticatedUser = 
this.management.getAuthenticatedUser();
                         for (var i = preferenceList.length - 1; i >= 0; i--)
                         {
                             var item = preferenceList[i];

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceSaveDialogContent.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceSaveDialogContent.js?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceSaveDialogContent.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/preference/PreferenceSaveDialogContent.js
 Mon Aug  8 15:57:24 2016
@@ -81,7 +81,7 @@ define(["dojo/_base/declare",
                         var present = false;
                         for (var j = 0; j < userGroups.length; j++)
                         {
-                            if (selected[i] === userGroups[j].name)
+                            if (selected[i] === userGroups[j])
                             {
                                 present = true;
                                 break;
@@ -96,8 +96,8 @@ define(["dojo/_base/declare",
                     for (var j = 0; j < userGroups.length; j++)
                     {
                         items[j] = {
-                            id: userGroups[j].name,
-                            name: userGroups[j].name
+                            id: userGroups[j],
+                            name: userGroups[j]
                         };
                     }
                     this.groupChooser.set("data",

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js?rev=1755516&r1=1755515&r2=1755516&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/QueryWidget.js
 Mon Aug  8 15:57:24 2016
@@ -104,7 +104,7 @@ define(["dojo/_base/declare",
                         var present = false;
                         for (var j = 0; j < userGroups.length; j++)
                         {
-                            if (selected[i] === userGroups[j].name)
+                            if (selected[i] === userGroups[j])
                             {
                                 present = true;
                                 break;
@@ -118,7 +118,7 @@ define(["dojo/_base/declare",
                     var items = [];
                     for (var j = 0; j < userGroups.length; j++)
                     {
-                        items[j] = {id: userGroups[j].name, name: 
userGroups[j].name};
+                        items[j] = {id: userGroups[j], name: userGroups[j]};
                     }
                     this.groupChooser.set("data", {items: items, selected: 
selected});
                     this._onChange();
@@ -348,7 +348,7 @@ define(["dojo/_base/declare",
 
                     this._ownQuery = !this.preference
                                      || !this.preference.owner
-                                     || this.preference.owner === 
this.management.getAuthenticatedUser().name;
+                                     || this.preference.owner === 
this.management.getAuthenticatedUser();
                     this.saveButton.set("disabled", !this._ownQuery);
                     this.deleteButton.set("disabled", !this._ownQuery || 
!(this.preference  && this.preference.id));
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to