Sun Java System Portal Server 7 Developer's Guide

ProcedureTo create a custom provider by implementing the Provider interface

This section provides the instructions for creating a custom provider by implementing the Provider interface. The process described here includes creating a sample HelloWorldProvider that prints “Hello World!” on the provider’s channel.

Steps
  1. Create a new Java class which implements the Provider interface.

    For the sample HelloWorldProvider, create the class file as shown below.

    HelloWorldProviderP.java File


    package custom;
    
    import java.net.URL;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.sun.portal.providers.Provider;
    import com.sun.portal.providers.ProviderException;
    import com.sun.portal.providers.UnknownEditTypeException;
    
    public class HelloWorldProviderP implements Provider {
        public void init(
            String name, HttpServletRequest req
        ) throws ProviderException { }
    
        public StringBuffer getContent(
            HttpServletRequest request, HttpServletResponse response
            ) throws ProviderException {
            return new StringBuffer("Hello World!");
        }
    
        public java.lang.StringBuffer getContent(java.util.Map m) throws ProviderException {
            return new StringBuffer("Hello, world!");
        }
    
        public StringBuffer getEdit(HttpServletRequest request, HttpServletResponse response) throws ProviderException {
            // Get the edit page and return it is as a StringBuffer.
            return null;
        }
    
        public java.lang.StringBuffer getEdit(java.util.Map m) throws ProviderException {
            return null;
        }
    
        public int getEditType() throws UnknownEditTypeException {
            return 0;
        }
    
        public URL processEdit(HttpServletRequest request, HttpServletResponse response) throws ProviderException {
            return null;
        }
    
        public java.net.URL processEdit(java.util.Map m) throws ProviderException {
            return null;
        }
    
        public boolean isEditable() throws ProviderException {
            return false;
        }
    
        public boolean isPresentable() {
            return true;
        }
    
        public boolean isPresentable(HttpServletRequest req) {
            return true;
        }
    
        public java.lang.String getTitle() throws ProviderException {
            return "HelloWorld Channel";
        }
    
        public java.lang.String getName() {
            return "HelloWorld!";
        }
    
        public java.lang.String getDescription() throws ProviderException {
            return "This is a sample HelloWorld channel";
        }
    
        public java.net.URL getHelp(javax.servlet.http.HttpServletRequest req) throws ProviderException {
            return null;
        }
    
        public long getRefreshTime() throws ProviderException {
            return 0;
        }
    
        public int getWidth() throws ProviderException {
            return 0;
        }
    }
  2. Compile the class and put it in the user defined class directory.

    The default directory for the class file is PortalServer-DataDir/portals/portal-ID/desktop/classes. To compile the HelloWorldProviderP.java file, type:


    javac -d PortalServer-DataDir/portals/portal-ID/desktop/classes -classpath PortalServer-base/sdk/desktop/desktopsdk.jar:AccessManager-base/lib/servlet.jar HelloWorldProviderP.java
  3. Define the new provider and channel definition in a temporary XML file.

    The sample HelloWorldProvider provider and channel definitions are in the HelloProviderP.xml and HelloChannelP.xml files.

    HelloProviderP.xml File


    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE DisplayProfile SYSTEM "jar://resources/psdp.dtd">
    
    <Provider name="HelloWorldProviderP" class="custom.HelloWorldProviderP">
        <Properties>
            <String name="title" value="Hello World Channel"/>
            <String name="description">This is a test of the hello world provider</String>
            <String name="width" value="thin"/>
        </Properties>
    </Provider>

    HelloChannelP.xml File


    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE DisplayProfile SYSTEM "jar://resources/psdp.dtd">
    
    <Channel name="HelloWorldP" provider="HelloWorldProviderP">
        <Properties>
            <String name="message" value="Hello World Test!!! - non-localized "/>
            <Locale language="en" country="US">
                <String name="message" value="Hello World - I am speaking English in the United States!!!"/>
            </Locale>
        </Properties>
    </Channel>
  4. Upload the provider and channel XML fragments using the psadmin add-display-profile command.

    For the sample HelloWorldProvider, upload the HelloProviderP.xml and HelloChannelP.xml XML fragments using the psadmin add-display-profile command. See the Sun Java System Portal Server 7 Command-Line Reference for more information on psadmin add-display-profile command.

  5. Access the channel from a browser. To access, type the following URL in your browser:


    http://hostname:port/portal/dt?provider=HelloWorldP