Accessibility

LiveCycle Quick Starts: LiveCycle Remoting

Table of contents


Add a form design (an XDP file) to the repository by using LiveCycle Remoting

The following Flex code example adds a form design (an XDP file) to the repository by using LiveCycle Remoting.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="initializeChannelSet();">
  <mx:Script>
    <![CDATA[

  import mx.rpc.livecycle.DocumentReference;
  import flash.net.FileReference;
  import flash.events.Event;
  import flash.events.DataEvent;
  import mx.messaging.ChannelSet;
  import mx.messaging.channels.AMFChannel;  
  import mx.rpc.events.ResultEvent;
  
  private var fileRef:FileReference = new FileReference();
  private var docRef:DocumentReference = new DocumentReference();
  private var parentResourcePath:String = "/";
  private var serverPort:String = "servername:8080";

  // Set up channel set to talk to LiveCycle.
  // This must be done before calling any service or process, but only once for the entire application.
  // Note that this uses runtime configuration to configure the destination correctly, so 
  // no other setup is needed in remoting-config.xml.
  private function initializeChannelSet():void {
    var cs:ChannelSet= new ChannelSet(); 
    cs.addChannel(new AMFChannel("remoting-amf", "http://" + serverPort + "/remoting/messagebroker/amf")); 
    repositoryService.setCredentials("administrator", "password");
    repositoryService.channelSet = cs;
  }
        
  // Call this method to upload the file to be added to the repository.
  // This creates a file picker and lets the user select the file to upload.
  private function uploadFile():void {
    fileRef.addEventListener(Event.SELECT, selectHandler);
    fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeHandler);
    fileRef.browse();
  }
  
  // Gets called for selected file. Does the actual upload via our file upload servlet.
  private function selectHandler(event:Event):void {
    var request:URLRequest = new URLRequest("http://" + serverPort + "/remoting/lcfileupload");
    fileRef.upload(request);
  }
  
  // Called once the file is completely uploaded. Now it is safe to access that object for other things.
  private function completeHandler(event:DataEvent):void {                    
    var params:Object = new Object();        
    docRef.url = event.data as String;      
    docRef.referenceType=DocumentReference.REF_TYPE_URL;
    // At this point we can do whatever we want with the file that has been uploaded.
    // Our docRef variable has the object. Refer to the asdoc for DocumentReference for methods and properties.
    // Note that the url is publicly accessible at this point. Useful for testing purposes.
    writeResource();
  }      

  // Uses RepositoryService API to write resource to repository. Sets the name to "resource.xdp" right now.
  // Note that the destination name of the RemoteObject below is the Endpoint name in the adminui.
  private function writeResource():void {
    var resource:Object = new Object();
    var content:Object = new Object();

    // define resource
    resource.name = "resource.xdp";
    content.dataDocument = docRef;
    content.mimeType = "application/vnd.adobe.xdp+xml";
    resource.content = content;
    resource.description = "An XDP File";

    // call to remote object
    repositoryService.writeResource({"parentResourcePath":parentResourcePath,"resource":resource});
  }

  private function resultHandler(event:ResultEvent):void {
    // Do anything else here.
  }

    ]]>
  </mx:Script>
  
  <mx:RemoteObject id="repositoryService" destination="RepositoryService" result="resultHandler(event);"/>

  <mx:Panel id="lcPanel" title="Repository Service LiveCycle Remoting Example" 
       height="25%" width="25%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
     <mx:Label width="100%" color="blue"
            text="Select a PDF file. This example automatically uploads it to the repository."/>            
    <mx:Button label="Select and Upload" click="uploadFile()" />
  </mx:Panel>
</mx:Application>