C Resource Catalog Properties and Files

This appendix provides reference information about the configuration, location, and attributes of the default catalog definition file. This information is useful while performing the tasks described in Part III, "Customizing Your Application and Extending Customization Options".

For detailed information about Resource Catalogs, see Chapter 15, "Creating and Managing Resource Catalogs."

This appendix includes the following sections:

C.1 Configuration and Location of Catalog Definitions

The rcv-config section of your adf-config.xml file defines the name of the default catalog. The rcv-config element is not available by default in your application's adf-config.xml file. You must add it if you want to change the name of the default catalog or, if you have chosen to implement multiple catalogs, specify a catalog selector class.

<rcv:rcv-config>
  <rcv:catalog-selector class-name=""/>
  <rcv:default-catalog catalog-name="/oracle/webcenter/portalapp/catalogs/default-catalog.xml"/></rcv:rcv-config>

The Resource Catalog service stores catalog definition files in MDS at the resource-catalog-root directory. The resource-catalog-root is defined as an MDS namespace, hence the exact location depends on your MDS configuration. The default resource-catalog-root is defined by the default-scope attribute in the adf-rcs-config element in your adf-config.xml. This attribute is set to "/" implying that a catalog ID is expressed as fully the qualified MDS path:

<rcs:adf-rcs-config>
  <rcs:rcs-config>
    <rcs:catalog-config default-scope="/"
                        default-registry="/oracle/webcenter/portalapp/catalogs/catalog-registry.xml"/>
    . . . 
    <rcs:security-manager class-name="oracle.webcenter.portalframework.genericsiteresources.internal.security.CatalogSecurityManager"/>
  </rcs:rcs-config>

The security-manager element defines the security manager implementation.

C.2 XML Schema

Example C-1 provides the catalog definition XML schema for your reference.

Example C-1 XML Schema for Catalog Definition

<xsd:schema elementFormDefault="qualified"
            targetNamespace="http://xmlns.oracle.com/adf/rcs/catalog"
            xmlns:rcs="http://xmlns.oracle.com/adf/rcs/catalog"
            xmlns:md="http://xmlns.oracle.com/bali/xml/metadata" 
            xmlns:mds="http://xmlns.oracle.com/mds" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="1.0">
 
  <xsd:annotation>
    <xsd:appinfo>
      <jaxb:schemaBindings>
        <jaxb:package name="oracle.adfinternal.rc.catalog.xml"/>
      </jaxb:schemaBindings>
    </xsd:appinfo>
  </xsd:annotation>
  
  <!-- declare all elements as top-level elements so they appear in the 
       component palette pages generated by XMLEF -->
 
  <!-- IMPORTANT: catalogDefinition & navigationModel CANNOT share a common type -->
  <!--            MDS cannot handle it. -->
  <xsd:element name="catalogDefinition" type="rcs:catalogDefinitionType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
  
  <!-- enable customization for navigation models -->
  <xsd:element name="navigationDefinition" type="rcs:navigationDefinitionType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
  
  <!-- disable customization of the schema definition for both catalog & navigation models -->
  <xsd:element name="schema" type="rcs:schemaType">    
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="descriptor" type="rcs:descriptorType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="attributes" type="rcs:attributesType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="attribute" type="rcs:attributeType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
          <!-- ### this marks "attributeId" attribute as "locally unique" within the <attributes> tag -->
          <mds:localUniqueAttribute>attributeId</mds:localUniqueAttribute>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="parameters" type="rcs:parametersType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="parameter" type="rcs:parameterType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
          <!-- ### this marks "id" attribute as "locally unique" within the <parameters> tag -->
          <mds:localUniqueAttribute>id</mds:localUniqueAttribute>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="contents" type="rcs:contentsType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="folder" type="rcs:folderType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="resource" type="rcs:resourceType"> 
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="includeCatalog" type="rcs:includeCatalogType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="includeNavigation" type="rcs:includeNavigationType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="repository" type="rcs:repositoryType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="dynamicFolder" type="rcs:dynamicFolderType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="source" type="rcs:dynamicFolderSourceType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="customFolder" type="rcs:customFolderType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="component" type="rcs:componentType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="url" type="rcs:urlType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="customContent" type="rcs:customContentType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
  <xsd:element name="separator" type="rcs:separatorType">
    <xsd:annotation>
      <xsd:appinfo>
        <md:elementMetadata>
          <mds:customizationAllowed>true</mds:customizationAllowed>
        </md:elementMetadata>
      </xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
 
 
 
  <xsd:complexType name="descriptorType">
    <xsd:attribute name="attributeId" type="xsd:string" use="required"/>
    <xsd:attribute name="labelKey" type="xsd:string"/>
    <xsd:attribute name="shortLabelKey" type="xsd:string"/>
    <xsd:attribute name="helpTextKey" type="xsd:string"/>
    <xsd:attribute name="hintTextKey" type="xsd:string"/>    
    <xsd:attribute name="searchable" type="xsd:boolean" default="true"/>
    <xsd:attribute name="multivalue" type="xsd:boolean" default="false"/>
    <xsd:attribute name="endUserVisible" type="xsd:boolean" default="true"/>
    <xsd:attribute name="resourceBundle" type="xsd:string"/>
  </xsd:complexType>
  
 
  <xsd:complexType name="schemaType">
    <xsd:sequence>
      <xsd:element ref="rcs:descriptor" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="resourceBundle" type="xsd:string"/>
  </xsd:complexType>
 
 
  <xsd:complexType name="attributeType">
    <xsd:attribute name="attributeId" type="xsd:string" use="required"/>
    <xsd:attribute name="value" type="xsd:string" use="required"/>
    <xsd:attribute name="isKey" type="xsd:boolean" default="false"/>
    <xsd:attribute name="resourceBundle" type="xsd:string"/>
  </xsd:complexType>
  
  <xsd:complexType name="attributesType">
    <xsd:sequence>
      <xsd:element ref="rcs:attribute" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="resourceBundle" type="xsd:string"/>
  </xsd:complexType>
 
  <xsd:complexType name="parameterType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="id" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <xsd:complexType name="parametersType">
    <xsd:sequence>
      <xsd:element ref="rcs:parameter" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
 
  <xsd:complexType name="itemType">
    <xsd:all>
      <xsd:element ref="rcs:attributes" minOccurs="0" maxOccurs="1"/> 
      <xsd:element ref="rcs:parameters" minOccurs="0" maxOccurs="1"/>
    </xsd:all>
    <xsd:attribute name="id" type="xsd:ID" use="required"/>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="description" type="xsd:string"/>
    <xsd:attribute name="visible" type="xsd:string" default="true"/>
  </xsd:complexType>
  
  
  <xsd:complexType name="includeCatalogType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="scope" type="xsd:string" use="required"/>
        <xsd:attribute name="catalogId" type="xsd:string" use="required"/>
        <xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="includeNavigationType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="scope" type="xsd:string" use="required"/>
        <xsd:attribute name="navigationId" type="xsd:string" use="required"/>
        <xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="repositoryType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="repository" type="xsd:string" use="required"/>
        <xsd:attribute name="path" type="xsd:string"/>
        <xsd:attribute name="includeSubfolders" type="xsd:boolean" default="true"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
 
  <xsd:complexType name="dynamicFolderSourceType">
    <xsd:attribute name="repository" type="xsd:string"/>
    <xsd:attribute name="path" type="xsd:string"/>
    <xsd:attribute name="includeSubfolders" type="xsd:boolean" default="true"/>
  </xsd:complexType>
 
  <xsd:complexType name="dynamicFolderType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:sequence>
          <xsd:element ref="rcs:source" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="expression" type="xsd:string"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="customContentType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="contentProviderClass" type="xsd:string" use="required"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="customFolderType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
        <xsd:attribute name="path" type="xsd:string"/>
        <xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
  <!-- this is a bit of a kludge. To keep MDS happy we must define a type -->
  <!-- for separators even though they don't have any special attributes -->
  <xsd:complexType name="separatorType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType"/>
    </xsd:complexContent>
  </xsd:complexType>
 
<!-- implementation of filters has been deferred
 
  <xsd:complexType name="filterType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:attribute name="expression" type="xsd:string"/>
        <xsd:attribute name="filterClass" type="xsd:string"/>
        <xsd:attribute name="scope" type="xsd:string" default="subtree"/>        
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
-->
 
  <xsd:group name="folderContentGroup">
    <xsd:choice>
      <xsd:element name="folder" type="rcs:folderType"/>
      <xsd:element name="repository" type="rcs:repositoryType"/>
      <xsd:element name="resource" type="rcs:resourceType" /> 
      <xsd:element name="dynamicFolder" type="rcs:dynamicFolderType" />
      <xsd:element name="customFolder" type="rcs:customFolderType"/>
      <xsd:element name="customContent" type="rcs:customContentType"/>
      <xsd:element name="component" type="rcs:componentType"/>
      <xsd:element name="url" type="rcs:urlType"/>
      <xsd:element name="includeCatalog" type="rcs:includeCatalogType"/>
      <xsd:element name="includeNavigation" type="rcs:includeNavigationType"/>
      <xsd:element name="separator" type="rcs:separatorType"/>
    </xsd:choice>
  </xsd:group>
   
   <xsd:complexType name="contentsType">
      <xsd:group ref = "rcs:folderContentGroup" minOccurs="0" maxOccurs="unbounded" /> 
   </xsd:complexType>
 
  <!-- contents is optional to allow resourceType to extend folderType -->
  <!-- most resources won't have children so the contents element should be optional -->
  <xsd:complexType name="folderType">
    <xsd:complexContent>
      <xsd:extension base="rcs:itemType">
        <xsd:all>
<!--      <xsd:element name="filter" type="rcs:filterType" minOccurs="0" maxOccurs="unbounded"/> -->
          <xsd:element ref="rcs:contents" minOccurs="0" maxOccurs="1"/>
        </xsd:all>        
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
    
  <!-- resourceType extends folderType to allow resource elements to have children -->  
  <xsd:complexType name="resourceType">
    <xsd:complexContent>
      <xsd:extension base="rcs:folderType">
        <xsd:attribute name="repository" type="xsd:string" use="required"/>
        <xsd:attribute name="path" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
  <!-- resourceType extends folderType to allow component elements to have children -->  
  <xsd:complexType name="componentType">
    <xsd:complexContent>
      <xsd:extension base="rcs:folderType">
        <xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
  <!-- resourceType extends folderType to allow URL elements to have children -->  
  <xsd:complexType name="urlType">
    <xsd:complexContent>
      <xsd:extension base="rcs:folderType">
        <xsd:attribute name="url" type="xsd:string" use="required"/>
        <xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
      </xsd:extension>          
    </xsd:complexContent>
  </xsd:complexType>
 
  <xsd:complexType name="catalogDefinitionType">
    <xsd:complexContent>
      <xsd:extension base="rcs:folderType">
        <xsd:all>
          <xsd:element ref="rcs:schema" minOccurs="0" maxOccurs="1"/>
        </xsd:all>
        <xsd:attribute name="contact" type="xsd:string"/>
        <xsd:attribute name="definitionFilter" type="xsd:string"/>
        <xsd:attribute name="resourceBundle" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
   
  <xsd:complexType name="navigationDefinitionType">
    <xsd:complexContent>
      <xsd:extension base="rcs:folderType">
        <xsd:all>
          <xsd:element ref="rcs:schema" minOccurs="0" maxOccurs="1"/>
        </xsd:all>
        <xsd:attribute name="contact" type="xsd:string"/>
        <xsd:attribute name="definitionFilter" type="xsd:string"/>
        <xsd:attribute name="resourceBundle" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
 
</xsd:schema>

C.3 Catalog Definition Attributes

The catalog definition schema provides a rich set of elements through which you can specify the structure and content of your Resource Catalogs.

This section contains the following subsections:

For an example of creating a custom catalog definition file, see Section 15.2, "Creating a Custom Resource Catalog."

C.3.1 catalogDefinition

The catalogDefinition element defines the overall characteristics of the catalog, such as the location of translated strings.

Example C-2 illustrates the use of catalogDefinition.

Example C-2 Example of catalogDefinition

<catalogDefinition id="DefaultCatalog" visible="#{true}"
                   resourceBundle="portal.catalog.DefaultCatalogBundle"
                   definitionFilter="portal.catalog.DefaultCatalogFilter"
                   xmlns="http://xmlns.oracle.com/adf/rcs/catalog">

Table C-1 describes the keywords of the catalogDefinition element. For information about including attributes for elements, see Section C.3.8, "attributes."

Table C-1 catalogDefinition Keywords

Keyword Description
xmlns
http://xmlns.oracle.com/adf/rcs/catalog
id

The identifier used when referring to this catalog definition.

visible

Whether the Resource Catalog must be available for selection at runtime. This attribute takes an EL value and can be used to conditionally display the catalog to specific users or groups. The default value is #{true}, which means that the catalog is displayed at all times.

resourceBundle

The name of the resource bundle to be used for obtaining translated attribute values, where <attribute.... isKey="true"/>. The resourceBundle attribute can also be used at lower levels in the document, such as on individual attributes elements. Refer to the XSD for further details.

definitionFilter

The fully qualified name of a Java class that implements the oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilter. You can use a definition filter to dynamically exclude entries from a catalog at runtime. One common use of a definition filter is to provide different views of the same catalog to users with different roles. For example, WebCenter Portal: Spaces uses a definition filter to hide entries for services that the administrator has disabled.


A catalog can have attributes, such as title, subject, and description. For information about including attributes, see Section C.3.8, "attributes."

C.3.2 folder

The folder element defines a catalog folder, used to organize content in the catalog. Folders can contain any number of entries including other folders. You can mix different types of catalog elements in the same folder.

Folders can have attributes just like any other entry. For information about including attributes for elements, see Section C.3.8, "attributes."

Example C-3 illustrates the use of the folder element.

Example C-3 Example of folder

<folder visible="#{true}" id="webDevFolder">
  <attributes>
    <attribute value="WEB_DEV_FOLDER.TITLE" attributeId="Title"
               isKey="true"/>
    <attribute value="WEB_DEV_FOLDER.DESCRIPTION" attributeId="Description"
               isKey="true"/>
    <attribute value="WEB_DEV_FOLDER.KEYWORDS" attributeId="Subject"
               isKey="true"/>
    <attribute value="/adf/webcenter/folderlayout_qualifier.png"
               isKey="false" attributeId="IconURI"/>
  </attributes>
  <contents/>
<folder>

Table C-2 describes the keywords of the folder element.

Table C-2 folder Keywords

Keyword Description
id

The unique identifier used when referring to this folder.

visible

Whether the resource must be rendered in the catalog. This attribute takes an EL value and can be used to conditionally display the resource to specific users or groups. The default value is #{true}, which means that the resource is displayed in the catalog at all times.


Rather than adding the code to the catalog definition source, you may find it easier to add a folder in Design view of the catalog definition file. For more information, see Section 15.2.3.1, "Adding a Folder."

C.3.3 url

The url element is used to define the following types of links in a catalog:

  • Task Flow: Link to a WebCenter Portal service task flow or a custom task flow created in Oracle JDeveloper.

  • Portlet: Link to any registered portlet producer.

  • Content: Link to a file or directory from an existing Content Repository connection.

  • Other: Link to a custom component that you create by providing the XML code for that component.

Example C-4 illustrates the use of the url element.

Example C-4 Example of a url Resource

<url visible="#{true}"
     factoryClass="oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory"
     id="tagCloud"
     url="taskflow://oracle/webcenter/tagging/controller/taskflows/tag-selection.xml#tag-selection">
  <attributes>
    <attribute value="TAG_CLOUD.TITLE" attributeId="Title" isKey="true"/>
    <attribute value="TAG_CLOUD.DESCRIPTION" attributeId="Description"
               isKey="true"/>
    <attribute value="TAG_CLOUD.KEYWORDS" attributeId="Subject"
               isKey="true"/>
    <attribute value="oracle.webcenter.tagging"
               attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
    <attribute value="/adf/webcenter/label_qualifier.png"
               attributeId="IconURI"/>
    <attribute value="height:211px" attributeId="attr.contentStyle"
               isKey="false"/>
  </attributes>
  <contents/>
</url>

Table C-3 describes the keywords for the url element.

Table C-3 url Keywords

Keyword Description
id

The unique identifier used when referring to this folder.

visible

Whether the resource must be rendered in the catalog. This attribute takes an EL value and can be used to conditionally display the resource to specific users or groups. The default value is #{true}, which means that the resource is displayed in the catalog at all times.

factoryClass

If you are adding a custom component, then specify the factory class of the component. For all other resource types, the Factory Class value is populated as soon as you select the type in Design mode.

The factory classes for the available resource types are as follows:

  • Task flow: oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory

  • Portlet: oracle.webcenter.portalframework.sitestructure.rc.PortletResourceFactory

  • Content: oracle.webcenter.content.model.rc.ContentUrlResourceFactory

  • Data control: oracle.webcenter.datacomposer.internal.adapter.datacontrol.DataControlContextFactory

URL

The URL to access the resource. Different link types support different URL formats. For more information, see Table 15-1, "URL Format for the Different Resource Types".


Resource links can have attributes, such as title, subject, and description, and parameters. For more information, see Section C.3.8, "attributes" and Section C.3.10, "parameters."

Rather than adding the code to the catalog definition source, you may find it easier to add a link in Design view of the catalog definition file. For more information, see Section 15.2.3.2, "Adding a Link."

C.3.4 includeCatalog

The includeCatalog element is used to include a reference to another catalog definition file.

Example C-5 illustrates the use of the includeCatalog element.

Example C-5 Example of a Nested Resource Catalog

<includeCatalog visible="#{true}" scope="/" id="users-catalog"
                catalogId="/oracle/webcenter/portalapp/catalogs/users-catalog.xml">
 <attributes>
   <attribute value="catalog" isKey="false" attributeId="Title"/>
 </attributes>
</includeCatalog>

The includeCatalog element supports the same keywords as the catalogDefinition element. See Table C-1 for the keywords on the includeCatalog element.

A catalog can have attributes, such as title, subject, and description. For information about including attributes for elements, see Section C.3.8, "attributes."

Rather than adding the code to the catalog definition source, you may find it easier to add a catalog in Design view of the catalog definition file. For more information, see Section 15.2.3.3, "Adding a Resource Catalog."

C.3.5 component

The component element is used to include a custom XML resource, such as a simple ADF Faces component or raw HTML, in the catalog. The component element must be located within the contents section. You can add multiple component in a catalog definition file.

The component element must contain a parameters element with a nested parameter element. Set the id for the parameter element to xml. Include the XML fragment inside this parameter element. To generate an ADF Faces ID for the component at runtime, set the ID on the component to # (hash symbol).

Example C-6 shows the code to add a Box component to the Resource Catalog.

Example C-6 Panel Customizable Component in the Catalog Definition File

<component id="pc" visible="#{true}"
           factoryClass="oracle.adf.rc.component.XmlComponentFactory">
  <attributes>
    <attribute attributeId="Title" value="BOX" isKey="true"/>
    <attribute attributeId="Description" value="BOX.DESCRIPTION"
               isKey="true"/>
    <attribute attributeId="Subject" value="BOX.KEYWORDS" isKey="true"/>
    <attribute attributeId="IconURI"
               value="/adf/webcenter/panelcustomizable_qualifier.png"/>
  </attributes>
<parameters>  <parameter id="xml">&lt;cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/&gt;
  </parameter></parameters>
  </parameters>
</component>

Table C-4 describes the keywords of the component element. For information about including attributes for elements, see Section C.3.8, "attributes."

Table C-4 component Keywords

Keyword Description

id

The unique identifier for the component in the catalog definition.

visible

Whether the resource must be rendered in the catalog. This attribute takes an EL value and can be used to conditionally display the resource to specific users or groups. The default value is #{true}, which means that the resource is displayed in the catalog at all times

factoryClass

The name of a Java class that implements the oracle.adf.rc.component.ComponentFactory interface and generates a Resource Catalog item based on a set of parameters. Each ComponentFactory implementation defines the set of parameters it requires. For example, XmlComponentFactory requires a single parameter named xml and the value of the parameter is a block of XML representing a component or components that can be inserted into a page.


A custom component can have attributes, such as title, subject, and description, and parameters. For more information, see Section C.3.8, "attributes" and Section C.3.10, "parameters."

You may find it easier to add a custom component in Design view of the catalog definition file. For more information, see Section 15.2.3.4, "Adding a Component."

C.3.6 customFolder

The customFolder element defines content generated using Resource Catalog adapters. This element renders a folder that is populated with content dynamically at runtime. The catalog displays the folder even if there are no resources inside it.

Example C-7 illustrates the use of the customFolder element to render task flows from the Analytics service.

Example C-7 Example of a customFolder Resource

<customFolder factoryClass="oracle.webcenter.analytics.view.rc.ASServiceContextFactory" id="analyticsServiceFolder" visible="#{true}">
         <attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle">
            <attribute attributeId="Description" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.DESCRIPTION"/>
            <attribute attributeId="IconURI" isKey="false" value="/adf/webcenter/folderanalytics_qualifier.png"/>
            <attribute attributeId="Subject" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.KEYWORDS"/>
            <attribute attributeId="WEBCENTER_SERVICE_ID" isKey="false" value="oracle.webcenter.analytics"/>
            <attribute attributeId="attr.text" isKey="false" value="#{uib_o_w_s_r_DefaultGroupSpaceCatalog['ANALYTICS_FOLDER.TITLE']}"/>
            <attribute attributeId="Title" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.TITLE"/>
         </attributes>
         <parameters/>
      </customFolder>

Table C-5 describes the keywords for the customFolder element.

Table C-5 customFolder Keywords

Keyword Description
id

The unique identifier used when referring to this folder.

visible

Whether the resource must be rendered in the catalog. This attribute takes an EL value and can be used to conditionally display the resource to specific users or groups. The default value is #{true}, which means that the resource is displayed in the catalog at all times.

factoryClass

The factory class of the service.

See Section C.4, "Factory Classes Available for Adding Dynamic Resources to the Catalog" for information about the supported factory classes.


A custom folder can have attributes, such as title, subject, and description, and parameters. For more information, see Section C.3.8, "attributes" and Section C.3.10, "parameters."

Rather than adding the code to the catalog definition source, you may find it easier to add a custom folder in Design view of the catalog definition file. For more information, see Section 15.2.3.5, "Adding a Custom Folder."

C.3.7 customContent

The customContent element defines content generated using Resource Catalog adapters. This element renders a folder that contains resources that are generated dynamically at runtime. Unlike the customFolder element, the customContent element renders a folder in the catalog only if the folder contains resources.

Example C-8 illustrates the use of the customContent element.

Example C-8 Example of a customContent Resource

<customContent contentProviderClass="com.oracle.ensemble.interop.adf.EnsembleContentProvider"
               id="ensembleContentProvider" visible="true">
  <attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle"/>
</customContent>

Table C-3 describes the keywords for the customContent element.

Table C-6 customContent Keywords

Keyword Description
id

The unique identifier used when referring to this folder.

visible

Whether the resource must be rendered in the catalog. This attribute takes an EL value and can be used to conditionally display the resource to specific users or groups. The default value is #{true}, which means that the resource is displayed in the catalog at all times.

contentProviderClass

The fully qualified name of a class that implements the interface oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2.


A custom content provider can have attributes, such as title, subject, and description, and parameters. For more information, see Section C.3.8, "attributes" and Section C.3.10, "parameters."

Rather than adding the code to the catalog definition source, you may find it easier to add a custom content folder in Design view of the catalog definition file. For more information, see Section 15.2.3.6, "Adding a Custom Content Provider."

C.3.8 attributes

Entries in a Resource Catalog have associated attributes that describe the entry. Values for some attributes can be obtained directly from the resources or from the name and description attributes on each XML element in the catalog definition. However, these values may not always be appropriate for displaying to end users, and often they are not available in different languages. Attributes defined using the attributes element in the catalog definition let you override those available from other sources. In addition, these attributes can be defined in terms of a key to a resource bundle so the actual values displayed reflect the current user's locale.

Within the attributes element you can insert any number of individual attribute elements that define the attributes you want to apply to a Resource Catalog entry.

Example C-9 illustrates the use of the attributes element.

Example C-9 Example of attributes and attribute Elements

<attributes>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.TITLE" attributeId="Title"
  isKey="true"/>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.DESCRIPTION" attributeId="Description"
  isKey="true"/>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.KEYWORDS" attributeId="Subject"
  isKey="true"/>
 <attribute value="oracle.webcenter.collab.announcement" 
  attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
</attributes>

Table C-7 describes the keywords of the attributes element.

Table C-7 attributes Keywords

Keyword Description
resourceBundle

The name of the resource bundle to be used for obtaining translated attribute values.


C.3.9 attribute

The attribute element defines an attribute for a Resource Catalog entry that corresponds to a descriptor in the schema element. For information about attributes, see Section C.3.8, "attributes." Composer uses the following attributes:

  • Title

  • Description

  • Subject

  • IconURI

  • ToolTip

You should include at least a Title and Description attribute for each catalog entry. A Subject attribute is also highly recommended to facilitate keyword searching of the Resource Catalog. The Title attribute overrides the name attribute on the parent element and is used to declare a display name that is translated through a resource bundle. Similarly, the Description attribute overrides the description attribute on the parent element and is used to declare a description that is translated through a resource bundle.

You can declare your own attributes by including them in the schema element. For more information, see Section C.3.11, "schema."

Example C-10 illustrates the use of the attribute element.

Example C-10 Example of attributes and attribute Elements

<attributes>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.TITLE" attributeId="Title"
  isKey="true"/>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.DESCRIPTION" attributeId="Description"
  isKey="true"/>
 <attribute value="ANNOUNCEMENTS_MAIN_VIEW.KEYWORDS" attributeId="Subject"
  isKey="true"/>
 <attribute value="oracle.webcenter.collab.announcement" 
  attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
</attributes>

Table C-8 describes the keywords of the attribute element.

Table C-8 attribute Keywords

Keyword Description
attributeId

The identifier of the attribute as declared in the schema element.

value

The value of the attribute.

isKey

A flag indicating whether the value is a literal value (false) or a key to a resource bundle (true). In most cases, attributes should be resource bundle keys and the values translated through a resource bundle. The resource bundle can be declared at the catalog level or on various lower level elements such as attributes.

resourceBundle

The name of the resource bundle to be used for obtaining translated attribute values.


For task flows included in your Resource Catalog, you can use the attribute element to pass task flow parameters and attributes of the enclosing Show Detail Frame component. You can do this by prefixing the attributeId values for the task flow parameters and Show Detail Frame attributes with parameter. and attr. respectively as shown in the following example:

<attributes>
  <attribute value="dark" attributeId="attr.background"
   isKey="false"/>
  <attribute value="#{myBean.myParam1}" attributeId="parameter.myParam1"
   isKey="false"/>
</attributes>

For more information, see Section 15.2.9, "How to Define Task Flow Parameters and Attributes of the Enclosing Show Detail Frames for Task Flows."

C.3.10 parameters

A few of the Resource Catalog components, such as links, custom components, and custom folders, support parameters. Parameters are used to provide the XML code for a custom component or bind the resource to other artifacts in the application. You can use the parameters element to define parameters on a resource. The parameters element must be included inside the tag for the resource. Each parameters element can have multiple parameter tags. You must provide an ID and a value for each parameter that you define.

When you define a parameter for a custom XML component, you must specify the parameter ID to be xml and the value is the code for the custom component. In the code, the component's ID must be # so that it is generated at runtime. In addition, you must specify the namespace for the component.

Example C-11 illustrates the use of the parameters element in a custom XML component definition.

Example C-11 Example of parameters and parameter Elements

<parameters>  <parameter id="xml">&lt;cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/&gt;
  </parameter></parameters>

C.3.11 schema

The schema element contains one or more descriptor elements. The descriptor elements provide the Resource Catalog service with information about the attributes used within the catalog, such as whether they are searchable. Out-of-the-box, the attributes Title, Description, Subject, ToolTip, and IconURI are supported for a resource. You can add other custom attributes that you want to expose on the resource.

Example C-12 illustrates the use of the schema element.

Example C-12 Example of schema

<schema resourceBundle="oracle.adf.rc.attribute.nls.AttributeBundle"
          xmlns="http://xmlns.oracle.com/adf/rcs/catalog">
    <descriptor labelKey="TITLE.PROMPT_KEY" endUserVisible="true"
                multivalue="false" searchable="true" attributeId="Title"
                shortLabelKey="TITLE.SHORT_PROMPT_KEY"
                xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
    <descriptor labelKey="DESCRIPTION.PROMPT_KEY" endUserVisible="true"
                multivalue="false" searchable="true" attributeId="Description"
                shortLabelKey="DESCRIPTION.SHORT_PROMPT_KEY"
                xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
    <descriptor labelKey="SUBJECT.PROMPT_KEY" endUserVisible="true"
                multivalue="false" searchable="true" attributeId="Subject"
                shortLabelKey="SUBJECT.SHORT_PROMPT_KEY"
                xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
    <descriptor labelKey="TOOL_TIP.PROMPT_KEY" endUserVisible="true"
                multivalue="false" searchable="false" attributeId="ToolTip"
                shortLabelKey="TOOL_TIP.SHORT_PROMPT_KEY"
                xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
    <descriptor labelKey="ICON_URI.PROMPT_KEY" endUserVisible="false"
                multivalue="false" searchable="false" attributeId="IconURI"
                shortLabelKey="ICON_URI.SHORT_PROMPT_KEY"
                xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
  </schema>

Table C-9 describes the keywords of the descriptor element.

Table C-9 descriptor Keywords

Keyword Description
attributeId

The identifier of the attribute being described.

searchable

Indicates whether the attribute is included in Resource Catalog searches (true) or not (false).

multivalue

Indicates whether the attribute can have multiple values (true) or not (false).

endUserVisible

Indicates whether the attribute should be exposed to end users (true) or not (false).

resourceBundle

The name of the resource bundle used to translate the label keys.

labelKey

The resource bundle key for the attribute's label.

shortLabelKey

The resource bundle key for the attribute's short label.


C.3.12 resource

The resource element is used to declare an individual resource, such as a task flow, in the catalog. You would need to use this element if you are using a standalone version of Composer (that is, Composer without WebCenter Portal: Framework).

Note:

The url element, discussed in Section C.3.3, "url," also enables you to declare a resource in the catalog. However, url is available only if you have installed WebCenter Portal: Framework and have the associated shared libraries.

Example C-13 illustrates the use of the resource element.

Example C-13 Example of resource

<resource id="weatherTF"
      repository="application.classpath"
      path="TaskFlow.jar/ADF_TaskFlow/oracle+composer+internal+test+weather-tfdefn.xml#weather_tf_defn"      visible="#{true}">
  <attributes>
    <attribute value="/images/bulbgauge_ena.png" attributeId="IconURI"/>
    <attribute value="never" attributeId="attr.showResizer"/>
    <attribute value="Weather in Bangalore is rainy"
               attributeId="parameter.message"/>
    <attribute value="WeatherBee" isKey="false" attributeId="Title"/>
    <attribute value="Displays the weather of your city" isKey="false"
               attributeId="Description"/>
    <attribute value="Weather widget" isKey="false" attributeId="ToolTip"/>
  </attributes>
  <parameters/>
</resource>

Table C-10 describes the keywords of the resource element. For information about including attributes for elements, see Section C.3.8, "attributes."

Table C-10 resource Keywords

Keyword Description

id

The identifier for the element in the catalog. Identifiers are required and must be unique at the folder level.

repository

The path to access ADF libraries included in your classpath.

path

The path to the resource. For a task flow in an ADF Library, the path is of the following form:

path_to_jar/ADF_TaskFlow/task_flow_path

To obtain the task_flow_path, create a file system connection in Application Connections and navigate to the task flow in your ADF Library. The tooltip for the task flow shows the fully qualified ID of the task flow. Take this value and replace all occurrences of "/" with "+".

For example:

If the tooltip is:

oracle/webcenter/collab/announcement/view/taskflows/main-view-definition.xml#announcement-main-view

then task_flow_path would be:

oracle+webcenter+collab+announcement+view+taskflows+main-view-definition.xml#announcement-main-view


C.4 Factory Classes Available for Adding Dynamic Resources to the Catalog

Resource Catalog adapters are used to add resources to a catalog dynamically, for example, a folder to display all available content repository connections to users. As the content of such a folder cannot be determined when you create the catalog, the adapter ensures that the folder is populated dynamically.

To use an adapter, you must specify the factory class as part of the resource definition while adding the resource. This section describes the supported factory classes. It includes the following sections:

C.4.1 XMLComponentFactory

Use the oracle.adf.rc.component.XmlComponentFactory class inside a <component> construct to include an XML component in the catalog. The XmlComponentFactory class requires a single parameter named xml and the value of the parameter is a block of XML representing one or more components that can be added to a page. The following example shows the code to add a Panel Customizable component to the Resource Catalog:

<component id="pc" factoryClass="oracle.adf.rc.component.XmlComponentFactory">
  <attributes>
    <attribute attributeId="Title" value="Box"/>
    <attribute attributeId="Description" value="Container for other objects"/>
    <attribute attributeId="IconURI" value="/adf/webcenter/panelcustomizable_qualifier.png"/>
  </attributes>
  <parameters>
    <parameter id="xml">
      <cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/>
    </parameter>
  </parameters>
</component>

For the detailed steps, see Section 15.2.3.4, "Adding a Component."

C.4.2 ContentUrlResourceFactory

The ContentUrlResourceFactory class is used to include portal framework content from UCM connections. It is used when you add a URL resource of type Content to the catalog. The following example shows how the ContentUrlResourceFactory class can be used:

<url id="contentItem"
     factoryClass="oracle.webcenter.content.model.rc.ContentUrlResourceFactory"
     url="content://UCM/PersonalSpaces/weblogic/content.xml">
<attributes>
  <attribute value="Personal Document" isKey="false" attributeId="Title"/>
</attributes>
<parameters>
  <parameter id="templateView">SpaceTemplate</parameter>
  </parameters>
</url>

where id is the unique identifier for the resource, and url is the URL to access the resource. The URL must begin with content: if you use ContentUrlResourceFactory. In addition, you can add a templateView parameter to specify the Content Presenter display template to be used.

For more information, see Section 15.2.3.2, "Adding a Link."

C.4.3 CustomFolderContextFactory

The ContentFolderContextFactory class is used to list all the Content Repository connections available to the application. You can add a customFolder resource to the catalog and specify this factory class, as shown in the following example:

<customFolder id="AllConnections"               factoryClass="oracle.webcenter.content.model.rc.CustomFolderContextFactory" />

For more information about custom folders, see Section 15.2.3.5, "Adding a Custom Folder."

C.4.4 DefaultFolderContextFactory

In the WebCenter Portal: Spaces context, the DefaultFolderContextFactory class is used to render the folder for the current space. If the user is in the Home space, then the user's personal folder is rendered. You can add a customFolder resource to the catalog and specify this factory class, as shown in the following example:

<customFolder id="GroupDocuments"
              factoryClass="oracle.webcenter.doclib.model.rc.DefaultFolderContextFactory" />

For more information about custom folders, see Section 15.2.3.5, "Adding a Custom Folder."

C.4.5 ContentListFactory

The ContentListFactory class is used to add a dynamic list of folders to the catalog. You can add a customFolder resource to the catalog and specify this factory class, as shown in the following example:

<customFolder id="customFolder-folder" visible="#{true}" path=""
              factoryClass="oracle.webcenter.content.model.rc.ContentListFactory">
  <attributes>
    <attribute attributeId="Title" value="Folders List" isKey="false"/>
  </attributes>
  <parameters>
    <parameter id="datasource">UCM#dCollectionID:60</parameter>
    <parameter id="datasourceType">dsTypeFolderContents</parameter>
  </parameters>
 </customFolder>

The ContentListFactory class supports the following parameters:

  • datasource: The data source of the content. The value depends on the value of datasourceType.

  • datasourceType: The data source type of the content. Valid values are dsTypeSingleNode, dsTypeFolderContents, dsTypeQueryExpression, dsTypeMultiNode, and dsTypeScenarioResults.

  • templateView: To specify the Content Presenter display template to be used.

For more information about using Content Presenter, see Chapter 30, "Adding Content Task Flows and Document Components to a Portal Page."

C.4.6 EnsembleContentProvider

The EnsembleContentProvider class is used to display a dynamic list of all registered pagelet producers. You can add a customContent resource to the catalog and specify this factory class, as shown in the following example:

<customContent contentProviderClass="com.oracle.ensemble.interop.adf.EnsembleContentProvider" 
               id="ensembleContentProvider" visible="true">
  <attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle"/>
</customContent>

For more information about custom content providers, see Section 15.2.3.6, "Adding a Custom Content Provider."