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/02/28 18:26:28 UTC

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

cziegeler    2004/02/28 09:26:28

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/transformation
                        CopletTransformer.java
                        AbstractCopletTransformer.java
               src/blocks/portal/java/org/apache/cocoon/portal
                        LinkService.java
               src/blocks/portal/java/org/apache/cocoon/portal/impl
                        DefaultLinkService.java
  Log:
  Fix problems when an event for a non-existent coplet is tried to be created
  
  Revision  Changes    Path
  1.15      +11 -5     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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- CopletTransformer.java	13 Feb 2004 11:50:30 -0000	1.14
  +++ CopletTransformer.java	28 Feb 2004 17:26:27 -0000	1.15
  @@ -197,20 +197,26 @@
                       newAttrs.removeAttribute("path");
                       newAttrs.removeAttribute("value");
                       
  -                    JXPathEvent event;
  +                    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);
  -                        event = new JXPathEvent(layout, path, value);
  +                        if ( layout != null ) {
  +                            event = new JXPathEvent(layout, path, value);
  +                        }
                       } else {
                           String copletId = attr.getValue("coplet");
                           newAttrs.removeAttribute("coplet");
                           final CopletInstanceData cid = this.getCopletInstanceData(copletId);
  -                        event = new CopletJXPathEvent(cid, path, value);
  +                        if ( cid != null ) {
  +                            event = new CopletJXPathEvent(cid, path, value);
  +                        }
                       }
                       if ( this.insideLinks ) {
  -                        this.collectedEvents.add(event);
  +                        if ( event != null ) {
  +                            this.collectedEvents.add(event);
  +                        }
                       } else {
                           final String href = linkService.getLinkURI(event);
                           this.output(href, format, newAttrs );
  
  
  
  1.7       +18 -6     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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractCopletTransformer.java	12 Feb 2004 09:32:37 -0000	1.6
  +++ AbstractCopletTransformer.java	28 Feb 2004 17:26:27 -0000	1.7
  @@ -91,11 +91,27 @@
        */
       public static final String PORTAL_NAME_PARAM = "portalName";
   
  +    /**
  +     * Try to get the coplet instance data belonging to the current request
  +     * @return The coplet instance data
  +     * @throws SAXException If an errors occurs or the instance data is not available
  +     */
       protected CopletInstanceData getCopletInstanceData() 
       throws SAXException {
  -        return this.getCopletInstanceData(null);
  +        CopletInstanceData cid = this.getCopletInstanceData(null);
  +        if ( cid == null ) {
  +            throw new SAXException("Could not find coplet instance data for the current pipeline.");
  +        }
  +        return cid;
       }
       
  +    /**
  +     * Try to get the coplet instance data with the given id
  +     * @param copletId  The id of the coplet instance or null if this transformer
  +     *                   is used inside a coplet pipeline
  +     * @return The coplet instance data or null
  +     * @throws SAXException If an error occurs
  +     */
       protected CopletInstanceData getCopletInstanceData(String copletId) 
       throws SAXException {
           PortalService portalService = null;
  @@ -133,10 +149,6 @@
   
   
               CopletInstanceData object = portalService.getComponentManager().getProfileManager().getCopletInstanceData( copletId );
  -                
  -            if (object == null) {
  -                throw new SAXException("Could not find coplet instance data for " + copletId);
  -            }
                   
               return object;
           } catch (ServiceException e) {
  
  
  
  1.4       +2 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/LinkService.java
  
  Index: LinkService.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/LinkService.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LinkService.java	8 Dec 2003 13:47:50 -0000	1.3
  +++ LinkService.java	28 Feb 2004 17:26:28 -0000	1.4
  @@ -70,7 +70,7 @@
       
       /**
        * Get the uri for this coplet containing the additional event
  -     * @param event The event to add
  +     * @param event The event to add (null is also allowed for convenience)
        * @return A URI
        */
       String getLinkURI(Event event);
  
  
  
  1.11      +10 -1     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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DefaultLinkService.java	11 Dec 2003 13:31:55 -0000	1.10
  +++ DefaultLinkService.java	28 Feb 2004 17:26:28 -0000	1.11
  @@ -136,6 +136,9 @@
        * @see org.apache.cocoon.portal.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event)
        */
       public String getLinkURI(Event event) {
  +        if ( event == null ) {
  +            return this.getRefreshLinkURI();   
  +        }
           final Info info = this.getInfo();
           final StringBuffer buffer = new StringBuffer(info.linkBase.toString());
           boolean hasParams = info.hasParameters;
  @@ -189,6 +192,9 @@
        * @see org.apache.cocoon.portal.LinkService#getLinkURI(java.util.List)
        */
       public String getLinkURI(List events) {
  +        if ( events == null || events.size() == 0) {
  +            return this.getRefreshLinkURI();   
  +        }
           final Info info = this.getInfo();
           boolean hasParams = info.hasParameters;
           final StringBuffer buffer = new StringBuffer(info.linkBase.toString());
  @@ -232,6 +238,9 @@
        * @see org.apache.cocoon.portal.LinkService#addEventToLink(org.apache.cocoon.portal.event.Event)
        */
       public void addEventToLink(Event event) {
  +        if ( event == null ) {
  +            return;   
  +        }
           String parameterName = DEFAULT_REQUEST_EVENT_PARAMETER_NAME;
           if (event instanceof RequestEvent ) {
               final String eventParName = ((RequestEvent)event).getRequestParameterName();