// --- BEGIN COPYRIGHT BLOCK ---
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// (C) 2007 Red Hat, Inc.
// All rights reserved.
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.profile;
import java.util.Enumeration;
import java.util.Locale;
import com.netscape.certsrv.authentication.IAuthToken;
import com.netscape.certsrv.base.EBaseException;
import com.netscape.certsrv.base.IConfigStore;
import com.netscape.certsrv.common.NameValuePairs;
import com.netscape.certsrv.request.IRequest;
import com.netscape.certsrv.request.IRequestQueue;
import com.netscape.cms.profile.common.ProfilePolicy;
/**
* This interface represents a profile. A profile contains
* a list of input policies, default policies, constraint
* policies and output policies.
*
*
* The input policy is for building the enrollment page.
*
*
* The default policy is for populating user-supplied and system-supplied values into the request.
*
*
* The constraint policy is for validating the request before processing.
*
*
* The output policy is for building the result page.
*
*
* Each profile can have multiple policy set. Each set is composed of zero or more default policies and zero or more
* constraint policies.
*
*
* @version $Revision$, $Date$
*/
public interface IProfile {
/**
* Initializes this profile.
*
* @param owner profile subsystem
* @param config configuration store for this profile
* @exception EBaseException failed to initialize
*/
public void init(IProfileSubsystem owner, IConfigStore config)
throws EBaseException;
/**
* Retrieves the request queue that is associated with
* this profile. The request queue is for creating
* new requests.
*
* @return request queue
*/
public IRequestQueue getRequestQueue();
/**
* Sets id of this profile.
*
* @param id profile identifier
*/
public void setId(String id);
/**
* Returns the identifier of this profile.
*
* @return profile id
*/
public String getId();
/**
* Retrieves a localized string that represents
* requestor's distinguished name. This string
* displayed in the request listing user interface.
*
* @param request request
* @return distringuished name of the request owner
*/
public String getRequestorDN(IRequest request);
/**
* Retrieves the configuration store of this profile.
*
* @return configuration store
*/
public IConfigStore getConfigStore();
/**
* Retrieves the instance id of the authenticator for this profile.
*
* @return authenticator instance id
*/
public String getAuthenticatorId();
public String getAuthzAcl();
/**
* Sets the instance id of the authenticator for this profile.
*
* @param id authenticator instance id
*/
public void setAuthenticatorId(String id);
/**
* Retrieves the associated authenticator instance.
*
* @return profile authenticator instance.
* if no associated authenticator, null is returned
* @exception EProfileException failed to retrieve
*/
public IProfileAuthenticator getAuthenticator()
throws EProfileException;
/**
* Retrieves a list of input policy IDs.
*
* @return input policy id list
*/
public Enumeration getProfileInputIds();
/**
* Retrieves input policy by id.
*
* @param id input policy id
* @return input policy instance
*/
public IProfileInput getProfileInput(String id);
/**
* Retrieves a list of output policy IDs.
*
* @return output policy id list
*/
public Enumeration getProfileOutputIds();
/**
* Retrieves output policy by id.
*
* @param id output policy id
* @return output policy instance
*/
public IProfileOutput getProfileOutput(String id);
/**
* Checks if this profile is end-user profile or not.
* End-user profile will be displayed to the end user.
* Non end-user profile mainly is for registration
* manager.
*
* @return end-user profile or not
*/
public boolean isVisible();
/**
* Sets this profile end-user profile or not.
*
* @param v end-user profile or not
*/
public void setVisible(boolean v);
/**
* Retrieves the user id of the person who
* approves this profile.
*
* @return user id of the approver of this profile
*/
public String getApprovedBy();
/*
* Is this a renewal profile
*/
public String isRenewal();
/*
* is output going to be in xml?
*/
public String isXmlOutput();
/**
* Returns the profile name.
*
* @param locale end-user locale
* @param name profile name
*/
public void setName(Locale locale, String name);
/**
* Retrieves the profile name.
*
* @param locale end-user locale
* @return localized profile name
*/
public String getName(Locale locale);
/**
* Returns the profile description.
*
* @param locale end-user locale
* @param desc profile description
*/
public void setDescription(Locale locale, String desc);
/**
* Retrieves the profile description.
*
* @param locale end-user locale
* @return localized profile description
*/
public String getDescription(Locale locale);
/**
* Retrieves profile context. The context stores
* information about the requestor before the
* actual request is created.
*
* @return profile context.
*/
public IProfileContext createContext();
/**
* Returns the profile policy set identifiers.
*
* @return a list of policy set id
*/
public Enumeration getProfilePolicySetIds();
/**
* Creates a profile policy.
*
* @param setId id of the policy set that owns this policy
* @param id policy id
* @param defaultClassId id of the registered default implementation
* @param constraintClassId id of the registered constraint implementation
* @exception EProfileException failed to create policy
* @return profile policy instance
*/
public IProfilePolicy createProfilePolicy(String setId, String id,
String defaultClassId, String constraintClassId)
throws EProfileException;
/**
* Deletes input policy by id.
*
* @param inputId id of the input policy
* @exception EProfileException failed to delete
*/
public void deleteProfileInput(String inputId) throws EProfileException;
/**
* Deletes output policy by id.
*
* @param outputId id of the output policy
* @exception EProfileException failed to delete
*/
public void deleteProfileOutput(String outputId) throws EProfileException;
/**
* Creates a input policy.
*
* @param id input policy id
* @param inputClassId id of the registered input implementation
* @param nvp default parameters
* @return input policy
* @exception EProfileException failed to create
*/
public IProfileInput createProfileInput(String id, String inputClassId,
NameValuePairs nvp)
throws EProfileException;
/**
* Creates a output policy.
*
* @param id output policy id
* @param outputClassId id of the registered output implementation
* @param nvp default parameters
* @return output policy
* @exception EProfileException failed to create
*/
public IProfileOutput createProfileOutput(String id, String outputClassId,
NameValuePairs nvp) throws EProfileException;
/**
* Deletes a policy.
*
* @param setId id of the policy set
* @param policyId id of policy to delete
* @exception EProfileException failed to delete
*/
public void deleteProfilePolicy(String setId, String policyId)
throws EProfileException;
/**
* Retrieves a policy.
*
* @param setId set id
* @param id policy id
* @return profile policy
*/
public IProfilePolicy getProfilePolicy(String setId, String id);
/**
* Retrieves all the policy id within a set.
*
* @param setId set id
* @return a list of policy id
*/
public Enumeration getProfilePolicyIds(String setId);
/**
* Retrieves a default set id for the given request.
* It is the profile's responsibility to return
* an appropriate set id for the request.
*
* @param req request
* @return policy set id
*/
public String getPolicySetId(IRequest req);
/**
* Returns a list of profile policies.
*
* @param setId set id
* @return a list of policies
*/
public Enumeration getProfilePolicies(String setId);
/**
* Creates one or more requests. Normally, only one request will
* be created. In case of CRMF request, multiple requests may be
* created for one submission.
*
* @param ctx profile context
* @param locale user locale
* @return a list of requests
* @exception EProfileException failed to create requests
*/
public IRequest[] createRequests(IProfileContext ctx, Locale locale)
throws EProfileException;
/**
* Populates user-supplied input values into the requests.
*
* @param ctx profile context
* @param request request
* @exception EProfileException failed to populate
*/
public void populateInput(IProfileContext ctx, IRequest request)
throws EProfileException;
/**
* Passes the request to the set of default policies that
* populate the profile information against the profile.
*
* @param request request
* @exception EProfileException failed to populate default values
*/
public void populate(IRequest request)
throws EProfileException;
/**
* Passes the request to the set of constraint policies
* that validate the request against the profile.
*
* @param request request
* @exception ERejectException validation violation
*/
public void validate(IRequest request)
throws ERejectException;
/**
* Process a request after validation.
*
* @param request request to be processed
* @exception EProfileException failed to process
*/
public void execute(IRequest request)
throws EProfileException;
/**
* Handles end-user request submission.
*
* @param token authentication token
* @param request request to be processed
* @exception EDeferException defer request
* @exception EProfileException failed to submit
*/
public void submit(IAuthToken token, IRequest request)
throws EDeferException, EProfileException;
}