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/03/16 10:16:59 UTC

cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation NewEventLinkTransformer.java CopletTransformer.java EventLinkTransformer.java HTMLEventLinkTransformer.java AbstractCopletTransformer.java

cziegeler    2004/03/16 01:16:59

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/transformation
                        NewEventLinkTransformer.java CopletTransformer.java
                        EventLinkTransformer.java
                        HTMLEventLinkTransformer.java
                        AbstractCopletTransformer.java
  Log:
  Hopefully fixing bug 27672 now
  
  Revision  Changes    Path
  1.7       +28 -39    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java
  
  Index: NewEventLinkTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/NewEventLinkTransformer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- NewEventLinkTransformer.java	5 Mar 2004 13:02:16 -0000	1.6
  +++ NewEventLinkTransformer.java	16 Mar 2004 09:16:59 -0000	1.7
  @@ -17,8 +17,6 @@
   
   import java.util.Stack;
   
  -import org.apache.avalon.framework.service.ServiceException;
  -import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.event.impl.CopletLinkEvent;
   import org.xml.sax.Attributes;
  @@ -172,46 +170,37 @@
           // if attribute found that contains a link
           if (link != null) {
               CopletInstanceData cid = this.getCopletInstanceData();
  -            PortalService portalService = null;
  -            try {
  -                portalService = (PortalService) this.manager.lookup(PortalService.ROLE);
  -                // create event link
  -                CopletLinkEvent event = new CopletLinkEvent(cid, link);
  -                String eventLink = portalService.getComponentManager().getLinkService().getLinkURI(event);
  -
  -                //form elements need hidden inputs to change request parameters
  -                if (formSpecialTreatment) {
  -                    int begin =
  -                        eventLink.indexOf("cocoon-portal-action=")
  -                            + "cocoon-portal-action=".length();
  -                    int end = eventLink.indexOf('&', begin);
  -                    if (end == -1) {
  -                        end = eventLink.length();
  -                    }
  -
  -                    portalAction = eventLink.substring(begin, end);
  -
  -                    begin =
  -                        eventLink.indexOf("cocoon-portal-event=")
  -                            + "cocoon-portal-event=".length();
  -                    end = eventLink.indexOf('&', begin);
  -                    if (end == -1) {
  -                        end = eventLink.length();
  -                    }
  -                    portalEvent = eventLink.substring(begin, end);
  +            // create event link
  +            CopletLinkEvent event = new CopletLinkEvent(cid, link);
  +            String eventLink = this.getPortalService().getComponentManager().getLinkService().getLinkURI(event);
  +
  +            //form elements need hidden inputs to change request parameters
  +            if (formSpecialTreatment) {
  +                int begin =
  +                    eventLink.indexOf("cocoon-portal-action=")
  +                        + "cocoon-portal-action=".length();
  +                int end = eventLink.indexOf('&', begin);
  +                if (end == -1) {
  +                    end = eventLink.length();
  +                }
  +
  +                portalAction = eventLink.substring(begin, end);
   
  -                    eventLink =
  -                        eventLink.substring(0, eventLink.indexOf('?'));
  +                begin =
  +                    eventLink.indexOf("cocoon-portal-event=")
  +                        + "cocoon-portal-event=".length();
  +                end = eventLink.indexOf('&', begin);
  +                if (end == -1) {
  +                    end = eventLink.length();
                   }
  +                portalEvent = eventLink.substring(begin, end);
   
  -                // insert event link
  -                newAttributes.setValue(index, eventLink);
  -            }
  -            catch (ServiceException e) {
  -                throw new SAXException(e);
  -            } finally {
  -                this.manager.release(portalService);
  +                eventLink =
  +                    eventLink.substring(0, eventLink.indexOf('?'));
               }
  +
  +            // insert event link
  +            newAttributes.setValue(index, eventLink);
           }
   
           elementStack.push(elementName);
  
  
  
  1.17      +52 -69    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/CopletTransformer.java
  
  Index: CopletTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/CopletTransformer.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- CopletTransformer.java	5 Mar 2004 13:02:16 -0000	1.16
  +++ CopletTransformer.java	16 Mar 2004 09:16:59 -0000	1.17
  @@ -19,10 +19,8 @@
   import java.util.ArrayList;
   import java.util.List;
   
  -import org.apache.avalon.framework.service.ServiceException;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.portal.LinkService;
  -import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.event.impl.ChangeCopletInstanceAspectDataEvent;
   import org.apache.cocoon.portal.event.impl.CopletJXPathEvent;
  @@ -133,64 +131,56 @@
               }
                   
           } else if (name.equals(LINK_ELEM)) {
  -            PortalService portalService = null;
  -            try {
  -                portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
  -
  -                final LinkService linkService = portalService.getComponentManager().getLinkService();
  -                final String format = attr.getValue("format");
  -                AttributesImpl newAttrs = new AttributesImpl();
  -                newAttrs.setAttributes(attr);
  -                newAttrs.removeAttribute("format");
  -
  -                if ( attr.getValue("href") != null ) {
  -                    final CopletInstanceData cid = this.getCopletInstanceData();
  -                    ChangeCopletInstanceAspectDataEvent event = new ChangeCopletInstanceAspectDataEvent(cid, null, null);
  -                    
  -                    String value = linkService.getLinkURI(event);
  -                    if (value.indexOf('?') == -1) {
  -                        value = value + '?' + attr.getValue("href");
  -                    } else {
  -                        value = value + '&' + attr.getValue("href");
  +
  +            final LinkService linkService = this.getPortalService().getComponentManager().getLinkService();
  +            final String format = attr.getValue("format");
  +            AttributesImpl newAttrs = new AttributesImpl();
  +            newAttrs.setAttributes(attr);
  +            newAttrs.removeAttribute("format");
  +
  +            if ( attr.getValue("href") != null ) {
  +                final CopletInstanceData cid = this.getCopletInstanceData();
  +                ChangeCopletInstanceAspectDataEvent event = new ChangeCopletInstanceAspectDataEvent(cid, null, null);
  +                
  +                String value = linkService.getLinkURI(event);
  +                if (value.indexOf('?') == -1) {
  +                    value = value + '?' + attr.getValue("href");
  +                } else {
  +                    value = value + '&' + attr.getValue("href");
  +                }
  +                newAttrs.removeAttribute("href");
  +                this.output(value, format, newAttrs );
  +            } else {
  +                final String path = attr.getValue("path");
  +                final String value = attr.getValue("value");
  +                
  +                newAttrs.removeAttribute("path");
  +                newAttrs.removeAttribute("value");
  +                
  +                JXPathEvent event = null;
  +                if ( attr.getValue("layout") != null ) {
  +                    newAttrs.removeAttribute("layout");
  +                    final String layoutId = attr.getValue("layout");
  +                    Object layout = this.getPortalService().getComponentManager().getProfileManager().getPortalLayout(null, layoutId);
  +                    if ( layout != null ) {
  +                        event = new JXPathEvent(layout, path, value);
                       }
  -                    newAttrs.removeAttribute("href");
  -                    this.output(value, format, newAttrs );
                   } else {
  -                    final String path = attr.getValue("path");
  -                    final String value = attr.getValue("value");
  -                    
  -                    newAttrs.removeAttribute("path");
  -                    newAttrs.removeAttribute("value");
  -                    
  -                    JXPathEvent event = null;
  -                    if ( attr.getValue("layout") != null ) {
  -                        newAttrs.removeAttribute("layout");
  -                        final String layoutId = attr.getValue("layout");
  -                        Object layout = portalService.getComponentManager().getProfileManager().getPortalLayout(null, layoutId);
  -                        if ( layout != null ) {
  -                            event = new JXPathEvent(layout, path, value);
  -                        }
  -                    } else {
  -                        String copletId = attr.getValue("coplet");
  -                        newAttrs.removeAttribute("coplet");
  -                        final CopletInstanceData cid = this.getCopletInstanceData(copletId);
  -                        if ( cid != null ) {
  -                            event = new CopletJXPathEvent(cid, path, value);
  -                        }
  +                    String copletId = attr.getValue("coplet");
  +                    newAttrs.removeAttribute("coplet");
  +                    final CopletInstanceData cid = this.getCopletInstanceData(copletId);
  +                    if ( cid != null ) {
  +                        event = new CopletJXPathEvent(cid, path, value);
                       }
  -                    if ( this.insideLinks ) {
  -                        if ( event != null ) {
  -                            this.collectedEvents.add(event);
  -                        }
  -                    } else {
  -                        final String href = linkService.getLinkURI(event);
  -                        this.output(href, format, newAttrs );
  +                }
  +                if ( this.insideLinks ) {
  +                    if ( event != null ) {
  +                        this.collectedEvents.add(event);
                       }
  +                } else {
  +                    final String href = linkService.getLinkURI(event);
  +                    this.output(href, format, newAttrs );
                   }
  -            } catch (ServiceException e) {
  -                throw new SAXException("Error getting portal service.", e);
  -            } finally {
  -                this.manager.release( portalService );
               }
           } else if (name.equals(LINKS_ELEM) ) {
               this.insideLinks = true;
  @@ -221,19 +211,12 @@
           } else if ( name.equals(LINKS_ELEM) ) {
               this.insideLinks = false;
               final String format = (String)this.stack.pop();
  -            PortalService portalService = null;
  -            try {
  -                portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
  -                final LinkService linkService = portalService.getComponentManager().getLinkService();
  -                
  -                final String href = linkService.getLinkURI(this.collectedEvents);
  -                final AttributesImpl newAttrs = new AttributesImpl();
  -                this.output(href, format, newAttrs );
  -            } catch (ServiceException e) {
  -                throw new SAXException("Error getting portal service.", e);
  -            } finally {
  -                this.manager.release( portalService );
  -            }
  +            final LinkService linkService = this.getPortalService().getComponentManager().getLinkService();
  +            
  +            final String href = linkService.getLinkURI(this.collectedEvents);
  +            final AttributesImpl newAttrs = new AttributesImpl();
  +            this.output(href, format, newAttrs );
  +
               this.collectedEvents.clear();
               if ( this.content != null ) {
                   this.content.toSAX(this.contentHandler);
  
  
  
  1.8       +13 -28    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java
  
  Index: EventLinkTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/EventLinkTransformer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- EventLinkTransformer.java	5 Mar 2004 13:02:16 -0000	1.7
  +++ EventLinkTransformer.java	16 Mar 2004 09:16:59 -0000	1.8
  @@ -17,7 +17,6 @@
   
   import java.util.Stack;
   
  -import org.apache.avalon.framework.service.ServiceException;
   import org.apache.cocoon.portal.LinkService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.event.impl.CopletLinkEvent;
  @@ -169,21 +168,14 @@
                       // if attribute found that contains a link
                       if (link != null) {
                           CopletInstanceData cid = this.getCopletInstanceData();                       
  -                        LinkService linkService = null;
  -                        try {
  -                            linkService = (LinkService)this.manager.lookup(LinkService.ROLE);
  +                        LinkService linkService = this.getPortalService().getComponentManager().getLinkService();
           
  -                            // create event link
  -                            CopletLinkEvent event = new CopletLinkEvent(cid, link);
  -                            String eventLink = linkService.getLinkURI(event);
  -        
  -                            // insert event link
  -                            attr.setValue(index, eventLink);
  -                        } catch (ServiceException e) {
  -                            throw new SAXException(e);
  -                        } finally {
  -                            this.manager.release(linkService);
  -                        }
  +                        // create event link
  +                        CopletLinkEvent event = new CopletLinkEvent(cid, link);
  +                        String eventLink = linkService.getLinkURI(event);
  +    
  +                        // insert event link
  +                        attr.setValue(index, eventLink);
                       }
                   }
                   
  @@ -195,18 +187,11 @@
                       String link = this.endTextRecording();
   
                       CopletInstanceData cid = this.getCopletInstanceData();                       
  -                    LinkService linkService = null;
  -                    try {
  -                        linkService = (LinkService)this.manager.lookup(LinkService.ROLE);
  -        
  -                        // create event link
  -                        CopletLinkEvent event = new CopletLinkEvent(cid, link);
  -                        eventLink = linkService.getLinkURI(event);
  -                    } catch (ServiceException e) {
  -                        throw new SAXException(e);
  -                    } finally {
  -                        this.manager.release(linkService);
  -                    }
  +                    LinkService linkService = this.getPortalService().getComponentManager().getLinkService();
  +
  +                    // create event link
  +                    CopletLinkEvent event = new CopletLinkEvent(cid, link);
  +                    eventLink = linkService.getLinkURI(event);
                   } else {
                       fragment = this.endRecording();
                   }
  
  
  
  1.4       +2 -4      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/HTMLEventLinkTransformer.java
  
  Index: HTMLEventLinkTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/HTMLEventLinkTransformer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HTMLEventLinkTransformer.java	11 Mar 2004 09:44:02 -0000	1.3
  +++ HTMLEventLinkTransformer.java	16 Mar 2004 09:16:59 -0000	1.4
  @@ -19,7 +19,6 @@
   import java.util.Map;
   
   import org.apache.avalon.framework.parameters.Parameters;
  -import org.apache.avalon.framework.service.Serviceable;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
  @@ -38,8 +37,7 @@
    * @version CVS $Id$
    */
   public class HTMLEventLinkTransformer 
  -extends AbstractCopletTransformer 
  -implements Serviceable {
  +extends AbstractCopletTransformer {
       
       /** The temporary attribute used to store the uri */
       protected String attributeName;
  
  
  
  1.9       +63 -36    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/AbstractCopletTransformer.java
  
  Index: AbstractCopletTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/AbstractCopletTransformer.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- AbstractCopletTransformer.java	5 Mar 2004 13:02:16 -0000	1.8
  +++ AbstractCopletTransformer.java	16 Mar 2004 09:16:59 -0000	1.9
  @@ -56,6 +56,9 @@
        */
       public static final String PORTAL_NAME_PARAM = "portalName";
   
  +    /** The portal service */
  +    private PortalService _portalService;
  +    
       /**
        * Try to get the coplet instance data belonging to the current request
        * @return The coplet instance data
  @@ -70,6 +73,39 @@
           return cid;
       }
       
  +    
  +    /**
  +     * Get the portal service
  +     */
  +    protected PortalService getPortalService()
  +    throws SAXException {
  +        if ( this._portalService == null ) {
  +            try {
  +                this._portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
  +                
  +                if ( this._portalService.getPortalName() == null ) {
  +                    // set portal name
  +                    String portalName = this.parameters.getParameter(PORTAL_NAME_PARAM, 
  +                                                                    (String)this.objectModel.get(Constants.PORTAL_NAME_KEY));
  +                    if ( portalName == null ) {
  +                        final Map context = (Map)this.objectModel.get(ObjectModelHelper.PARENT_CONTEXT);
  +                        if ( context != null ) {
  +                            portalName = (String) context.get(Constants.PORTAL_NAME_KEY);
  +                        }
  +                    }
  +                    if ( portalName == null ) {
  +                        throw new SAXException("portalName must be passed as parameter or in the object model.");
  +                    }
  +                    this._portalService.setPortalName(portalName);
  +                }
  +            } catch (ServiceException se) {
  +                throw new SAXException("Unable to get portal service.", se);
  +            }
  +        }
  +        return this._portalService;
  +    }
  +    
  +    
       /**
        * Try to get the coplet instance data with the given id
        * @param copletId  The id of the coplet instance or null if this transformer
  @@ -79,47 +115,38 @@
        */
       protected CopletInstanceData getCopletInstanceData(String copletId) 
       throws SAXException {
  -        PortalService portalService = null;
  -        try {
  -
  -            portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
  -
  -            final Map context = (Map)objectModel.get(ObjectModelHelper.PARENT_CONTEXT);
  -            
  -            if ( portalService.getPortalName() == null && context == null) {
  -                // set portal name
  +        final Map context = (Map)objectModel.get(ObjectModelHelper.PARENT_CONTEXT);
  +        
  +        if ( copletId == null ) {
  +            // determine coplet id
  +            if (context != null) {
  +                copletId = (String)context.get(Constants.COPLET_ID_KEY);
  +            } else {
                   try {
  -                    portalService.setPortalName(this.parameters.getParameter(PORTAL_NAME_PARAM));
  +                    copletId = this.parameters.getParameter(COPLET_ID_PARAM);
  +                        
                   } catch (ParameterException e) {
  -                    throw new SAXException("portalName must be passed as parameter or in the object model within the parent context.");
  -                }
  -            }
  -            
  -            if ( copletId == null ) {
  -                // determine coplet id
  -                if (context != null) {
  -                    copletId = (String)context.get(Constants.COPLET_ID_KEY);
  -                } else {
  -                    try {
  -                        copletId = this.parameters.getParameter(COPLET_ID_PARAM);
  -                            
  -                    } catch (ParameterException e) {
  -                        throw new SAXException("copletId must be passed as parameter or in the object model within the parent context.");
  -                    }
  +                    throw new SAXException("copletId must be passed as parameter or in the object model within the parent context.");
                   }
               }
  -            if (copletId == null) {
  -                throw new SAXException("copletId must be passed as parameter or in the object model within the parent context.");
  -            }
  +        }
  +        if (copletId == null) {
  +            throw new SAXException("copletId must be passed as parameter or in the object model within the parent context.");
  +        }
   
  +        CopletInstanceData object = this.getPortalService().getComponentManager().getProfileManager().getCopletInstanceData( copletId );
  +            
  +        return object;
  +    }
   
  -            CopletInstanceData object = portalService.getComponentManager().getProfileManager().getCopletInstanceData( copletId );
  -                
  -            return object;
  -        } catch (ServiceException e) {
  -            throw new SAXException("Error getting portal service.", e);
  -        } finally {
  -            this.manager.release( portalService );
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.excalibur.pool.Recyclable#recycle()
  +     */
  +    public void recycle() {
  +        if ( this._portalService != null ) {
  +            this.manager.release( this._portalService );
  +            this._portalService = null;            
           }
  +        super.recycle();
       }
   }