Quick Start (SOAP mode): Modifying an abstract policy using the Java API

The following Java code example modifies an abstract policy named AllowCopy. The policy set in which the policy is modfied is named Global Policy Set. This policy set exists by default. (See Creating Policies.)

/* 
 * This Java Quick Start uses the SOAP mode and contains the following JAR files 
 * in the class path: 
 * 1. adobe-rightsmanagement-client.jar 
 * 2. namespace.jar (if LiveCycle ES is deployed on JBoss) 
 * 3. jaxb-api.jar (if LiveCycle ES is deployed on JBoss) 
 * 4. jaxb-impl.jar (if LiveCycle ES is deployed on JBoss) 
 * 5. jaxb-libs.jar (if LiveCycle ES is deployed on JBoss) 
 * 6. jaxb-xjc.jar (if LiveCycle ES is deployed on JBoss) 
 * 7. relaxngDatatype.jar (if LiveCycle ES is deployed on JBoss) 
 * 8. xsdlib.jar (if LiveCycle ES 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 LiveCycle ES is not deployed on JBoss) 
 * 13. activation.jar (required for SOAP mode) 
 * 14. axis.jar (required for SOAP mode) 
 * 15. commons-codec-1.3.jar (required for SOAP mode) 
 * 16.  commons-collections-3.1.jar  (required for SOAP mode) 
 * 17. commons-discovery.jar (required for SOAP mode) 
 * 18. commons-logging.jar (required for SOAP mode) 
 * 19. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
 * 20. jaxen-1.1-beta-9.jar (required for SOAP mode) 
 * 21. jaxrpc.jar (required for SOAP mode) 
 * 22. log4j.jar (required for SOAP mode) 
 * 23. mail.jar (required for SOAP mode) 
 * 24. saaj.jar (required for SOAP mode) 
 * 25. wsdl4j.jar (required for SOAP mode) 
 * 26. xalan.jar (required for SOAP mode) 
 * 27. xbean.jar (required for SOAP mode) 
 * 28. xercesImpl.jar (required for SOAP mode) 
 * 
 *  These JAR files are located in the following path: 
 * <install directory>/Adobe/Adobe LiveCycle ES4/sdk/client-libs/common 
 * 
 * The adobe-utilities.jar file is located in the following path: 
 * <install directory>/Adobe/Adobe LiveCycle ES4/sdk/client-libs/jboss 
 * 
 * The jbossall-client.jar file is located in the following path: 
 * <install directory>/Adobe/Adobe LiveCycle ES4/jboss/client 
 * 
 * SOAP required JAR files are located in the following path: 
 * <install directory>/Adobe/Adobe LiveCycle ES4/sdk/client-libs/thirdparty 
 * 
 * If you want to invoke a remote LiveCycle server instance and there is a 
 * firewall between the client application and LiveCycle server, then it is 
 * recommended that you use the SOAP mode. When using the SOAP mode, 
 * you have to include these additional JAR files 
 * 
 * For information about the SOAP 
 * mode, see "Setting connection properties" in Programming 
 * with LiveCycle server 
 */ 
import java.util.*; 
 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
import com.adobe.livecycle.rightsmanagement.client.*; 
import com.adobe.livecycle.rightsmanagement.client.infomodel.*; 
 
public class ModifyingAbstractPolicySoap { 
 
    public static void main(String args[]) { 
                
    try{    
         
        //Set connection properties required to invoke LiveCycle server using SOAP mode                                
        Properties connectionProps = new Properties(); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080"); 
        connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_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); 
        
        AbstractPolicyManager abstractPolicyManager = rightsClient.getAbstractPolicyManager(); 
        
        AbstractPolicy abstractPolicy = abstractPolicyManager.getAbstractPolicy("Global Policy Set","AllowCopy"); 
        
        //Modify policy attributes 
        abstractPolicy.setOfflineLeasePeriod(40); 
        abstractPolicy.setTracked(true); 
                    
        //Set the validity period to 40 days 
        ValidityPeriod validityPeriod = InfomodelObjectFactory.createValidityPeriod(); 
        validityPeriod.setRelativeExpirationDays(40); 
        abstractPolicy.setValidityPeriod(validityPeriod); 
        
        abstractPolicyManager.updateAbstractPolicy(abstractPolicy); 
        
        System.out.println("The Abstract Policy was updated:" + abstractPolicy.getName()); 
                
        } 
        catch (Exception ex) { 
            ex.printStackTrace(); 
        } 
    } 
}