4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster/**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * The contents of this file are subject to the terms
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * of the Common Development and Distribution License
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * (the License). You may not use this file except in
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * compliance with the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * You can obtain a copy of the License at
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * opensso/legal/CDDLv1.0.txt
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * See the License for the specific language governing
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * permission and limitations under the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * When distributing Covered Code, include this CDDL
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Header Notice in each file and include the License file
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * at opensso/legal/CDDLv1.0.txt.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * If applicable, add the following below the CDDL Header,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * with the fields enclosed by brackets [] replaced by
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * your own identifying information:
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * "Portions Copyrighted [year] [name of copyright owner]"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * $Id: UserDiscoEntryHandler.java,v 1.2 2008/06/25 05:49:56 qcheng Exp $
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpackage com.sun.identity.liberty.ws.disco.plugins;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.HashMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.HashSet;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.List;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Map;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Set;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.liberty.ws.disco.common.DiscoConstants;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.plugin.datastore.DataStoreProvider;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.plugin.datastore.DataStoreProviderManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster/*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * The class <code>UserDiscoEntryHandler</code> provides a default
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * implementation for interface <code>DiscoEntryHandler</code>.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <p>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This implementation gets/modifies discovery entries stored at the user's
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * entry in attribute named "sunIdentityServerDiscoEntries".
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpublic class UserDiscoEntryHandler implements DiscoEntryHandler {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private static final String USER_ATTR_NAME =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "sunIdentityServerDiscoEntries";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private static final String DISCO = "disco";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Default Constructor.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public UserDiscoEntryHandler() {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "in UserDiscoEntryHandler.constructor");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Finds discovery entries for a user under user entry.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param userID The user whose discovery entries will be returned.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param reqServiceTypes List of
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <code>com.sun.identity.liberty.ws.disco.jaxb.RequestedServiceType</code>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * objects from discovery query.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @return Map of <code>entryId</code> and
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <code>com.sun.identity.liberty.ws.disco.plugins.jaxb.DiscoEntryElement
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * </code> for this user. For each <code>DiscoEntry</code> element in the
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * List, the <code>entryId</code> attribute of ResourceOffering need to
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * be set.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public Map getDiscoEntries(String userID, List reqServiceTypes) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "in UserDiscoEntryHandler.getDiscoEntries");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map results = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DataStoreProvider store = DataStoreProviderManager.getInstance().
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getDataStoreProvider(DISCO);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (DiscoEntryHandlerImplUtils.getUserDiscoEntries(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster store, userID, USER_ATTR_NAME,results))
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // this is the case when the DiscoEntry is set through console
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // or amadmin, and entryID was not set
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!DiscoEntryHandlerImplUtils.setUserDiscoEntries(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster store, userID, USER_ATTR_NAME, results.values()))
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.getDiscoEntries: " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "couldn't set missing entryID to entry.");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster results = DiscoEntryHandlerImplUtils.getQueryResults(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster results, reqServiceTypes);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (Exception e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.getDiscoEntries:", e);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return results;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Modifies discovery entries for a user.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param userID The user whose discovery entries will be set.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param removes List of
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <code>com.sun.identity.liberty.ws.disco.jaxb.RemoveEntryType</code>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * jaxb objects.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param inserts List of
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <code>com.sun.identity.liberty.ws.disco.jaxb.InsertEntryType</code>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * jaxb objects.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @return Map which contains the following key value pairs:
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Key: <code>DiscoEntryHandler.STATUS_CODE</code>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Value: status code String such as "OK", "Failed", etc.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Key: <code>DiscoEntryHandler.NEW_ENTRY_IDS</code>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Value: List of <code>entryIds</code> for the entries that were added.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * The second key/value pair will only exist when status code is
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * "OK", and there are <code>InsertEntry</code> elements in the modify
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * request. When successful, all modification (removes and inserts) should
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * be done. No partial changes should be done.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public Map modifyDiscoEntries(String userID, List removes, List inserts) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "in UserDiscoEntryHandler.modifyDiscoEntries");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map result = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster result.put(STATUS_CODE, DiscoConstants.STATUS_FAILED);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map discoEntries = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DataStoreProvider store = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster store = DataStoreProviderManager.getInstance().
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getDataStoreProvider(DISCO);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.getUserDiscoEntries(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster store, userID, USER_ATTR_NAME, discoEntries);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (Exception e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.modifyDiscoEntries: Exception:", e);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return result;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((removes != null) && !removes.isEmpty()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (DiscoEntryHandlerImplUtils.debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.modifyDiscoEntries: handling "
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster + removes.size() + " removes.");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!DiscoEntryHandlerImplUtils.handleRemoves(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster discoEntries, removes)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return result;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set results = new HashSet();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster results.addAll(discoEntries.values());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List newEntryIDs = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((inserts != null) && (inserts.size() != 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (DiscoEntryHandlerImplUtils.debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.modifyDiscoEntries: handling " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster inserts.size() + " inserts.");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map insertResults = DiscoEntryHandlerImplUtils.handleInserts(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster results, inserts);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!((String)insertResults.get(STATUS_CODE)).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster equals(DiscoConstants.STATUS_OK)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return result;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster newEntryIDs = (List) insertResults.get(NEW_ENTRY_IDS);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // so far everything is successful
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!DiscoEntryHandlerImplUtils.setUserDiscoEntries(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster store, userID, USER_ATTR_NAME, results))
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.modifyDiscoEntries: "
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster + "couldn't set DiscoEntries through DiscoEntryHandler.");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return result;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (DiscoEntryHandlerImplUtils.debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster DiscoEntryHandlerImplUtils.debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "UserDiscoEntryHandler.modifyDisco"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster + "Entries: set DiscoEntries through DiscoEntryHandler "
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster + "successfully.");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster result.put(STATUS_CODE, DiscoConstants.STATUS_OK);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((newEntryIDs != null) && (newEntryIDs.size() != 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster result.put(NEW_ENTRY_IDS, newEntryIDs);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return result;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster}