public void load(Object descriptor) {
    PortletAppDescriptor portletAppDescriptor = (PortletAppDescriptor) descriptor;
    String portletAppName = portletAppDescriptor.getName();
    logger.log(Level.FINEST, "PSPL_PAECSPPA0018", portletAppName);
    // Save the EventHolders for this PortletAppDescriptor
    if (!portletAppDescriptor.getEventDescriptors().isEmpty()) {
      for (EventDescriptor eventDescriptor : portletAppDescriptor.getEventDescriptors()) {
        // load Event Holder objects of the portlet application
        List<EventHolder> eventHolders = this.appEventHolders.get(portletAppName);
        if (eventHolders == null) {
          eventHolders = new CopyOnWriteArrayList<EventHolder>();
        }
        eventHolders.add(eventDescriptor.getEventHolder());
        appEventHolders.put(portletAppName, eventHolders);
      }
    }

    // Save the PublicRenderParameterHolders for this PortletAppDescriptor
    if (!portletAppDescriptor.getPublicRenderParameterDescriptors().isEmpty()) {
      for (PublicRenderParameterDescriptor publicRenderParameterDescriptor :
          portletAppDescriptor.getPublicRenderParameterDescriptors()) {
        // load Public Render Parameter Holder object for supporting render parameters of the
        // portlet
        List<PublicRenderParameterHolder> publicRenderParameterHolders =
            this.appPublicRenderParameterHolders.get(portletAppName);
        if (publicRenderParameterHolders == null) {
          publicRenderParameterHolders = new CopyOnWriteArrayList<PublicRenderParameterHolder>();
        }
        publicRenderParameterHolders.add(
            publicRenderParameterDescriptor.getPublicRenderParameterHolder());
        appPublicRenderParameterHolders.put(portletAppName, publicRenderParameterHolders);
      }
    }
    // load processing events for portlet
    createEventProcessingPortlets(portletAppDescriptor.getProcessingEvents());

    // load processing event qnames for portlet
    createSupportedEventProcessingPortlets(portletAppDescriptor.getSupportedProcessingEvents());

    // load publishing events for portlet
    createEventPublishingPortlets(portletAppDescriptor.getPublishingEvents());

    // load supporting render parameters for portlet
    createPublicRenderParameterPortlets(portletAppDescriptor.getPublicRenderParameters());

    // print information
    printInformation();
  }
 private void removePublicRenderParameterSupportingPortlets(
     List<PublicRenderParameterDescriptor> publicRenderParameterDescriptors,
     List<PortletID> portletIDs) {
   for (PublicRenderParameterDescriptor publicRenderParameterDescriptor :
       publicRenderParameterDescriptors) {
     if (publicRenderParameterDescriptor.getPublicRenderParameterHolder() != null) {
       List<PortletID> tempPortletIDs =
           publicRenderParameterSupportingPortlets.get(
               publicRenderParameterDescriptor.getPublicRenderParameterHolder());
       for (PortletID portletID : portletIDs) {
         tempPortletIDs.remove(portletID);
       }
       if (tempPortletIDs.isEmpty()) {
         publicRenderParameterSupportingPortlets.remove(
             publicRenderParameterDescriptor.getPublicRenderParameterHolder());
       }
     }
   }
 }