1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/* 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Licensed to the Apache Software Foundation (ASF) under one 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * or more contributor license agreements. See the NOTICE file 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed with this work for additional information 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * regarding copyright ownership. The ASF licenses this file 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * to you under the Apache License, Version 2.0 (the 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * "License"); you may not use this file except in compliance 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * with the License. You may obtain a copy of the License at 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * software distributed under the License is distributed on an 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * KIND, either express or implied. See the License for the 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * specific language governing permissions and limitations 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * under the License. 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.apache.qpid.management.common.sasl; 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.apache.harmony.javax.security.sasl.SaslClientFactory; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.security.Provider; 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Map; 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class JCAProvider extends Provider 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{ 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private static final long serialVersionUID = 1L; 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates the security provider with a map from SASL mechanisms to implementing factories. 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param providerMap The map from SASL mechanims to implementing factory classes. 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public JCAProvider(Map<String, Class<? extends SaslClientFactory>> providerMap) 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super("AMQSASLProvider", 1.0, "A JCA provider that registers all " 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen + "AMQ SASL providers that want to be registered"); 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen register(providerMap); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Registers client factory classes for a map of mechanism names to client factory classes. 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param providerMap The map from SASL mechanims to implementing factory classes. 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private void register(Map<String, Class<? extends SaslClientFactory>> providerMap) 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen for (Map.Entry<String, Class<? extends SaslClientFactory>> me : providerMap.entrySet()) 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen put("SaslClientFactory." + me.getKey(), me.getValue().getName()); 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 56