You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/04/28 15:58:16 UTC

cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl DefaultLinkService.java

cziegeler    2004/04/28 06:58:16

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
                        DefaultLayoutFactory.java
               src/blocks/portal/java/org/apache/cocoon/portal/source
                        CopletSourceFactory.java
               src/blocks/portal/java/org/apache/cocoon/portal/profile/impl
                        AbstractProfileManager.java
               src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
                        CIncludeCopletAspect.java
               src/blocks/portal/java/org/apache/cocoon/portal/generation
                        PortalGenerator.java
               src/blocks/portal/java/org/apache/cocoon/portal/impl
                        DefaultLinkService.java
  Log:
  Fixing NPE when a full screen coplet is removed (bug 28655) reported by roy_huang@nbmgroup.com (roy huang)
  
  Revision  Changes    Path
  1.18      +16 -6     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
  
  Index: DefaultLayoutFactory.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- DefaultLayoutFactory.java	28 Apr 2004 11:53:09 -0000	1.17
  +++ DefaultLayoutFactory.java	28 Apr 2004 13:58:16 -0000	1.18
  @@ -48,6 +48,7 @@
   import org.apache.cocoon.portal.event.Filter;
   import org.apache.cocoon.portal.event.LayoutEvent;
   import org.apache.cocoon.portal.event.Subscriber;
  +import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent;
   import org.apache.cocoon.portal.event.impl.LayoutRemoveEvent;
   import org.apache.cocoon.portal.layout.CompositeLayout;
   import org.apache.cocoon.portal.layout.Item;
  @@ -395,6 +396,9 @@
           }
       }
   
  +    /* (non-Javadoc)
  +     * @see org.apache.cocoon.portal.layout.LayoutFactory#remove(org.apache.cocoon.portal.layout.Layout)
  +     */
       public void remove(Layout layout) 
       throws ProcessingException {
           if ( layout != null ) {
  @@ -411,21 +415,27 @@
               }
               
               PortalService service = null;
  +            EventManager eventManager = null;
               try {
  -                service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +                service = (PortalService)this.manager.lookup(PortalService.ROLE);                
  +                ProfileManager profileManager = service.getComponentManager().getProfileManager();
                   if ( layout instanceof CopletLayout ) {
  +                    // full screen?
  +                    if ( layout.equals(profileManager.getEntryLayout()) ) {
  +                        Event event = new FullScreenCopletEvent(((CopletLayout)layout).getCopletInstanceData(), null);
  +                        eventManager = (EventManager)this.manager.lookup(EventManager.ROLE);
  +                        eventManager.getPublisher().publish(event);
  +                        service.getComponentManager().getLinkService().addEventToLink(event);
  +                    }
                       CopletFactory factory = service.getComponentManager().getCopletFactory();
                       factory.remove( ((CopletLayout)layout).getCopletInstanceData());
                   }
  -                ProfileManager profileManager = service.getComponentManager().getProfileManager();
  -                if ( layout.equals(profileManager.getEntryLayout()) ) {
  -                    profileManager.setEntryLayout(null);
  -                }
                   profileManager.unregister(layout);
               } catch (ServiceException ce) {
                   throw new ProcessingException("Unable to lookup portal service.", ce);
               } finally {
                   this.manager.release( service );
  +                this.manager.release(eventManager);
               }
           }
       }
  
  
  
  1.8       +5 -3      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java
  
  Index: CopletSourceFactory.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- CopletSourceFactory.java	19 Apr 2004 14:47:31 -0000	1.7
  +++ CopletSourceFactory.java	28 Apr 2004 13:58:16 -0000	1.8
  @@ -78,10 +78,12 @@
               location = location.substring(position+2);
           }
           PortalService service = null;
  -        CopletInstanceData coplet = null;
           try {
               service = (PortalService)this.manager.lookup(PortalService.ROLE);
  -            coplet = service.getComponentManager().getProfileManager().getCopletInstanceData(location);
  +            CopletInstanceData coplet = service.getComponentManager().getProfileManager().getCopletInstanceData(location);
  +            if ( coplet == null ) {
  +                throw new IOException("Unable to get coplet for " + location);
  +            }
               CopletSource copletSource =
                   new CopletSource(uri, protocol,
                                    coplet);
  
  
  
  1.7       +6 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
  
  Index: AbstractProfileManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractProfileManager.java	5 Mar 2004 13:02:16 -0000	1.6
  +++ AbstractProfileManager.java	28 Apr 2004 13:58:16 -0000	1.7
  @@ -179,7 +179,11 @@
           PortalService service = null;
           try {
               service = (PortalService) this.manager.lookup(PortalService.ROLE);
  -            service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
  +            if ( object == null ) {
  +                service.removeTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey);
  +            } else {
  +                service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
  +            }
           } catch (ServiceException e) {
               throw new CascadingRuntimeException("Unable to lookup service manager.", e);
           } finally {
  
  
  
  1.6       +1 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/CIncludeCopletAspect.java
  
  Index: CIncludeCopletAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/CIncludeCopletAspect.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CIncludeCopletAspect.java	25 Apr 2004 20:09:34 -0000	1.5
  +++ CIncludeCopletAspect.java	28 Apr 2004 13:58:16 -0000	1.6
  @@ -58,7 +58,6 @@
                   		PortalService service,
                   		ContentHandler handler)
   	throws SAXException {
  -
           CopletInstanceData cid = ((CopletLayout)layout).getCopletInstanceData();
           
           XMLUtils.startElement(handler, "content");
  
  
  
  1.8       +1 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/generation/PortalGenerator.java
  
  Index: PortalGenerator.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/generation/PortalGenerator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- PortalGenerator.java	14 Apr 2004 18:25:11 -0000	1.7
  +++ PortalGenerator.java	28 Apr 2004 13:58:16 -0000	1.8
  @@ -49,7 +49,6 @@
   	 */
   	public void generate()
       throws IOException, SAXException, ProcessingException {
  -        
           // start the portal rendering
           // 1. event processing
           // 2. rendering
  
  
  
  1.13      +2 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
  
  Index: DefaultLinkService.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultLinkService.java	5 Mar 2004 13:02:13 -0000	1.12
  +++ DefaultLinkService.java	28 Apr 2004 13:58:16 -0000	1.13
  @@ -224,7 +224,7 @@
                   Object[] objects = (Object[])iter.next();
                   if ( ((ComparableEvent)objects[0]).equalsEvent((ComparableEvent)event) ) {
                       found = true;
  -                    info.comparableEvents.remove(objects[0]);
  +                    info.comparableEvents.remove(objects);
                   }
               }
               info.comparableEvents.add( new Object[] {event, parameterName, value} );