/******************************************************************************* * Copyright (c) 2012 RelationWare, Benno Luthiger * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * RelationWare, Benno Luthiger ******************************************************************************/ package org.ripla.useradmin.internal; import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.UserAdminEvent; import org.ripla.useradmin.admin.RiplaUserAdmin; /** * The store for properties. * * @author Luthiger */ @SuppressWarnings("serial") public class PropertiesHashtable extends AbstractUserAdminHashtable { /** * PropertiesHashtable constructor. * * @param inRole * @param inUserAdmin * @param inPropertyType */ public PropertiesHashtable(final Role inRole, final RiplaUserAdmin inUserAdmin) { super(inRole, inUserAdmin); } /* * We want to generate an event every time we put something into the * hashtable, except upon initialization where role data is being read from * persistent store. */ @Override protected synchronized Object put(final String inKey, final Object inValue, // NOPMD // by // Luthiger // on // 07.09.12 // 00:24 final Role inRole, final boolean inGenerateEvent) { if (inGenerateEvent) { try { getUserAdminStore().addProperty(inRole, inKey, inValue); } catch (final BackingStoreException exc) { return null; } getUserAdmin().getEventProducer().generateEvent( UserAdminEvent.ROLE_CHANGED, inRole); } return putHash(inKey, inValue); } /* * (non-Javadoc) * * @see * org.ripla.useradmin.internal.UserAdminHashtable#checkChangePermission * (java.lang.String) */ @Override protected void checkChangePermission(final String inName) { getUserAdmin().checkChangePropertyPermission(inName); } /* * (non-Javadoc) * * @see * org.ripla.useradmin.internal.UserAdminHashtable#removeItem(org.osgi.service * .useradmin.Role, java.lang.String) */ @Override protected void removeItem(final Role inRole, final String inName) throws BackingStoreException { getUserAdmin().checkChangePropertyPermission(inName); getUserAdminStore().removeProperty(inRole, inName); getUserAdmin().getEventProducer().generateEvent( UserAdminEvent.ROLE_CHANGED, inRole); } /* * (non-Javadoc) * * @see * org.ripla.useradmin.internal.UserAdminHashtable#clearItem(org.osgi.service * .useradmin.Role) */ @Override protected void clearItem(final Role inRole) throws BackingStoreException { getUserAdminStore().clearProperties(inRole); getUserAdmin().getEventProducer().generateEvent( UserAdminEvent.ROLE_CHANGED, inRole); } /* * (non-Javadoc) * * @see * org.ripla.useradmin.internal.UserAdminHashtable#checkGetCredentialPermission * (java.lang.String) */ @Override protected void checkGetCredentialPermission(final String inName) { // nothing to do } }