Adding a new relationship to an existing HCL Commerce entity bean
HCL Commerce entity beans that implement the Protectable interface are already protected under access control. The terms of the access control requirements are determined by the way that the bean is used in the out-of-the-box features and functions of HCL Commerce. You may encounter situations in which you need to add additional relationships to access control for such beans. For example, if you use an existing bean in some of your customized code, or if you modify an existing HCL Commerce public entity bean, you may need to add additional relationships to the bean.
About this task
The following list provides the high-level steps to add new relationships to an existing HCL Commerce entity bean that is already protected by access control:
Procedure
-
Examine the existing fulfills method for the entity bean. This is located in the bean's access
helper class. Do not modify this class, use it only to determine if you need to add one or more new
relationships to this logic, or if you need to override this method. For example, the following
fulfills method appears in the com.ibm.commerce.fulfillment.objsrc.FulfillmentCenterBeanAccessHelper
class:
public boolean fulfills(Object obj, Long member, String relationship) throws Exception { FulfillmentCenterBean bean = (FulfillmentCenterBean) obj; if ("ShippingArrangementOrganizationalEntity". equalsIgnoreCase(relationship)) { FulfillmentJDBCHelperAccessBean ffmJDBCAB = new FulfillmentJDBCHelperAccessBean(); int count = ffmJDBCAB. checkFulfillmentCenterByMemberIdAndFulfillmentCenterId( member,bean.getFulfillmentCenterId()); if(count>0) return true; } return false; }
-
The next step is to create a new fulfills method in the bean class. For example, you could
create a new fulfills method in the com.ibm.commerce.fulfillment.objects.FulfillmentBean.java class.
The declaration for the method should appear as:
public boolean fulfills(Long member, String relationship) throws Exception { // Place holder for relationship information }
-
If you are adding an additional relationship to the existing relationships, the first line in
your method should be to call the fulfills method from the superclass. Then, if that method returns
false, then check for your new relationships, as follows:
public boolean fulfills(Long member, String relationship) throws Exception { if (super.fulfills().equals(false)) { // Check if new relationship is met return true; } return false; }
-
If you are replacing the relationships from the original implementation entirely, you should
not call the super.fulfills method, as follows:
public boolean fulfills(Long member, String relationship) throws Exception { // Check if new relationship is met // If it is, then return true; // If the relationship is not met, return false; }
- Save your changes. Regenerate the deployed and RMIC code for the bean, as well as the corresponding access bean.