Quick Start (SOAP mode): Creating a policy using the Java API

The following Java code example creates a new Policy named Allow Extended Authentication.This policy overrides the Authentication Options configured on the server, and allows only Extended Authentication. The policy set to which the policy is added 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.idp.um.api.infomodel.Principal; 
import com.adobe.livecycle.rightsmanagement.client.*; 
import com.adobe.livecycle.rightsmanagement.client.infomodel.*; 
 
public class CreatePolicySoap { 
 
    public static void main(String[] args) { 
        
        try 
        { 
            //Set connection properties required to invoke LiveCycle 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, "weblogic"); 
            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 Extended Authentication"); 
            myPolicy.setDescription("This policy overrides the authentication options configured on the server"); 
            myPolicy.setPolicySetName("Global Policy Set"); 
            myPolicy.setOfflineLeasePeriod(30); 
            myPolicy.setTracked(true); 
            
            //Set the Extended Usage Tracking  option to True. Ensure that the Tracking is enabled on the Server 
            if ( myPolicy.isExtendedUsageTrackingEnabled()!= true) 
                myPolicy.setExtendedUsageTrackingEnabled(true); 
            
            //Set the OverrideAuthenticationSettings  option to True 
            if ( myPolicy.isOverrideAuthenticationSettings()!= true) 
                myPolicy.setOverrideAuthenticationSettings(true); 
            
            //Enable ExtendedAuthentication 
            myPolicy.setThirdPartyAuthenticationAllowed(true); 
            
            //Disable UserName Password Authentication 
            myPolicy.setUsernamePwdAuthenticationAllowed(false); 
            
            //Enable Certification Authentication 
            myPolicy.setCertificateAuthenticationAllowed(false); 
            
            //Disable Kerberos Authentication 
            myPolicy.setKerberosAuthenticationAllowed(false); 
            
                        
            //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 entry to the policy 
               myPolicy.addPolicyEntry(myPolicyEntry); 
               
               //Register the policy 
            PolicyManager policyManager = rightsClient.getPolicyManager(); 
            policyManager.registerPolicy(myPolicy,"Global Policy Set"); 
            
            System.out.println("The policy was successfully created."); 
            } 
        catch (Exception ex) 
            { 
                ex.printStackTrace(); 
            } 
        } 
}