e6c3a72a023407f5d1fface64356e1cc81f1af31Phill Cunnington/*
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * The contents of this file are subject to the terms
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * of the Common Development and Distribution License
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * (the License). You may not use this file except in
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * compliance with the License.
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * You can obtain a copy of the License at
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * opensso/legal/CDDLv1.0.txt
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * See the License for the specific language governing
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * permission and limitations under the License.
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * When distributing Covered Code, include this CDDL
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * Header Notice in each file and include the License file
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * at opensso/legal/CDDLv1.0.txt.
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * If applicable, add the following below the CDDL Header,
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * with the fields enclosed by brackets [] replaced by
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * your own identifying information:
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * $Id: DebugProviderImpl.java,v 1.4 2009/03/07 08:01:53 veiming Exp $
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster *
e6c3a72a023407f5d1fface64356e1cc81f1af31Phill Cunnington * Portions Copyrighted 2014-2016 ForgeRock AS.
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL */
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTELpackage com.sun.identity.shared.debug.impl;
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Fosterimport com.sun.identity.shared.debug.IDebug;
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Fosterimport com.sun.identity.shared.debug.IDebugProvider;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTELimport com.sun.identity.shared.debug.file.DebugFileProvider;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTELimport com.sun.identity.shared.debug.file.impl.DebugFileProviderImpl;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTELimport java.util.HashMap;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTELimport java.util.Map;
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster/**
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster * Default debug provider implementation.
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster */
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Fosterpublic class DebugProviderImpl implements IDebugProvider {
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL private DebugFileProvider debugFileProvider;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL private Map<String, IDebug> debugMap = new HashMap<String, IDebug>();
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL /**
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * Default constructor
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * {@link com.sun.identity.shared.debug.file.impl.DebugFileProviderImpl} would be debug file provider used by
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * every debug logs
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL */
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL public DebugProviderImpl() {
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL this(new DebugFileProviderImpl());
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL }
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL /**
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * Constructor with a debug file provider
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL *
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL * @param debugFileProvider debug file provider used by every debug logs
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL */
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL public DebugProviderImpl(DebugFileProvider debugFileProvider) {
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL this.debugFileProvider = debugFileProvider;
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL }
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL /**
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL * Get the debugger associated with the debug name
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL *
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL * @param debugName name of the debug instance which will be returned.
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL * @return a debug instance
ce2e2c2c7126b18ccfce0fe69a3bfa2eafea68b7Quentin CASTEL */
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster public synchronized IDebug getInstance(String debugName) {
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL IDebug debug = debugMap.get(debugName);
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster if (debug == null) {
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL debug = new DebugImpl(debugName, debugFileProvider);
5e89746cb5bec21d15a044ce89cfcdbf99d3d49dQuentin CASTEL debugMap.put(debugName, debug);
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster }
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster return debug;
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster }
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster
5c099afa7c9361afc2f4477fec0e3018588d7840Allan Foster}