Websphere Commerce Aurora Store - как найти структуру данных?

Я пытаюсь понять более новую модель программирования (не Access Bean).

Как в WebSphere Commerce 7 FEP 5 определить структуру объекта, извлеченного из тегов GetData?

Например, во фрагменте ниже, как я узнаю, какова структура данных catalogEntryDetails? Имя класса, методы и т. Д.?

Также кто-то может объяснить, откуда появилось поле "metaData"? Должно ли это быть в определении существительного, или это то, что установлено в коде на уровне посредника? Я не мог видеть ссылку на это как непосредственное поле в определении существительного....

<c:forEach var="metadata" items="${catalogEntryDetails.metaData}" varStatus="status2">
    <c:if test="${metadata.key == 'ThumbnailPath'}">
        <c:set var="thumbNail" value="${env_imageContextPath}/${metadata.value}" />
    </c:if>         
    <c:if test="${metadata.key == 'FullImagePath'}">
        <c:set var="fullImage" value="${metadata.value}" />
    </c:if>
</c:forEach>

Объект catalogEntryDetails устанавливается из этого фрагмента:

<c:if test="${!empty productId}">
    <%-- Try to get it from our internal hashMap --%>
    <c:set var="key1" value="${productId}+getCatalogEntryViewAllByID"/>
    <c:set var="catalogEntryDetails" value="${cachedCatalogEntryDetailsMap[key1]}"/>
    <c:if test="${empty catalogEntryDetails}">
        <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catalogNavigationView" 
            expressionBuilder="getCatalogEntryViewAllByID" varShowVerb="showCatalogNavigationView" maxItems="1" recordSetStartNumber="0">
            <wcf:param name="UniqueID" value="${productId}"/>
            <wcf:contextData name="storeId" data="${storeId}" />
            <wcf:contextData name="catalogId" data="${catalogId}" />
        </wcf:getData>
        <wcf:set target = "${cachedCatalogEntryDetailsMap}" key="${key1}" value="${catalogNavigationView.catalogEntryView[0]}"/>
    </c:if>
</c:if>

<c:if test="${empty productId && !empty WCParam.partNumber}">
        <c:set var="key1" value="${WCParam.partNumber}+getCatalogEntryViewAllByPartnumber"/>
        <c:set var="catalogEntryDetails" value="${cachedCatalogEntryDetailsMap[key1]}"/>
        <c:if test="${empty catalogEntryDetails}">
            <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catalogNavigationView" 
                expressionBuilder="getCatalogEntryViewAllByPartnumber" varShowVerb="showCatalogNavigationView" maxItems="1" recordSetStartNumber="0">
                <wcf:param name="PartNumber" value="${WCParam.partNumber}" />
                <wcf:contextData name="storeId" data="${storeId}" />
                <wcf:contextData name="catalogId" data="${catalogId}" />
            </wcf:getData>
            <c:set var="catalogEntryDetails" value="${catalogNavigationView.catalogEntryView[0]}"/>
            <wcf:set target = "${cachedCatalogEntryDetailsMap}" key="${key1}" value="${catalogNavigationView.catalogEntryView[0]}"/>
        </c:if>
</c:if>

2 ответа

Решение

Лучшее, что вы можете сделать, - изучить IBM Infocenter. wcf: документы GetData говорят нам, что полученный результат определяется параметром "type". В вашем случае это "com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType". Еще раз откройте документы для CatalogNavigationViewType. Документы говорят нам, что это метод getCatalogEntryView():

Возвращает значение списка ссылок на содержимое "Представление каталога". Содержимое списка имеет тип CatalogEntryViewType. Список записей каталога в заданной области просмотра каталога.

Так что это ответ на ваш вопрос: catalogEntryDetails является экземпляром CatalogEntryViewType. По какой-то причине я не смог найти этот интерфейс в документации IBM. Но вы все равно можете найти его в пакете com.ibm.commerce.catalog.facade.datatypes (находится в \WCDE_ENT70\workspace\WC\Catalog-DataObjects.jar)

Вот:

public interface CatalogEntryViewType

{

public abstract String getUniqueID();

public abstract void setUniqueID(String s);

public abstract String getPartNumber();

public abstract void setPartNumber(String s);

public abstract String getName();

public abstract void setName(String s);

public abstract String getThumbnail();

public abstract void setThumbnail(String s);

public abstract String getFullImage();

public abstract void setFullImage(String s);

public abstract String getShortDescription();

public abstract void setShortDescription(String s);

public abstract String getLongDescription();

public abstract void setLongDescription(String s);

public abstract String getManufacturer();

public abstract void setManufacturer(String s);

public abstract String getKeyword();

public abstract void setKeyword(String s);

public abstract boolean isHasSingleSKU();

public abstract void setHasSingleSKU(boolean flag);

public abstract void unsetHasSingleSKU();

public abstract boolean isSetHasSingleSKU();

public abstract String getSingleSKUCatalogEntryID();

public abstract void setSingleSKUCatalogEntryID(String s);

public abstract String getStoreID();

public abstract void setStoreID(String s);

public abstract List getAttachments();

public abstract List getPrice();

public abstract String getParentCatalogGroupID();

public abstract void setParentCatalogGroupID(String s);

public abstract String getParentCatalogEntryID();

public abstract void setParentCatalogEntryID(String s);

public abstract Map getMetaData();

public abstract UserDataType getUserData();

public abstract void setUserData(UserDataType userdatatype);

public abstract String getNumberOfSKUs();

public abstract void setNumberOfSKUs(String s);

public abstract List getSKUs();

public abstract List getComponents();

public abstract List getMerchandisingAssociations();

public abstract List getAttributes();

public abstract String getSubscriptionTypeCode();

public abstract void setSubscriptionTypeCode(String s);

public abstract String getDynamicKitURL();

public abstract void setDynamicKitURL(String s);

public abstract String getDynamicKitDefaultConfiguration();

public abstract void setDynamicKitDefaultConfiguration(String s);

public abstract boolean isDynamicKitDefaultConfigurationComplete();

public abstract void setDynamicKitDefaultConfigurationComplete(boolean flag);

public abstract void unsetDynamicKitDefaultConfigurationComplete();

public abstract boolean isSetDynamicKitDefaultConfigurationComplete();

public abstract String getDynamicKitModelReference();

public abstract void setDynamicKitModelReference(String s);

public abstract String getTitle();

public abstract void setTitle(String s);

public abstract String getMetaDescription();

public abstract void setMetaDescription(String s);

public abstract String getMetaKeyword();

public abstract void setMetaKeyword(String s);

public abstract String getFullImageAltDescription();

public abstract void setFullImageAltDescription(String s);

public abstract boolean isBuyable();

public abstract void setBuyable(boolean flag);

public abstract void unsetBuyable();

public abstract boolean isSetBuyable();

public abstract Object getCatalogEntryTypeCode();

public abstract void setCatalogEntryTypeCode(Object obj);

public abstract boolean isDisallowRecurringOrder();

public abstract void setDisallowRecurringOrder(boolean flag);

public abstract void unsetDisallowRecurringOrder();

public abstract boolean isSetDisallowRecurringOrder();

}

Поле metaData получено из этой строки:

public abstract Map getMetaData();

Да, вы правы, оно исходит из определения существительного, настроенного в конфигурации медиатора бизнес-объекта: WC\xml\config\com.ibm.commerce.catalog-fep\wc-business-object-mediator.xml. По умолчанию он встроен в SolrReadCatalogEntryViewPartMediator. Из любой документации, которую я мог найти, не ясно, что мне пришлось декомпилировать, чтобы понять это. ВЕСЕЛЬЕ:-(

 <_config:part-mediator interfaceName="com.ibm.commerce.foundation.server.services.dataaccess.bom.mediator.ReadBusinessObjectPartMediator">
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadCatalogEntryViewPartMediator" />
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadCatalogGroupViewPartMediator" />
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadAttachmentAssetViewPartMediator" />
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadSuggestionViewPartMediator" />
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadFacetViewPartMediator" />             
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadBreadCrumbTrailViewPartMediator" />
        <_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadWebContentViewPartMediator" />
        <!-- 
             Note: SolrReadCatalogNavigationViewPostMediator must be declared as the last entry.
        -->
<_config:part-mediator-implementation className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.solr.SolrReadCatalogNavigationViewPostMediator" />
Другие вопросы по тегам