Sun Java System Portal Server 7.1 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.

  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.1 Command Line Reference for more information on psadmin add-display-profile command.

  5. Specify the URL in your browser to access the channel.


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