Oracle® Discussions Application Developer's Guide
10g Release 1(10.1.2) B28208-02 |
|
Previous |
Next |
The Topic Service interface represents the methods that operate on Oracle Discussions Topics. The interface provides the following operations:
Creating a topic
Listing of messages under a topic
Locking or unlocking a topic
Retrieving a topic
Moving a topic from one forum to another
Editing the contents of a topic
Deleting a topic
It also provides bulk operations to create or delete multiple topics in one invocation. This chapter addresses the task of Creating a Topic.
The following is an example for creating a topic from the byte array:
Example 10-1 Creating a Topic from the Byte Array
import java.util.Date; import java.io.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import org.apache.axis.transport.http.HTTPConstants;import oracle.discussions.ws.exceptions.TdWSException;import oracle.discussions.ws.beans.*;import oracle.discussions.ws.AuthenticationServiceServiceLocator;import oracle.discussions.ws.AuthenticationServiceSoapBindingStub;import oracle.discussions.ws.AuthenticationService;import oracle.discussions.ws.TopicServiceSoapBindingStub;import oracle.discussions.ws.TopicServiceServiceLocator;import oracle.discussions.ws.TopicService; public class WSClient{ private static AuthenticationService as = null; public static String getCookie() throws Exception { //STEP - 0: User Login //Create the service locator for authentication service. The locator //contains information about the web Services endpoint AuthenticationServiceServiceLocator assl = new AuthenticationServiceServiceLocator(); //Get the handle to the actual webservices interface. as = assl.getAuthenticationService(); //Indicate to the server that the client is interested in maintaining //session. //HTTP is stateless and the user state is maintained in the session. //Unless the user is willing to participate in a session, user state //cannot be preserved. ((AuthenticationServiceSoapBindingStub)as).setMaintainSession(true); //Invoke the actual login webservices call. as.login("td_superuser","welcome1"); //Retrieve the cookie. The cookie is set on successful authentication. String cookie = (String)((AuthenticationServiceSoapBindingStub)as) ._getCall().getMessageContext() .getProperty(HTTPConstants.HEADER_COOKIE); System.out.println("Cookie : " + cookie); return cookie; } public static void main(String args[]) { try { //STEP - 0: User Login String cookie = getCookie(); //STEP - 1: Locate the Web Services end point. //The Web Services locator contains the Web Services end point //address //Hence instantiate the service locator. TopicServiceServiceLocator tssl = new TopicServiceServiceLocator(); //Get a handle to the actual web service. TopicService ts = tssl.getTopicService(); //Indicate to the server that the user is willing to participate in //the session. //Since HTTP is stateless, all the client data is maintained in the //session. ((TopicServiceSoapBindingStub)ts).setMaintainSession(true); //Set the cookie retrieved in the call to login webservice. //The cookie asserts user's identity to the server. ((javax.xml.rpc.Stub)ts)._setProperty(HTTPConstants.HEADER_ COOKIE,cookie); //Invoke the actual web services call. byte[] bytes = null; //Create a MIME Compatible byte array if(bytes != null) { //The ID needs to be changed accordingly ForumMessage msg = ts.createTopicFromByte(15524,bytes); if(msg != null) { System.out.println("Subject :" + msg.getSubject()); System.out.println("Web ui url :" + msg.getWebUIUrl()); System.out.println("Subject :" + msg.getSubject()); System.out.println("Plain Text :" + msg.getBodyPlainText()); String[] frmAdd = msg.getFromAddresses(); if(frmAdd != null) { for(int j = 0 ; j < frmAdd.length ; j++) System.out.println("From Address :" + frmAdd[j]); } System.out.println("Level :" + msg.getLevel()); System.out.println("No of replies :" + msg.getNumberOfReplies()); System.out.println("Oracle Msg Id :" + msg.getMessageId()); System.out.println("is new since session :" + msg.isNewSinceSession()); System.out.println("is new since last visit :" + msg.isNewSinceLastVisit()); System.out.println("is new " + msg.isNewMessage()); System.out.println("Has Attachments :" + msg.isHasAttachments()); System.out.println("X Priority :" + msg.getXPriority()); System.out.println("Sent dat :" + msg.getSentDate()); System.out.println("Size :" + msg.getSize()); System.out.println("Subject :" + msg.getSubject()); } } //STEP - 2: User Logout logout(); } catch(TdWSException ex) { System.out.println("Error Code :" + ex.getErrorCode()); System.out.println("Error Message :" + ex.getErrorMessage()); String[] trace = ex.getServerStackTrace(); if(trace != null) { for(int i = 0 ; i < trace.length ; i++) System.out.println("trace[" + i + "]" + trace[i]); } } catch(Exception ex) { System.out.println("Never went into tdex :" + ex.getMessage()); ex.printStackTrace(); } } public static void logout() throws Exception { System.out.println("User logout."); //Once all the webservices operations are done, invoke logout //operation. //On logout, user state is destroyed and the cookie is invalidated. as.logout(); System.out.println("Done"); }}
The createTopicFromByte()
creates a topic from the specified byte array.
The byte
[]
array should be MIME compatible. It is useful in creating topics with attachments. The entire message, along with all the headers and attachments is converted into a byte[]
. The same byte[]
can be used in creating a topic. This method accepts two parameters:
lForumId
is the ID representing a forum, in which topic is to be created.
msg
is the byte representing the topic to be created.
The method returns ForumMessage
which is a bean that represents the newly created topic.
The sample output for Example 10-1 is as follows:
Cookie : JSESSIONID=8c57046a22b87bc7c77f14844facb3d6e912391d9f5dSubject :Topic-1Web ui url :http://stacx01:8888/discussions/app/mainAction.do?fid=15524&tid=281488&mid=281488#281488Subject :Topic-1Plain Text :Topic-1From Address :Admin <td_superuser@stacx01.us.oracle.com>Level :0No of replies :0Oracle Msg Id :281488is new since session :trueis new since last visit :trueis new trueHas Attachments :falseX Priority :1Sent date : Sun Feb 26 19:54:18 PST 2006Size :405Subject :Topic-1User logout.Done