8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The contents of this file are subject to the terms
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * of the Common Development and Distribution License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * (the License). You may not use this file except in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * compliance with the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You can obtain a copy of the License at
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * opensso/legal/CDDLv1.0.txt
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * See the License for the specific language governing
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * permission and limitations under the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * When distributing Covered Code, include this CDDL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Header Notice in each file and include the License file
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * at opensso/legal/CDDLv1.0.txt.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * If applicable, addReferral the following below the CDDL Header,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * with the fields enclosed by brackets [] replaced by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * your own identifying information:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * $Id: CoreTokenStoreFactory.java,v 1.1 2009/11/19 00:07:40 qcheng Exp $
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpackage com.sun.identity.coretoken;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.coretoken.service.CoreTokenConfigService;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.coretoken.spi.CoreTokenStore;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This <code>OpenSSOCoreTokenStore</code> implements the core token store
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * using SM store.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster@SuppressWarnings("static-access")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class CoreTokenStoreFactory {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private static CoreTokenStore instance = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (CoreTokenConfigService.implClassName != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster instance = (CoreTokenStore) Thread.currentThread()
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .getContextClassLoader().getClass()
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .forName(CoreTokenConfigService.implClassName)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .newInstance();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (ClassNotFoundException ex) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster CoreTokenUtils.debug.error("CoreTokenStoreFactory.ini", ex);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (InstantiationException ex) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster CoreTokenUtils.debug.error("CoreTokenStoreFactory.ini", ex);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (IllegalAccessException ex) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster CoreTokenUtils.debug.error("CoreTokenStoreFactory.ini", ex);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns an instance of the <code>CoreTokenStore</code> implementation
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * class. The instance is a singleton.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return an instance of the <code>CoreTokenStore</code> implementation
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * class.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws CoreTokenException if failed to instantiate the instance.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static CoreTokenStore getInstance() throws CoreTokenException {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (instance != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return instance;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } else {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new CoreTokenException(302, null, 500);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}