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]