WSO2 Mashup Server

From Wikipedia, the free encyclopedia
WSO2 Mashup Server
Developer(s) WSO2 and Community
Initial release January 28, 2008
Stable release 2.0.2 / May 13, 2010 (2010-05-13)
Written in Java
Operating system Cross-platform
Available in English
Type Application server
License Apache License 2.0
Website http://wso2.org/projects/mashup

The WSO2 Mashup Server is an open source mashup platform that hosts JavaScript based mashups. It is based on Apache Axis2 and other open source projects, and provides JavaScript authors the ability to consume, compose and emit web services, feeds, scraped web pages, email, and instant messages. The source code is freely available under the open source Apache License. It provides a runtime platform for developing and deploying mashups. It can be downloaded and deployed locally or within an organization.

The WSO2 Mashup Server is web services centric in that each mashup exposes a new web service, which can be consumed by other mashups, web service clients, or Ajax style web pages. The securability of web services make them an attractive technology within organizations deploying a service-oriented architecture (SOA) and for business mashups.

To date, it is the only open source composition platform available for mashup developers.

JavaScript as a mashup composition language

Mashups are composed using server side JavaScript in the WSO2 Mashup Server. A set of language extensions along with E4X provides domain specific features such as;

  • Calling other SOAP/REST web services,
  • RSS/Atom feed reading and writing,
  • Web scraping,
  • APP based publishing,
  • Periodic task scheduling,
  • E-mailing and
  • IM

A Hello World

   function hello() {
       return "Hello World";
   }

Calling a SOAP web service

   function invokeGetVersionService(){
       var version = new WSRequest();
 
       var options = new Array();
       options.useSOAP = 1.2;
       options.useWSA = 1.0;
       options.action = "http://services.mashup.wso2.org/version/ServiceInterface/getVersionRequest";
 
       var payload = null;
       var result;
 
       try {
           version.open(options,"http://localhost:7762/services/system/version", false);
           version.send(payload);
           result = version.responseE4X;
       } catch (e) {
           system.log(e.toString(),"error");
           return e.toString();
       }
       return result;
   }

Working with feeds

   // Creating an RSS 2.0 feed and writing it to file.
  function createRssFeed(){
 
   // Creating the Feed
   var feed = new Feed();
   feed.feedType = "rss_2.0";
   feed.title = "This is a test Feed";
   feed.description = "This feed demonstrates the use of Feed host object to create an RSS 2.0 feed.";
   feed.link = "http://mooshup.com/rss20.xml";
 
   // Creating Entries in the Feed
   var entry = new Entry();
   entry.title = "This is a test entry.";
   entry.description = "This is a sample entry demonstrating the use of the Entry host object.";
   feed.insertEntry(entry);
 
   var entry2 = new Entry();
   entry2.title = "This is another test entry.";
   entry2.description = "This is a sample entry demonstrating the use of the Entry host object.";
 
   // Adding a Media Module to the entry
   var mediaModule = new
   MediaModule("http://www.earthshots.org/photos/387.jpg");
   mediaModule.copyright = "2007 Tad Bowman";
   mediaModule.type = "image/jpeg";
   mediaModule.thumbnail = "http://www.earthshots.org/photos/387.thumb.jpg";
   entry2.addMediaModule(mediaModule);
 
   feed.insertEntry(entry2);
 
   // Writing the newly created Feed to a File
   var result = feed.writeTo("test-created-rss-feed.xml");
 
   return result;
 }

Web scraping

 function webScrape(){
   var config = <config>
                   <var-def name='response'>
                       <html-to-xml>
                           <http method='get' url='http://ww2.wso2.org/~builder/'/>
                       </html-to-xml>
                   </var-def>
                </config>;
 
   var scraper = new Scraper(config);
   result = scraper.response;
 
   return result;
 }

The syntax is identical to another open source web scraping tool called web harvest.

Working with APP

 function persistAuthenticatedAppFeed(){
   // Creating an instance of APPClient
   var client = new APPClient();
 
   // Creating an instance of AtomFeed
   var feed = new AtomFeed();
 
   // Setting login credentials for the client
   client.credentials={username:"you@email.com",password:"xxx",service:"blogger",authtype:"google"};
 
   // Retrieving and online feed
   feed = client.getFeed("http://blog.mooshup.com/feeds/posts/default");
 
   // Getting an array of individual entries from the feed
   var entries = new Array();
   entries = feed.getEntries();
 
   // Writing the retrieved feed to a file
   feed.writeTo("my-file-name.xml");
 }

Periodic Task Scheduling

 // Scheduling a function to be executed every 2 seconds
 var uuid = system.setInterval('myJavaScriptFunction("parameterValue")', 2000);
 
 // Stopping the above scheduled task
 system.clearInterval(uuid);

Sending an e-mail

  function sendEmail(){
    var email = new Email("host", "port", "username", "password");
    var file = new File("temp.txt");
    email.from = "test@wso2.com";
    email.to = "test@wso2.com"; // alternatively message.to can be an array of strings. Same goes for cc and bcc
    email.cc = "test@wso2.com";
    email.bcc = "test@wso2.com";
    email.subject = "WSO2 Mashup server 1.0 Released";
    email.addAttachement(file, "temp.txt"); // Optionally can add attachments, it has a variable number of arguments. each argument can be a File hostObject or a string representing a file.
                                            // In this case we are sending two attachments (this demonstrates sending attachments using either a File Host Object or a path to the file).
    email.text = "WSO2 Mashup server 1.0 was Released on 28th January 2008";
    email.send();
  }

See also

External references

This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.