Writing content spi

Hi, I've a cms portlet that does CRUD of content in it's own repository (maybe
Oracle DB)
I would like to integrate the the content as well as repository to the BEA portal
for personalization purposes.
Is there anyone who has done it before.
Can anyone provide me some details on how I can do this?

Edmund, unfortunately i don't know of an example spi implementation to point you
to that is public. The article does discuss the interfaces you need to implement,
there are about 5 of them that reside in com.bea.content.spi. content_repo.jar
is the bea ootb implementation of the spi, but the spi interfaces reside in content.jar.
let me know if you run into specific issues/questions with your implementation.
James
"Fred Simone" <[email protected]> wrote:
>
Hi James,
I read through the article you emailed me, the article is still very
brief.
It does not mentioned what are implementation needed to be involved
what are the interface exactly required for implementation.
Is there a more detailed guide on how i can do this.
Btw, I noticed that there a content_repo.jar, is that what I need to
implement?
I would appreciate if there are any sample or detail guide that I can
continue
my
implementation for the BEA Portal 3rd Party CM Personal.
regards,
Edmund Leong
93897453
"James Owen" <[email protected]> wrote:
We recently submitted an article to dev2dev on the content spi, butit
hasn't been
posted yet. If you send me an email ([email protected]) requesting the article,
i'll
pass it along.
regards,
james
"Fred Simone" <[email protected]> wrote:
Hi, I've a cms portlet that does CRUD of content in it's own repository
(maybe
Oracle DB)
I would like to integrate the the content as well as repository to
the
BEA portal
for personalization purposes.
Is there anyone who has done it before.
Can anyone provide me some details on how I can do this?

Similar Messages

  • Content SPI question

    This seems to be saying that I cannot implement a library services enabled repository of my own? I thought BEA's OOTB repository implementation supports library services and I know that it is based on the Content SPI.
    So why not provide hooks in the Content SPI for library services?

    Libary services are default-enabled for the BEA repository.
    See edocs:
    http://e-docs.bea.com/wlp/docs92/cm/filesystemArchCM.html#wp1078317
    Enabling Library Services for a BEA Repository
    WebLogic Portal's library services allow you to version content and use content workflows to route content through an approval and publishing process. If you are using a BEA repository, you should enable library services before organizing your repository. Enabling library services gives you access to content workflows and versioning. Adding Content to a BEA Repository.
    Note: Once you have enabled library services for a repository, they cannot be disabled.
    To enable library services:
    From the main menu of the Portal Administration Console, select Content > Content Management.
    Select Manage | Repositories to view the Repositories tree.
    Click the BEA repository for which you want to enable library services.
    In the Summary tab, click Library Services to view the Library Services dialog.
    Mark the Library Services Enabled check box and click Save.

  • Writing Contents Of TreeSet To File

    I am still a student of Java, so forgive me for the elementary question.
    Is it possible to write the contents of a TreeSet to a File?
    I would also like to be able to save the TreeSet in binary form instead of having it disappear when the program is closed. I think I need Serializable for this task.
    The program I am trying to develop is for storing film titles. They need to be retrieved at program start-up. So far I have been able to have the titles go directly into the TreeSet from a JTextField with the click of a JButton. But obviously they are only in temporary memory and need to be saved to disk.
    Thanks for any help.

    > Is it possible to write the contents of a TreeSet to
    a File?
    Sure, writing text to a file: http://javaalmanac.com/egs/java.io/WriteToFile.html
    > I would also like to be able to save the TreeSet in
    binary form instead of having it disappear when the
    program is closed. I think I need Serializable for
    this task.
    Correct. Check out this link: http://javaalmanac.com/egs/java.io/SerializeObj.html
    > The program I am trying to develop is for storing
    film titles. They need to be retrieved at program
    start-up. So far I have been able to have the titles
    go directly into the TreeSet from a JTextField with
    the click of a JButton. But obviously they are only
    in temporary memory and need to be saved to disk.
    Wouldn't you prefer a Map (key/value pair) over a Set? With a map you can store the fim title as a key and create your own Movie object which stores director, year, actors/actresses etc. as the value.
    See: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html
    Good luck.

  • Writing contents of XML-documents with SAX

    I have the following problem: I use the SAX-API for parsing an XML- document and to write the contents of several tags into field variables.
    For that, I use the method 'characters(char cbuf[], int start, int len' and read the interesting string part
    'new String(cbuf,start,len) where cbuf is the character buffer, start the offset in the file and len the length of the string within the tag.
    I registered the following problem if I load my application from a jar-file (with a 13kb long xml-file):
    The offset runs till 8192 bytes and then resets to 1 and runs up again. If it reaches the offset 8192 bytes (8Kbyte) within a string as content of a tag, the string is split into two: the first till this offset and the second after it.
    I have already tried to solve this problem by setting some features of the SAX-parser but I had no success.
    The problem does not occur if I start my application from the Oracle-JDeveloper.
    Is there anyone who has an idea? I am glad about any information or hint which might a help for me.
    Thank you.

    From the javadocs for org.xml.sax.ContentHandler.characters(char[] ch,
    int start,
    int length)
    The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity so that the Locator provides useful information.
    To get around this.
    - Initialize a StringBuffer field in startElement().
    characters = new StringBuffer();- Each time characters() is called, append the section of the char[] to the StringBuffer.
    characters.append(buf, offset, len);- Work with the entire resulting value in endElement().
    -Scott
    http://www.swiftradius.com

  • UCM-VCR Adapter in WLP error while publishing content-config.xml changes

    Hi,
    I am getting this error when i publish my changes to server for UCM-VCR Adapter in WLP 10.3.2.
    weblogic.application.ModuleException: Error reading descriptor: META-INF/content
    -config.xml for app module ucmEAR
    at weblogic.application.config.DefaultModule.parseDescriptorBean(Default
    Module.java:483)
    at weblogic.application.config.DefaultModule.prepare(DefaultModule.java:
    282)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(Modu
    leListenerInvoker.java:199)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(Depl
    oymentCallbackFlow.java:391)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:83)
    Truncated. see log file for complete stacktrace
    Caused By: weblogic.descriptor.BeanAlreadyExistsException: Bean already exists:
    "com.bea.content.config.RepositoryPropertyBeanImpl@d0b61789(/[UCMRepository]/Rep
    ositoryProperties[ContentServerAdminUser])"
    at weblogic.descriptor.internal.ReferenceManager.registerBean(ReferenceM
    anager.java:227)
    at com.bea.content.config.ContentStoreBeanImpl.setRepositoryProperties(U
    nknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    Truncated. see log file for complete stacktrace
    >
    i also add oracle-ucm-spi-app-lib.ear in weblogic-application.xml's WebLogic Shared Library.
    please find the related files.
    content-config.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <content-config xmlns="http://www.bea.com/ns/portal/90/content-config">
    <!-- This is a default content repository applications can use.
    The IDE should copy this to META-INF/content-config.xml of the
    application.
    This repository is not required for WLP services, so you can remove
    it or change it as needed. -->
    <content-store>
              <name>UCMRepository</name>
              <class-name>com.oracle.content.spi.ucm.RepositoryImpl
              </class-name>
              <username>wlpApp</username>
              <repository-property>
                   <description>Hostname on which the UCM Content Server is running
              </description>
                   <name>ContentServerHostname</name>
                   <value>172.23.210.16</value>
              </repository-property>
              <repository-property>
                   <description>Port on which the UCM Content Server is running (on host named above)
                   </description>
                   <name>ContentServerPort</name>
                   <value>4444</value>
              </repository-property>
              <repository-property>
                   <description>Content Server uname in Admin role, for
                   security checks
                   </description>
                   <name>ContentServerAdminUser</name>
                   <value>sysadmin</value>
              </repository-property>
              <repository-property>
                   <description>List of folder ObjectClasses</description>
                   <name>folder_badge_objectClasses</name>
                   <value>IDC:Folder</value>
              </repository-property>
              <repository-property>
                   <description>Single user for all type related interactions
                   </description>
                   <name>TypeRetrievalShapeUser</name>
                   <value>typeShapeUser</value>
              </repository-property>
              <repository-property>
                   <name>useNativeSecurity</name>
                   <value>false</value>
              </repository-property>
              <repository-property>
                   <description>Protocol used to connect with the UCM Server.
                                  Valid
                                  options are INTRADOC or INTRADOC_SSL. INTRADOC is the
                                  default.
                   </description>
                   <name>ContentServerServiceType</name>
                   <value>INTRADOC</value>
              </repository-property>
              <repository-property>
                   <description>Content Server Username in Admin role, used
                   for security
                   checks
                   </description>
                   <name>ContentServerAdminUser</name>
                   <value>sysadmin</value>
              </repository-property>
              <repository-property>
                   <description>Polling interval for the
                   CacheInvalidator IntervalJob
                   (must be equal to or greater than 2 min)
                   </description>
                   <name>CacheInvalidationInterval</name>
                   <value>2</value>
              </repository-property>
              <repository-property>
                   <description>Location on the filesystem of the
                   client SSL keystore
                   file. Only used when ContentServerServiceType
                   is INTRADOC_SSL
                   </description>
                   <name>ContentServerSSLKeystoreFile</name>
                   <value>c:/client_keystore</value>
              </repository-property>
              <repository-property>
                   <description>SSL keystore password. Only used when
                   ContentServerServiceType is INTRADOC_SSL
                   </description>
                   <name>ContentServerSSLKeystorePassword</name>
                   <value>idcidc</value>
              </repository-property>
              <repository-property>
                   <description>SSL keystore alias name. Only used when
                   ContentServerServiceType is INTRADOC_SSL
                   </description>
                   <name>ContentServerSSLKeystoreAlias</name>
                   <value>SecureClient</value>
              </repository-property>
              <repository-property>
                   <description>SSL keystore alias password. Only used when
                   ContentServerServiceType is INTRADOC_SSL
                   </description>
                   <name>ContentServerSSLKeystoreAliasPassword</name>
                   <value>idcidc</value>
              </repository-property>
              <read-only>true</read-only>
              <binary-cache-max-entry-size>102400</binary-cache-max-entry-size>
              <!-- metadata search -->
              <search-is-enabled>true</search-is-enabled>
              <!-- full text search -->
              <fulltext-search-is-enabled>true</fulltext-search-is-enabled>
              <search-indexing-is-enabled>false</search-indexing-is-enabled>
         </content-store>
    </content-config>
    p13n-cache-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <p13n-cache-config xmlns="http://www.bea.com/ns/p13n/90/p13n-cache-config">
         <!--
              This is the caches for the default content repository. The IDE should
              copy this to META-INF/p13n-cache-config.xml of the application. These
              caches are for the default WLP Repository. You can modify these to fit
              your needs. If you remove the WLP Repository, you can remove these
              entries.
         -->
         <cache>
              <name>nodeCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>60000</time-to-live>
              <max-entries>50</max-entries>
         </cache>
         <cache>
              <name>nodePathCache.UCMRepository</name>
              <description>Caches node path to node instance for UCMRepository</description>
              <time-to-live>60000</time-to-live>
              <max-entries>50</max-entries>
         </cache>
         <cache>
              <name>typeCache.UCMRepository</name>
              <description>Caches binary property values for UCMRepository</description>
              <time-to-live>300000</time-to-live>
              <max-entries>200</max-entries>
         </cache>
         <cache>
              <name>typeNameCache.UCMRepository</name>
              <description>Caches type id to content type for UCMRepository</description>
              <time-to-live>300000</time-to-live>
              <max-entries>200</max-entries>
         </cache>
         <cache>
              <name>binaryCache.UCMRepository</name>
              <description>Caches type name to content type for UCMRepository</description>
              <time-to-live>60000</time-to-live>
              <max-entries>10</max-entries>
         </cache>
         <cache>
              <name>searchCache.UCMRepository</name>
              <description>Caches node id to node for UCMRepository</description>
              <time-to-live>300000</time-to-live>
              <max-entries>200</max-entries>
         </cache>
         <cache>
              <name>nativeAuthCacheUCMRepository</name>
              <description>Caches node path to node for UCMRepository</description>
              <time-to-live>5000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.typeNameCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.nodePathToUidCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.nodeUidCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.securityInfoCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.typeNamesCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
         <cache>
              <name>repo.ucm.indexedFieldsCache.UCMRepository</name>
              <description>Caches node id to node instance for UCMRepository</description>
              <time-to-live>1800000</time-to-live>
              <max-entries>5000</max-entries>
         </cache>
    </p13n-cache-config>

    Hi Venu,
    Normally if you can see the UCM content in the admin console, it means the adapter is configured correctly and the placeholder should work. There's a couple of things I can suggest:
    1. Did you include the oracle-ucm-spi-app-lib.ear file in your project as documented under the heading Add a Reference to the UCM VCR Adapter Shared Library in the UCM VCR adapter installation docs ( [http://download.oracle.com/docs/cd/E13155_01/wlp/docs103/ucm_adapter/install.html|http://download.oracle.com/docs/cd/E13155_01/wlp/docs103/ucm_adapter/install.html] )?
    2. Browse to a document in the repository in the admin console. Pick one of the fields there (e.g. IDC:Folder.dDocId), grab the value and run a query using the placeholder. Do you get a single result?
    3. The original poster (user8867138) mentions a query along the lines of returning all folders that has dDocAuthor = sysadmin. If your UCM system had 10,000 folders all created by sysadmin, the adapter might be timing out? IIRC, you can adjust the timeout in UCM.
    4. Did you try a similar query using Content Selector instead?
    5. If the WLP server domain is running on a separate machine, is UCM configured to accept connections from the WLP server but not your machine?
    I would suggest getting the latest patches for WLP too as some of them are related to the UCM VCR adapter.
    Cheers,
    Cappa

  • Reading WebDAV Content from ABAP

    Hello,
    I like to read WebDAV Content from SAP NetWeaver Portal KM with ABAP.
    For writing Content with WebDAV I found this post:
    A small working example of how to use the Abap webdav client to write files
    With Method GET_CONTENT from CL_SWDCL_NAMESPACE_CLIENT I can read single files, but what I need is a list with files and folders for a given path.
    I also tried to use the Interface IF_SWDCL_BASIC_SEARCH_CLIENT, but I only get HTML-Errorcodes 400 or 422 since I don't know which parameters I need.
    Maybe there is someone here who can help me to solve this problem.
    Thank you.

    Hello,
    I face the same problem, did you already find a solution you can share?
    Thanks in advance
    Stefan

  • When to use the new file based content repository

    In Service Pack 4 there's a new implementation of the CMSPI interfaces which is configured by using the following implementation class:
    com.bea.content.spi.internal.FileSystemRepositoryImpl
    When should one use this new file based repository versus the existing one (configured by using the following class: com.bea.content.spi.internal.RepositoryImpl).
    I've read the edocs, but it doesn't state when to use this new one compared to the previous implementation.
    We consider using a third party content repository, but for the time being we will use the content repository provided by BEA.
    Trond Andersen, Invenia AS, +4798290811

    use the new keyword when you don't have an instance of that object in memory that you want to use.  For example...
    if you have an object already in memory that is holding a property with a "CamelQuery" object, then you can say 
    var query = myobject.Query;
    however, if you have to write the query, or instantiate the object from nothing, then you need to use the "new" keyword.  A good example is SPSite object...
    if you can get a new SPSite object by either "newing one up and passing the URL" or getting the farm and getting a site from that object. 
    using(SPSite site = new SPSite("url to my site"))
    now I can use site.
    //or
    SPSite = myWebApp.Sites[0];
    // this gives you site at index 0 of current webApp
    most of the time in SharePOint you will be using the "new" keyword to open site collections, and then getting your subsites from there. BE CAREFUL using the "new" keyword. If you "new" up an object that is iDisposable... you
    MUST dispose of that, but if you use that same object but it comes from the "current context", you mustn't dispose of it.
    //dispose of this by using statement
    using(SPSite site = new SPSite(<url>))
    //do stuff
    //after this bracket it is disposed.
    //do not dispose of this:
    SPSite mysite = SPContext.Current.Site;
    //unpredictable behavior can occur because you will still need references to your current site.

  • External BEA Content Repository

    Good day,
    I am attempting to create a new BEA Repository that resides in an external database and have followed the instructions as described in Creating Additional BEA Repositories at http://e-docs.bea.com/wlp/docs81/repository/repository.html
    After deploying the content_repo.jar and bouncing the WebLogic Portal Server, I am not able to view or edit repository content. It is also not possible to manage content types in the new repository.
    Has anyone managed to create an external repository and published content to it satisfactorily?
    The errors I get are of the following types:
    1.) Error Retrieving Tree Operation.
    EJB Exception: : com.bea.content.RepositoryRuntimeException: Error getting the folders files. Parent Id: {0} Type: {1} at com.bea.content.repo.internal.RepoNodeOpsBean.getNodeChildren(RepoNodeOpsBean.java:1228) at com.bea.content.repo.internal.RepoNodeOpsEJBRefImpl_57333u_ELOImpl.getNodeChildren(RepoNodeOpsEJBRefImpl_57333u_ELOImpl.java:776) at com.bea.content.spi.internal.NodeOpsImpl.getNodeChildren(NodeOpsImpl.java:285) at ... (400 lines trimmed off)
    or:
    2.) Defined Types for Repository: RefImplRepository An exception has been thrown while trying to render this page.
    Exception Message:
    Error getting types.; nested exception is: javax.ejb.TransactionRolledbackLocalException: EJB Exception: ; nested exception is: com.bea.content.RepositoryRuntimeException: While trying to look up comp/env/jdbc/contentDataSource in /app/ejb/content_repo.jar#RepoObjectClassReaderEJBRefImpl.... (500 lines trimmed off)
    Thanks for your time.

    Does it work in the admin tools when you click on the placeholder and preview it?
    In the admin tools, do you have the primary property configured on your node's type? (to be the binary you want displayed)
    Can you retrieve the content by hitting the ShowProperty servlet? (try a url like http://localhost:7001/<webappname>/ShowDoc/<path to your node>

  • JDBC TX Settings for Weblogic Portal Content Repo Datasources

    I have a scenario where I require two WLP content stores for the application. If I set the individual datasources to Support Global Transactions = True, then the application throws TX errors: ...Caused by: java.sql.SQLException: Connection has already been created in this tx context for pool named PMRestDataSource. Illegal attempt to create connection from another pool: portalDataSource.
    What I did to solve this was isolate the Content Repo datasource from the portalDataSource (in fact, it is in a separate database schema from the portal framework artifacts in the Production environment), and set both of the Content-specific datasources to Support Global Transactions = False that fixed the issue.
    The question I have is this: Is there any reason I need TX support for datasources that exclusively support connecting to a WLP Content Store?
    Thanks in advance for your help!
    Reference content-config.xml:
    <content-store>
    <name>PM Repository</name>
    <description>Default Content Repository Configuration</description>
    <class-name>com.bea.content.spi.internal.ExtendedRepositoryImpl</class-name>
    <repository-property>
    <description>Data source to use.</description>
    <name>CM_DATA_SOURCE</name>
    <value>PMRepoDataSource</value>
    </repository-property>
    <repository-property>
    <description>Enable repository events for full-text search.</description>
    <name>cm_fireRepositoryEvents</name>
    <value>false</value>
    </repository-property>
    <read-only>false</read-only>
    <binary-cache-max-entry-size>1024</binary-cache-max-entry-size>
    <!-- metadata search -->
    <search-is-enabled>true</search-is-enabled>
    <!-- full text search -->
    <fulltext-search-is-enabled>true</fulltext-search-is-enabled>
    <search-indexing-is-enabled>true</search-indexing-is-enabled>
    </content-store>
    <content-store>
    <name>REST Repository</name>
    <description>REST Content Repository Configuration</description>
    <class-name>com.bea.content.spi.internal.ExtendedRepositoryImpl</class-name>
    <repository-property>
    <description>Data source to use.</description>
    <name>CM_DATA_SOURCE</name>
    <value>PMRestDataSource</value>
    </repository-property>
    <repository-property>
    <description>Enable repository events for full-text search.</description>
    <name>cm_fireRepositoryEvents</name>
    <value>false</value>
    </repository-property>
    <read-only>false</read-only>
    <binary-cache-max-entry-size>1024</binary-cache-max-entry-size>
    <!-- metadata search -->
    <search-is-enabled>true</search-is-enabled>
    <!-- full text search -->
    <fulltext-search-is-enabled>false</fulltext-search-is-enabled>
    <search-indexing-is-enabled>true</search-indexing-is-enabled>
    </content-store>

    I created the table manually and run the scripts again while creating new weblogic domain and its working fine now.
    What can I say is this particular *<install_home>/wlportal_10.3/portal/db/oracle/pf9_create_tables.sql.sql* is not executed as per the jdbc log which I saw.

  • Content MS - Architecture/Implementation

    Hi
    Can someone point me to a document which explanin the underlying architecture
    of the CMS. Whethr it uses Ejbs/classes/is the Data cached for the Content Operation
    (add/delete). I want to write my own interface for BEA Content Management (do
    not want to use BulkLoader OR myContent/Portal App tool). I am planning to develop
    my own server side classes using the Content API/classes but before that wanted
    to undestand the underlying arch of the CMS.
    Any help would be highly appreciated
    Pete

    pete, below is an example of how to create a content node, with a binary property.
    it also includes creating the content type (objectclass), which i don't believe
    you will need to do. hopefully this will help.
    repositoryMgr.connect();
    NodeOps nops = repositoryMgr.getNodeOps();
    ObjectClassOps ocops = repositoryMgr.getObjectClassOps();
    ID repId = new ID();
    repId.setRepositoryName(repositoryName);
    PropertyDefinition[] pds = new PropertyDefinition[1];
    pds[0] = new PropertyDefinition(repId, "binaryType", null, Property.BINARY,
    false, false, false, false, false, null);
    ObjectClass oc = new ObjectClass(repId, "schema", null, pds);
    oc = ocops.createObjectClass(oc);
    Node newNode = nops.createHierarchyNode(repId, "A");
    Property[] props = new Property[1];
    BinaryValue bv = new BinaryValue(mimeType, fileName, size, inputStream);
    props[0] = new Property("binaryType", new Value(bv));
    Node updatedNode = nops.addNodeContent(newNode.getId(), oc.getId(),
    props);
    "pete" <[email protected]> wrote:
    >
    James
    Thanx for your reply.
    I have been trying to take a look at the myContent portlet code but to
    be very
    honest with you it is too cluttered for me and I could not follow the
    jpf code
    however hard I try.
    It would be extremely helpful to me if you can provide some sample code
    which
    just connects to a repository and then does some Add/Update function
    on the CMs
    tables.
    Thanks, Pete
    "James Owen" <[email protected]> wrote:
    Pete, ok, so you want to configure your own repository (using the Portal
    CM Repository),
    then from a jsp, call your own classes that call the cm api, which will
    store/retrieve
    the content in the Portal CM Repository.
    In that case, you don't need to do anything with the SPI, you'll just
    be using
    the CM API.
    Just to clarify, when you "create" your own repository (using the Portal
    CM Repository),
    it doesn't really create a Repository, it just configures it, more like
    a jdbc
    connection. So if you delete the BEA Repository and then create your
    own, using
    the same Repository class (shift plus / will fill it in for you) your
    newly configured
    repository will point to the same tables that the BEA Repository did,
    so it is
    more like a rename.
    For api examples, I would suggest you take a look at the sample cm portlet
    code
    - not for best practices ;) - but it does give good examples of howto
    use the
    api to create content, search, etc. if it is doesn't address your specific
    questions
    then let me know.
    James
    "pete" <[email protected]> wrote:
    James, Thanks for the answers, Your Question
    sorry, i'm not following what you would like to do. if you are developing
    your
    own ui, then all you'll just need to use the API, if you would liketo
    expose
    your own repository to the Virtual Repository then you will need toimplement
    the SPI. what exactly is your goal?My goal is to have a UI(JSP) which in turn will call some functionsin
    a Server
    Side class for CRUD operation on a new Repository(with my <Application
    name> Repository
    instead of BEA Repository) in BEA PORTAL DB. Currently I do not have
    my Virtual
    repository, I just will use the BEA's virual repository and either
    rename
    it to
    <app>Repository OR will create a new repository in the BEA Portal DB.
    Do you think
    If I just write some functions in a server side class for Content Oprations
    using
    the API that should suffice OR I will have to implement SPI
    Also it would be extremely helpful if you could provide me with some
    sample code
    for connecting to a repository in BEA PORTAL DB and some function like
    adding/updating
    content in the that repository. You have been very helpful so far,thanks
    a bunch
    "James Owen" <[email protected]> wrote:
    "pete" <[email protected]> wrote:
    James
    Thanks for the diagram.
    1. From this it becomes clear that the Content SPI is a combinationof
    Entity
    and Session beans and the property set is a Facade pattern, am I
    correct
    in my
    understanding?
    this is true of the BEA Content Repository, which implements the Content
    SPI.
    2. If the Content Database it implemented as a Entity Bean (probably
    CMP) then
    is it safe to assume that it is cached?Yes, it is CMP and yes, the beans are cached with the default setting
    (1000).
    You can up the settings by cracking open the descriptor in content_repo.jar.
    3. what is the diff between BEA content SPI and Content SPI I am
    planning
    to develop
    the server side classes for Adding/Updating/Deleting Content in BEACMS
    (developing
    my own methods using content API), do you think it is safe to do
    it
    this
    way.sorry, i'm not following what you would like to do. if you are developing
    your
    own ui, then all you'll just need to use the API, if you would liketo
    expose
    your own repository to the Virtual Repository then you will need toimplement
    the SPI. what exactly is your goal?
    Pete
    "James Owen" <[email protected]> wrote:
    Pete,
    here is a diagram showing the architecture. are you planning on
    implementing
    the
    SPI? if so, i submitted a doc on dev2dev that describes the SPI.it
    hasn't
    been
    posted yet, so i can send it to you separately.
    James
    "pete" <[email protected]> wrote:
    Hi
    Can someone point me to a document which explanin the underlying
    architecture
    of the CMS. Whethr it uses Ejbs/classes/is the Data cached for
    the
    Content
    Operation
    (add/delete). I want to write my own interface for BEA Content
    Management
    (do
    not want to use BulkLoader OR myContent/Portal App tool). I amplanning
    to develop
    my own server side classes using the Content API/classes but beforethat
    wanted
    to undestand the underlying arch of the CMS.
    Any help would be highly appreciated
    Pete

  • FullTextSearch giving an exception com.bea.content.RepositoryException:

    Hi all,
    I'm trying to search a repository with libraries enabled using Full text search.
    the code is
    queryExpression= this.mQuery.buildContains(IMetadataQuery.SystemProperty.cm_objectClass,new String[]{"Article"});
    IFullTextSearch expression = FullTextSearchFactory.buildFullTextSearch(queryExpression, null, true);
    Search search = new Search(path, 10000, sort, expression,true);
    ISortableFilterablePagedList<Node> results = searchManager.search(context, search);
    and when the search is perfomed with searchManager.search it throws me the following Exception:
    com.bea.content.RepositoryException: The Type is not specified in the query, so sorting on user-defined properties cannot be performed.
         at com.bea.content.repo.internal.server.logic.search.AutonomyExpression.setSortParameters(AutonomyExpression.java:451)
         at com.bea.content.repo.internal.server.logic.search.AutonomyClient46.executeQuery(AutonomyClient46.java:88)
         at com.bea.content.repo.internal.server.logic.SearchOpsLogic.fullTextSearch(SearchOpsLogic.java:195)
         at com.bea.content.repo.internal.server.logic.SearchOpsLogic.search(SearchOpsLogic.java:146)
         at com.bea.content.repo.internal.server.bean.SearchOpsBean.search(SearchOpsBean.java:76)
         at com.bea.content.repo.internal.server.bean.RepoSearchOps_xxpfs2_ELOImpl.search(RepoSearchOps_xxpfs2_ELOImpl.java:220)
         at com.bea.content.spi.internal.SearchOpsImpl.search(SearchOpsImpl.java:89)
         at sun.reflect.GeneratedMethodAccessor677.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at com.bea.content.manager.internal.delegate.LatestInterfaceVersionWrapper.invoke(LatestInterfaceVersionWrapper.java:57)
         at $Proxy64.search(Unknown Source)
         at com.bea.content.manager.internal.delegate.LatestSearchOpsDelegate.search(LatestSearchOpsDelegate.java:47)
         at com.bea.content.manager.internal.SearchOpsImpl.searchRepository(SearchOpsImpl.java:231)
         at com.bea.content.manager.internal.SearchOpsImpl.search(SearchOpsImpl.java:167)
         at com.bea.content.federated.internal.itemloader.NodeSearchItemLoader.fetchItemIdentifiers(NodeSearchItemLoader.java:74)
         at com.bea.content.paging.internal.OnDemandQueryProcessorImpl.initializeItemIdsIfNeeded(OnDemandQueryProcessorImpl.java:90)
         at com.bea.content.paging.internal.OnDemandQueryProcessorImpl.fetchItems(OnDemandQueryProcessorImpl.java:330)
         at com.bea.content.paging.internal.DirectAccessQueryProcessor.fetchItems(DirectAccessQueryProcessor.java:111)
         at com.bea.content.paging.internal.ItemLoadingAdapter.fetchItemsImpl(ItemLoadingAdapter.java:237)
         at com.bea.content.paging.internal.ItemLoadingAdapter.fetchItems(ItemLoadingAdapter.java:126)
         at com.bea.content.paging.internal.ItemLoadingAdapter.initialize(ItemLoadingAdapter.java:97)
         at com.bea.content.paging.internal.PagedListImpl.<init>(PagedListImpl.java:100)
         at com.bea.content.federated.internal.SearchManagerImpl.search(SearchManagerImpl.java:60)
    Any ideas????
    Any help is very appreciated.
    Regards, Armando

    Search search = new Search(path, 10000, sort, expression,true);
    What is sort in this? this could either be string or SortCriteria object, or null. I think your query is failing here.
    Hope it helps

  • Getting com.bea.content.expression.ExpressionHelper$ParseException:

    Hi when i am doing search operation from controller in weblogic portal 10.2 i am getting the following error.
    [line=1,col=6] line 1:6: unexpected token: null
         at com.bea.content.expression.ExpressionHelper.convertException(ExpressionHelper.java:1796)
         at com.bea.content.expression.ExpressionHelper.parse(ExpressionHelper.java:306)
         at com.bea.content.expression.Search.<init>(Search.java:399)
         at com.collabera.wiki.SearchResults.SearchResultsController.searchResults(SearchResultsController.java:78)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:879)
         at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809)
         at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478)
         at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306)
         at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336)
         at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52)
         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
         at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
         at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044)
         at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:64)
         at org.apache.beehive.netui.pageflow.interceptor.action.ActionInterceptor.wrapAction(ActionInterceptor.java:184)
         at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:50)
         at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:58)
         at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:87)
         at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2116)
         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
         at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556)
         at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853)
         at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
         at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158)
         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
         at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1199)
         at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:686)
         at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:142)
         at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:106)
         at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:111)
         at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:181)
         at com.bea.netuix.servlets.controls.portlet.events.FirePageFlowActionDecorator.handleEvent(FirePageFlowActionDecorator.java:101)
         at com.bea.netuix.events.manager.EventManager.doFireEvents(EventManager.java:282)
         at com.bea.netuix.events.manager.EventManager.fireEvents(EventManager.java:217)
         at com.bea.netuix.nf.ControlLifecycle$4.postVisitRoot(ControlLifecycle.java:324)
         at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:341)
    I am using following code in my controller (i.e SearchResultController.jpf)
    I have hardcoded string value (i.e SearchString)
    Search search = new Search("SearchString");
    search.setUseCache(false);
    // Do the search using the ISearchManager.
    ISearchManager searchManager = ContentManagerFactory.getSearchManager();
    ContentContext ctx= new ContentContext(getRequest());
              ctx.setParameter( ICMPagedResult.PAGE_SIZE_KEY, new Integer(5) ); // use pages of size 5
    // find the search results
              ISortableFilterablePagedList<Node> resultList = searchManager.search(ctx, search);
    CMPagedResultFactory<Node> pagedResultFactory= new CMPagedResultFactory<Node>();
         ICMPagedResult<Node> pagedResults= pagedResultFactory.createPagedResult( ctx, resultList );
    Kindly tell me what is wrong.
    Also How will i use Expression in case of String

    Hi greg
    thanks for the reply.
    i got something about Search class. But i am again back to zero as i am not getting any search results.
    Following is the code i am using in controller class
    String keywordVal= "searchString";
    IMetadataQuery mQuery = FullTextQueryFactory.getMetadataQuery();
    ITextQuery tQuery = FullTextQueryFactory.getTextQuery();
    IFullTextSearch fts = FullTextSearchFactory.buildFullTextSearch(
    null, /*mQuery.buildContains("*", new String[]{keywordVal}) Metadata query parameter, match any field with the given string */
    tQuery.buildEquals(keywordVal), /* Text query parameter, match binary content with the given string */
    true /* isOr */);
    //create the search path
    String repositoryPath = PathHelper.SEPARATOR + "BEA Repository";
    //create the search object
    Search search = new Search(repositoryPath, -1, null, fts, true );
    // Do not use the global search cache.
    search.setUseCache(false);
    // Do the search using the ISearchManager.
    ISearchManager searchManager = ContentManagerFactory.getSearchManager();
    ContentContext ctx= new ContentContext(getRequest());
              ctx.setParameter( ICMPagedResult.PAGE_SIZE_KEY, new Integer(5) ); // use pages of size 5
    // find the search results
              ISortableFilterablePagedList<Node> resultList = searchManager.search(ctx, search);
    CMPagedResultFactory<Node> pagedResultFactory= new CMPagedResultFactory<Node>();
         ICMPagedResult<Node> pagedResults= pagedResultFactory.createPagedResult( ctx, resultList );
         iterator = resultList.iterator();
    // We will forward the payload along. This is currently used by the displayResults portlet.
    // The displayResults portlet listens for the pageflow action "findResults". In response it fires
    // its own pageflow action which will display the results.
    return new Forward("success");
    and i have also changed something in content-config.xml which looks something like this: -
    <?xml version="1.0" encoding="UTF-8"?>
    <content-config xmlns="http://www.bea.com/ns/portal/90/content-config">
    <!-- This is a default content repository applications can use.
    The IDE should copy this to META-INF/content-config.xml of the
    application.
    This repository is not required for WLP services, so you can remove
    it or change it as needed. -->
    <content-store>
    <name>BEA Repository</name>
    <description>Default Content Repository Configuration</description>
    <class-name>com.bea.content.spi.internal.ExtendedRepositoryImpl</class-name>
    <repository-property>
    <description>Data source to use.</description>
    <name>CM_DATA_SOURCE</name>
    <value>contentDataSource</value>
    </repository-property>
    <!--<repository-property>
    <description></description>
    Run additional checks against search criteria searchValidation
    <name>cm_fireRepositoryEvents</name>
    <value>true</value>
    </repository-property>
    -->
    <repository-property>
    <description>Enable repository events for full-text search.</description>
    <name>cm_fireRepositoryEvents</name>
    <value>true</value>
    </repository-property>
    <repository-property>
         <description>Library Services Enabled</description>
         <name>MANAGEMENT_ENABLED</name>
         <value>true</value>
    </repository-property>
    <read-only>false</read-only>
    <binary-cache-max-entry-size>1024</binary-cache-max-entry-size>
    <!-- metadata search -->
    <search-is-enabled>true</search-is-enabled>
    <!-- full text search -->
    <fulltext-search-is-enabled>true</fulltext-search-is-enabled>
    <search-indexing-is-enabled>true</search-indexing-is-enabled>
    </content-store>
    </content-config>
    Kindly tell me if i have to change anything somewhere else.
    because from this code i am not getting any results
    thanks
    Ankur

  • Interwoven TeamSite content repository...

    Hi,
    we are going to use the portal with Interwoven TeamSite as content
    management system. Looking through this news group and the developer
    forums at Interwoven it seems there are more ways to do this.
    I think the best way would be to go through a SPI. We would only
    require a SPI for reading since content editing will be done using
    TeamSite (of course). But my searching have failed to find any SPI
    implementation for Interwoven TeamSite. Although all docs says that
    portal supports Interwoven TeamSite it seems that there is no
    description of excatly how this is done.
    Anyone used a SPI implementation to access TeamSite?
    Best regards,
    Thor

    We're struggling with this now. The statement that Interwoven posts content to
    BEA's repository is a bit misleading because it doesn't happen automatically through
    Interwoven's Open Deploy. To do this, it appears that you either have to use
    Interwoven's Data Deploy utility (after mapping the repository schema), or manipulate
    the content into the schema that BEA's Bulk Loader understands and use BL to import.
    If anybody has done either, please speak up.
    And the portlets are just a different user interface. They do not provide access
    to the repository.
    "alex toussaint" <[email protected]> wrote:
    >
    >
    Hi,
    Interwoven post the content to the BEA Repository. They also have a set
    of portlets
    to work with the content. They did not implement the CM SPI.
    Regards,
    --alex
    [email protected] (Thor A. Lange) wrote:
    "Karthi" == newsgroups bea com <[email protected]> writes:
    Karthi> I suppose the Thrid party CMS must provide the
    Karthi> Implementation of BEA Content SPI Interwooven, so that BEA
    Karthi> portals can use the CMS of Interwooven
    Yep, that was my thought too. So I started out searching the
    Interwoven site - but all I seem able to find is some portlets for
    portal for editing content (or rather link to the TeamSite server).
    It doesn't seem like Interwoven has created any SPI implementation -
    that why I was interested in hearing if others had been using an SPI
    implementation with Interwoven TeamSite.
    Best regards,
    Thor

  • UserName,Content Editor

    1.How to display User Name in Master Page
    2. Writing Content Editor html, not working..like <a href="...url1..><input type="button" value="Accept"></a>
    <a href="...url2..><input type="button" value="Decline"></a>
    Both are taking same page url, where content editor is added.
    Ravindranath

    Use delegate control in master page and display current user name. Refer to the following posts for more information.
    http://zimmergren.net/technical/sp-2013-some-new-delegatecontrol-additions-to-the-sharepoint-2013-master-pages
    http://mihirsharepoint.wordpress.com/2012/11/15/create-delegate-control-in-sharepoint/
    Cheers,

  • Html content for 4400's

                       Im working with a group of developers who are writing content for some 4400's. Every once in a while they make something that just doesnt play well or look right. Are there any guidelines available for creating content for these devices?
    Thanks!
    bob

    http://www.cisco.com/en/US/docs/video/digital_media_systems/5_x/5_2/dmd/best/practices/guidelines.html#wp1052959
    regards

Maybe you are looking for

  • How can I access a response file on the same computer but with different login?

    When trying to access a response file on the same computer that was used to set it up, but with a different login, I get an error message that the network resource was not found. How can I retrieve the responses on the same computer but under a diffe

  • How do you show multiple copies of a layout...?

    I have a Bill of Lading template but now the end-users want 3 copies of it, each copy labeled different (Shipper, Customer, Company) I have something that works, but the page numbering is not correct and if there are enough lines to spill to a second

  • Itunes installing issue

    I have read a few posts on this issue, but I have yet to find a resolution. I cannot get Itunes to install on my computer. I get this Error each time I try: Could not open key: HKEYLOCALMACHINE\Software\Classes\QuicktimePlayerLib.QuicktimePlayerApp\C

  • UWL for ep7.0

    Hi, we have a guide called 'How to configure the universal worklist' but it's for ep6.0. Does anyone have a link to the document for ep7.0 ? thanks, Malcolm.

  • Integration Server configuration error

    Hi all, I have an issue with the XI Integration server configuration. When I have tested the configuration I have detected that there is an error in the Integration server (transaction SXMB_ADM) The value was: http://xxx:xxxx:/sap_xi/engine?type=entr