You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2017/01/09 19:16:17 UTC

svn commit: r1778033 - in /qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server: model/ security/auth/manager/

Author: rgodfrey
Date: Mon Jan  9 19:16:16 2017
New Revision: 1778033

URL: http://svn.apache.org/viewvc?rev=1778033&view=rev
Log:
QPID-7612 : [Java Broker] Where there is only one possibly type for a configured object, do not require it to be provided

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.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/security/auth/manager/ConfigModelPasswordManagingAuthenticationProvider.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA256AuthenticationManager.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java Mon Jan  9 19:16:16 2017
@@ -38,11 +38,6 @@ public interface ConfiguredObjectFactory
 
     <X extends ConfiguredObject<X>> ListenableFuture<X> createAsync(Class<X> clazz, Map<String, Object> attributes, ConfiguredObject<?> parent);
 
-
-
-    <X extends ConfiguredObject<X>> ConfiguredObjectTypeFactory<X> getConfiguredObjectTypeFactory(Class<X> categoryClass,
-                                                                                                  Map<String, Object> attributes);
-
     <X extends ConfiguredObject<X>> ConfiguredObjectTypeFactory<X> getConfiguredObjectTypeFactory(String category,
                                                                                                   String type);
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java Mon Jan  9 19:16:16 2017
@@ -94,6 +94,11 @@ public class ConfiguredObjectFactoryImpl
 
         String type = (String) record.getAttributes().get(ConfiguredObject.TYPE);
 
+        if(type == null || "".equals(type))
+        {
+            type = getOnlyValidChildTypeIfKnown(parent, category);
+        }
+
         ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(category, type);
 
         if(factory == null)
@@ -104,12 +109,24 @@ public class ConfiguredObjectFactoryImpl
         return factory.recover(this, record, parent);
     }
 
+    private String getOnlyValidChildTypeIfKnown(final ConfiguredObject<?> parent, final String category)
+    {
+        String foo = null;
+        final Collection<String> validChildTypes =
+                _model.getTypeRegistry().getValidChildTypes(parent.getTypeClass(), category);
+        if (validChildTypes != null && validChildTypes.size() == 1)
+        {
+            foo = validChildTypes.iterator().next();
+        }
+        return foo;
+    }
+
     @Override
     public <X extends ConfiguredObject<X>> X create(Class<X> clazz,
                                                     final Map<String, Object> attributes,
                                                     final ConfiguredObject<?> parent)
     {
-        ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(clazz, attributes);
+        ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(clazz, attributes, parent);
 
         return factory.create(this, attributes, parent);
     }
@@ -120,15 +137,14 @@ public class ConfiguredObjectFactoryImpl
                                                     final Map<String, Object> attributes,
                                                     final ConfiguredObject<?> parent)
     {
-        ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(clazz, attributes);
+        ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(clazz, attributes, parent);
 
         return factory.createAsync(this, attributes, parent);
     }
 
-
-    @Override
-    public <X extends ConfiguredObject<X>> ConfiguredObjectTypeFactory<X> getConfiguredObjectTypeFactory(final Class<X> categoryClass,
-                                                                                                         Map<String, Object> attributes)
+    private <X extends ConfiguredObject<X>> ConfiguredObjectTypeFactory<X> getConfiguredObjectTypeFactory(final Class<X> categoryClass,
+                                                                                                          Map<String, Object> attributes,
+                                                                                                          ConfiguredObject<?> parent)
     {
         final String category = categoryClass.getSimpleName();
         Map<String, ConfiguredObjectTypeFactory> categoryFactories = _allFactories.get(category);
@@ -150,7 +166,7 @@ public class ConfiguredObjectFactoryImpl
         }
         else
         {
-            factory = getConfiguredObjectTypeFactory(category, null);
+            factory = getConfiguredObjectTypeFactory(category, getOnlyValidChildTypeIfKnown(parent, category));
         }
         return factory;
     }

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=1778033&r1=1778032&r2=1778033&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 Jan  9 19:16:16 2017
@@ -1290,11 +1290,17 @@ public class ConfiguredObjectTypeRegistr
     public Collection<String> getValidChildTypes(Class<? extends ConfiguredObject> type,
                                                  Class<? extends ConfiguredObject> childType)
     {
+        return getValidChildTypes(type, getCategory(childType).getSimpleName());
+    }
+
+    public Collection<String> getValidChildTypes(Class<? extends ConfiguredObject> type,
+                                                 String childCategory)
+    {
         final Map<String, Collection<String>> allValidChildTypes = _validChildTypes.get(getTypeClass(type));
         if (allValidChildTypes != null)
         {
             final Collection<String> validTypesForSpecificChild =
-                    allValidChildTypes.get(getCategory(childType).getSimpleName());
+                    allValidChildTypes.get(childCategory);
             return validTypesForSpecificChild == null
                     ? null
                     : Collections.unmodifiableCollection(validTypesForSpecificChild);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ConfigModelPasswordManagingAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ConfigModelPasswordManagingAuthenticationProvider.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ConfigModelPasswordManagingAuthenticationProvider.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ConfigModelPasswordManagingAuthenticationProvider.java Mon Jan  9 19:16:16 2017
@@ -22,6 +22,7 @@ package org.apache.qpid.server.security.
 
 import java.io.IOException;
 import java.nio.charset.Charset;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -241,4 +242,10 @@ public abstract class ConfigModelPasswor
     }
 
     abstract void validateUser(final ManagedUser managedUser);
+
+    @SuppressWarnings("unused")
+    public static Map<String, Collection<String>> getSupportedUserTypes()
+    {
+        return Collections.<String, Collection<String>>singletonMap(User.class.getSimpleName(), Collections.singleton(ManagedUser.MANAGED_USER_TYPE));
+    }
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/MD5AuthenticationProvider.java Mon Jan  9 19:16:16 2017
@@ -44,7 +44,7 @@ import org.apache.qpid.server.security.a
 import org.apache.qpid.server.security.auth.sasl.plain.PlainNegotiator;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 
-@ManagedObject(category = false, type = "MD5")
+@ManagedObject(category = false, type = "MD5", validChildTypes = "org.apache.qpid.server.security.auth.manager.ConfigModelPasswordManagingAuthenticationProvider#getSupportedUserTypes()")
 public class MD5AuthenticationProvider
         extends ConfigModelPasswordManagingAuthenticationProvider<MD5AuthenticationProvider>
 {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java Mon Jan  9 19:16:16 2017
@@ -38,7 +38,7 @@ import org.apache.qpid.server.security.a
 import org.apache.qpid.server.security.auth.sasl.scram.ScramNegotiator;
 import org.apache.qpid.server.security.auth.sasl.scram.ScramSaslServerSourceAdapter;
 
-@ManagedObject(category = false, type = "Plain")
+@ManagedObject(category = false, type = "Plain", validChildTypes = "org.apache.qpid.server.security.auth.manager.ConfigModelPasswordManagingAuthenticationProvider#getSupportedUserTypes()")
 public class PlainAuthenticationProvider
         extends ConfigModelPasswordManagingAuthenticationProvider<PlainAuthenticationProvider>
 {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java Mon Jan  9 19:16:16 2017
@@ -26,7 +26,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 
-@ManagedObject( category = false, type = "SCRAM-SHA-1" )
+@ManagedObject( category = false, type = "SCRAM-SHA-1" , validChildTypes = "org.apache.qpid.server.security.auth.manager.ConfigModelPasswordManagingAuthenticationProvider#getSupportedUserTypes()")
 public class ScramSHA1AuthenticationManager
         extends AbstractScramAuthenticationManager<ScramSHA1AuthenticationManager>
 {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA256AuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA256AuthenticationManager.java?rev=1778033&r1=1778032&r2=1778033&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA256AuthenticationManager.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA256AuthenticationManager.java Mon Jan  9 19:16:16 2017
@@ -26,7 +26,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 
-@ManagedObject( category = false, type = "SCRAM-SHA-256" )
+@ManagedObject( category = false, type = "SCRAM-SHA-256" , validChildTypes = "org.apache.qpid.server.security.auth.manager.ConfigModelPasswordManagingAuthenticationProvider#getSupportedUserTypes()")
 public class ScramSHA256AuthenticationManager
         extends AbstractScramAuthenticationManager<ScramSHA256AuthenticationManager>
 {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org