protected RollbackPatch createRollbackPatch ( final String patchId , final Patch . PatchType patchType ) { // Process elements final List < PatchElement > elements = new ArrayList < PatchElement > ( ) ; // Process layers for ( final PatchEntry entry : getLayers ( ) ) { final PatchElement element = createRollbackElement ( entry ) ; elements . add ( element ) ; } // Process add-ons for ( final PatchEntry entry : getAddOns ( ) ) { final PatchElement element = createRollbackElement ( entry ) ; elements . add ( element ) ; } final InstalledIdentity installedIdentity = modification . getUnmodifiedInstallationState ( ) ; final String name = installedIdentity . getIdentity ( ) . getName ( ) ; final IdentityImpl identity = new IdentityImpl ( name , modification . getVersion ( ) ) ; if ( patchType == Patch . PatchType . CUMULATIVE ) { identity . setPatchType ( Patch . PatchType . CUMULATIVE ) ; identity . setResultingVersion ( installedIdentity . getIdentity ( ) . getVersion ( ) ) ; } else if ( patchType == Patch . PatchType . ONE_OFF ) { identity . setPatchType ( Patch . PatchType . ONE_OFF ) ; } final List < ContentModification > modifications = identityEntry . rollbackActions ; final Patch delegate = new PatchImpl ( patchId , "rollback patch" , identity , elements , modifications ) ; return new PatchImpl . RollbackPatchImpl ( delegate , installedIdentity ) ; }
Create a rollback patch based on the recorded actions .