Creating and registering a serialization JSP file to enable viewing version objects

You must create and register a serialization JSP file to transform server versioned objects into XML that Management Center understands. When you extend content versioning in a business object, you want to display the versions in the Management Center user interface.

When you view the versions in the Version tab, the GetContentVersion service is called, and this service calls the serialization JSP to retrieve and display the versioned business objects.

When you extend content versioning for additional business objects, you must create a new serialization JSP file and register this serialization JSP file in the Struts configuration for customization, struts-extension.xml . This file is initially empty and takes precedence over all Struts configuration file.

Procedure

  1. Open WebSphere Commerce Developer and switch to the Enterprise Explorer view.
  2. Create a serialization JSP file.
    1. Create a JSP file with this syntax: GetVersioned objectType_value .jsp ; where objectType_value is the object type of the versioned object.
      For example, GetVersionedCatalogGroup.jsp defines the JSP fragment for CatalogGroup object type.

      Ensure that you store this JSP file in the same location as the other JSP files.

    2. Define the new serialization JSP file. The following code is a sample serialization JSP file for a CatalogGroup object type.
      
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      <%@ taglib uri="http://commerce.ibm.com/foundation" prefix="wcf"%>
      <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogGroupType[]" 
      	var="category" expressionBuilder="getCatalogGroupDetailsByIDs" varShowVerb="showVerb">
      		<wcf:contextData name="storeId" data="${param.storeId}"/>
      		<wcf:contextData name="catalogId" data="${param.catalogId}"/>
      		<wcf:contextData name="versionId" data="${param.objectVersionId}"/>
      		<wcf:param name="UniqueID" value="${param.UniqueID}"/>
      </wcf:getData>
      	
      <c:if test="${!(empty category)}">
      	
      1a
      <c:set var="objectVersionId" value="${param.objectVersionId}" scope="request" />
      	
      1b
      <c:set var="objectVersionNumber" value="${param.objectVersionNumber}" scope="request" />
      		<c:forEach var="catalogGroup" items="${category}">
      			<c:set var="childType" value="ChildCatalogGroup" />
      			<c:set var="objectType" value="CatalogGroup" />
      			<c:set var="owningStoreId" value="${catalogGroup.catalogGroupIdentifier.externalIdentifier.storeIdentifier.uniqueID}" />
      			<c:if test="${(param.storeId) != owningStoreId}">
      				<c:set var="childType" value="ChildInheritedCatalogGroup" />
      				<c:set var="objectType" value="InheritedCatalogGroup" />
      			</c:if>
      			<jsp:directive.include file="serialize/SerializeCatalogGroup.jspf"/>
      		</c:forEach>
      </c:if>
      
      The following describes the lines with numbered callouts:
      • 1a-b The objectVersionId and objectVersionNumber properties must be included in your JSP file so that the framework knows if the returned object is a version object or not.
    3. Optional: If your serialization JSP already includes SerializeChangeControlMetaData.jsp , then set a variable in the SerializeCatalogGroup.jspf file. Otherwise, complete the next step instead.
      
      <object objectType="${objectType}">
      		
      <jsp:include page="/cmc/SerializeChangeControlMetaData" />
      
      		
      		<catgroupId>
      ${catalogGroup.catalogGroupIdentifier.uniqueID}</catgroupId>
      		<qualifiedCatgroupId>
      ${owningCatalog}_${catalogGroup.catalogGroupIdentifier.uniqueID}</qualifiedCatgroupId>
      		<identifier>
      <wcf:cdata data="${catalogGroup.catalogGroupIdentifier.externalIdentifier.groupIdentifier}"/>
      </identifier>
      		<objectStoreId>
      ${catalogGroup.catalogGroupIdentifier.externalIdentifier.storeIdentifier.uniqueID}</objectStoreId>
      		<ownerId>
      ${catalogGroup.catalogGroupIdentifier.externalIdentifier.ownerID}</ownerId>
      		<owningCatalog>
      ${owningCatalog}</owningCatalog>
      </object>
      
    4. Optional: In the Serialize objectType_value .jspf file, add the lines to retrieve the objectVersionId and objectVersionNumber if they exist.
      
      <object objectType="${objectType}">
      		
      <c:if test="${!empty objectVersionId}">
      			<objectVersionId>
      ${objectVersionId}</objectVersionId>
      		</c:if>
      		<c:if test="${!empty objectVersionNumber}">
      			<objectVersionNumber>
      ${objectVersionNumber}</objectVersionNumber>
      		</c:if>
      
      		<jsp:include page="/cmc/SerializeChangeControlMetaData" />
      		<catgroupId>
      ${catalogGroup.catalogGroupIdentifier.uniqueID}</catgroupId>
      		<qualifiedCatgroupId>
      ${owningCatalog}_${catalogGroup.catalogGroupIdentifier.uniqueID}</qualifiedCatgroupId>
      		<identifier>
      <wcf:cdata data="${catalogGroup.catalogGroupIdentifier.externalIdentifier.groupIdentifier}"/>
      </identifier>
      		<objectStoreId>
      ${catalogGroup.catalogGroupIdentifier.externalIdentifier.storeIdentifier.uniqueID}</objectStoreId>
      		<ownerId>
      ${catalogGroup.catalogGroupIdentifier.externalIdentifier.ownerID}</ownerId>
      		<owningCatalog>
      ${owningCatalog}</owningCatalog>
      </object>
      
      Both <c:if> elements must be added to retrieve the objectVersionId and objectVersionNumber if they exist
    5. Save and close the new serialization JSP file
  3. Register the serialization JSP in the struts action configuration file.
    1. Navigate to LOBTools > WebContent > WEB-INF .
    2. Open the  struts-extension.xml  file with a Struts configuration file editor.
    3. Add a new action mapping:
      1. Click the  ActionMappings  tab.
      2. In the  Action Mappings  section, click  Add .
      3. Under  The following Action Mappings are defined for this config file , you see /action1 , type your new GetVersioned objectType_value , for example, the one for CatalogGroup is GetVersionedCatalogGroup
      4. In the  Action Mapping attributes  section, select  Include , and then type the new GetVersioned objectType_value .jsp . For example, the one for CatalogGroup looks like /jsp/commerce/catalog/restricted/GetVersionedCatalogGroup.jsp
      5. Save the  struts-extension.xml  configuration file.
      6. To verify your updates, view the source of the  struts-extension.xml  configuration file and ensure that you see the code you added. For example, here is the one for CatalogGroup object.
        
        <action path="/GetVersionedCatalogGroup" include= "/jsp/commerce/catalog/restricted/GetVersionedCatalogGroup.jsp"/>
        
  4. Restart the WebSphere Commerce test server to make the new configuration available.

What to do next