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-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to