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