Administer > Manage instances > WCS instance > Business Object thresholds
Sample Business Object thresholds programming patterns
The following are a few examples on how to access the configuration files, perform the unbounded condition check, and how to throw an exception in an event of a violation.
Access threshold property
String compId = "com.ibm.commerce.storelocator"; ComponentConfiguration config = ComponentConfigurationRegistry.instance().getComponentConfiguration(compId); String mapWidth = config.getValueByConfigGroupingNameAndPropertyName("map", "mapWidth");
The above example illustrates a simple comparison against the threshold.
Check against threshold
/** * Returns whether the threshold in the given context has been exceeded. * The default behaviour passes if there is no threshold. Subclasses should * override this to provide additional checking using additional * information. * * @return True if the threshold was exceeded, false otherwise. */ public boolean isThresholdAcceptable() { final String METHODNAME = "isThresholdAcceptable"; ECTrace.entry(ECTraceIdentifiers.COMPONENT_ORDER, CLASSNAME, METHODNAME); boolean passed = threshold == null || threshold.compareTo(BigDecimal.ZERO) < 0; if (ECTrace.traceEnabled(ECTraceIdentifiers.COMPONENT_ORDER)) { ECTrace.exit(ECTraceIdentifiers.COMPONENT_ORDER, CLASSNAME, METHODNAME, Boolean.valueOf(passed)); } return passed; }
The following section is another example of how to work with the default page size and maximum page size. The behavior is shown in the following pseudo code:
// enter a point in the code where we need to paginate maxItems = getObject.getMaxItems() if (maxItems == null) { maxItems = getDefaultPageSize() } maximumPageSize = getMaximumPageSize() if (maximumPageSize != null && (maxItems == null || maxItems > maximumPageSize)) { maxItems = maximumPageSize } if (maxItems == null || maxItems < 0) { maxItems = 0 } // use the startNumber and maxItems to choose the items in the page to return
In addition, considering the following cases where values are not defined:
- defaultPageSize exists and maxPageSize exists
- if defaultPageSize == maxPageSize – the page size will be bounded to the maxPageSize whether pagination parameters are set or not.
- if defaultPageSize < maxPageSize – if no parameters are set, defaultPageSize will be used, otherwise the parameters will be bounded by maxPageSize.
- if defaultPageSize > maxPageSize – the page size will be bounded to the maxPageSize whether pagination parameters are set or not.
- defaultPageSize exists but maxPageSize does not exist – the page size will be bounded by defaultPageSize only if there are no pagination parameters set.
- defaultPageSize does not exist, but maxPageSize exists – the page size will be bounded to maxPageSize whether pagination parameters are set or not.
- defaultPageSize does not exist and maxPageSize does not exist – no bound on the page size will be enforced.
Handle exception
Object[] params = new Object[] {getThreshold(), getNumAdded(), getNumCurrent()}; throw new ECApplicationException(getUserErrorMessage(), CLASSNAME, "throwDefaultException", params);
Log violation
/** * Logs a message to the administrator about the threshold being exceeded. * This method should be called when it is known that a threshold has been * exceeded. * * @param logger * The logger to use to notify the administrator. Cannot be null. * @param methodName * The name of the method which is calling this. Cannot be null * or empty. */ public void log(Logger logger, String methodName) { if (LoggingHelper.isTraceEnabled(logger)) { Object[] params = new Object[] {getThreshold(), getNumAdded(), getNumCurrent (), getUserID(), getStoreID(), getOrderID()}; logger.logp(Level.WARNING, logger.getName(), methodName, getAdminErrorMessage().getMessageKey(), params); } }
Related concepts
Related tasks
Set allowable ranges for Business Objects
Related reference
Data service layer (DSL) considerations when setting allowable ranges for Business Objects