Quick Start (SwaRef): Creating a policy using the web service API

The following web service Java code example creates a new policy named Allow Copy. The policy set to which the policy is added is named Global Policy Set. An example of the PDRL document (SamplePolicy.xml) that this quick start references is shown in the Creating Policies section. (See Creating Policies.)

/* 
    * This Java Quick Start uses the EJB mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-rightsmanagement-client.jar 
    * 2. namespace.jar (if the LiveCycle server is deployed on JBoss) 
    * 3. jaxb-api.jar (if the LiveCycle server is deployed on JBoss) 
    * 4. jaxb-impl.jar (if the LiveCycle server is deployed on JBoss) 
    * 5. jaxb-libs.jar (if the LiveCycle server is deployed on JBoss) 
    * 6. jaxb-xjc.jar (if the LiveCycle server is deployed on JBoss) 
    * 7. relaxngDatatype.jar (if the LiveCycle server is deployed on JBoss) 
    * 8. xsdlib.jar (if the LiveCycle is deployed on JBoss) 
    * 9. adobe-livecycle-client.jar 
    * 10. adobe-usermanager-client.jar 
    * 11. adobe-utilities.jar 
    * 12. jbossall-client.jar (use a different JAR file if the LiveCycle server is not deployed on JBoss) 
    *  
    * *  These JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/common 
    *  
    * The adobe-utilities.jar file is located in the following path: 
    * <install directory>/sdk/client-libs/jboss 
    *  
    * The jbossall-client.jar file and all jax JAR files are located in the following path: 
    * <install directory>/jboss/client 
    *  
    * If you want to invoke a remote LiveCycle instance and there is a 
    * firewall between the client application and LiveCycle, then it is  
    * recommended that you use the SOAP mode. When using the SOAP mode,  
    * you have to include additional JAR files located in the following  
    * path 
    * <install directory>/sdk/client-libs/thirdparty 
    *  
    * For information about the SOAP  
    * mode and the additional JAR files that need to be included,  
    * see "Setting connection properties" in Programming  
    * with LiveCycle 
    *  
    * For complete details about the location of the LiveCycle JAR files,  
    * see "Including LiveCycle library files" in Programming  
    * with LiveCycle 
    */ 
import java.util.*; 
 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
import com.adobe.idp.um.api.infomodel.Principal; 
import com.adobe.livecycle.rightsmanagement.client.*; 
import com.adobe.livecycle.rightsmanagement.client.infomodel.*; 
 
public class CreatePolicy { 
 
    public static void main(String[] args) { 
         
        try 
        {  
            //Set connection properties required to invoke LiveCycle                                 
            Properties connectionProps = new Properties(); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://hiro-xp:1099"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);           
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
                     
             //Create a ServiceClientFactory object 
            ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
         
            //Create a RightsManagementClient object 
            RightsManagementClient rightsClient = new RightsManagementClient(myFactory);  
         
            //Create a Policy object that represents the new policy 
            Policy myPolicy = InfomodelObjectFactory.createPolicy();  
         
            //Set policy attributes that are used by the policy 
            myPolicy.setName("Allow Copy");  
            myPolicy.setDescription("This policy enables users to copy information from the PDF document");  
            myPolicy.setPolicySetName("Global Policy Set"); 
            myPolicy.setOfflineLeasePeriod(30); 
            myPolicy.setTracked(true); 
             
                         
            //Set the validity period to 30 days 
            ValidityPeriod validityPeriod = InfomodelObjectFactory.createValidityPeriod(); 
            validityPeriod.setRelativeExpirationDays(30); 
            myPolicy.setValidityPeriod(validityPeriod); 
                     
            //Create a PolicyEntry object 
            PolicyEntry myPolicyEntry = InfomodelObjectFactory.createPolicyEntry(); 
 
            //Specify the permissions 
            Permission onlinePermission = InfomodelObjectFactory.createPermission(Permission.OPEN_ONLINE) ; 
            Permission copyPermission = InfomodelObjectFactory.createPermission(Permission.COPY); 
             
            //Add permissions to the policy entry 
            myPolicyEntry.addPermission(onlinePermission); 
            myPolicyEntry.addPermission(copyPermission); 
         
            //Create principal object 
             Principal publisherPrincipal = InfomodelObjectFactory.createSpecialPrincipal(InfomodelObjectFactory.PUBLISHER_PRINCIPAL); 
             
             //Add a principal object to the policy entry 
             myPolicyEntry.setPrincipal(publisherPrincipal); 
         
             //Attach the policy editor to the policy 
             myPolicy.addPolicyEntry(myPolicyEntry); 
             
             //Register the policy 
            PolicyManager policyManager = rightsClient.getPolicyManager(); 
            policyManager.registerPolicy(myPolicy,"Global Policy Set"); 
            } 
        catch (Exception ex) 
            { 
                ex.printStackTrace();  
            } 
        } 
}