Sun Java System Portal Server 7 Developer's Guide

Implementing the Provider Interface

The Provider interface defines the interface for implementing the provider component of a channel. If you want to directly implement the Provider interface, code should be written to implement all of the methods in this interface. You will not have access to the ProviderContext and the properties in the display profile cannot be accessed. If you are implementing this interface, it’s up to the provider implementation to get the properties.

For more information on this interface, see the Javadocs at http://hostname.port/portal/javadocs.

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