Coverage report

  %line %branch
org.apache.jetspeed.portalsite.impl.MenuOptionImpl
0% 
0% 

 1  
 /*
 2  
  * Licensed to the Apache Software Foundation (ASF) under one or more
 3  
  * contributor license agreements.  See the NOTICE file distributed with
 4  
  * this work for additional information regarding copyright ownership.
 5  
  * The ASF licenses this file to You under the Apache License, Version 2.0
 6  
  * (the "License"); you may not use this file except in compliance with
 7  
  * the License.  You may obtain a copy of the License at
 8  
  * 
 9  
  *      http://www.apache.org/licenses/LICENSE-2.0
 10  
  * 
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  */
 17  
 package org.apache.jetspeed.portalsite.impl;
 18  
 
 19  
 import org.apache.jetspeed.om.folder.Folder;
 20  
 import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
 21  
 import org.apache.jetspeed.om.page.Link;
 22  
 import org.apache.jetspeed.om.page.Page;
 23  
 import org.apache.jetspeed.page.document.Node;
 24  
 import org.apache.jetspeed.page.document.NodeNotFoundException;
 25  
 import org.apache.jetspeed.portalsite.MenuOption;
 26  
 import org.apache.jetspeed.portalsite.PortalSiteRequestContext;
 27  
 
 28  
 /**
 29  
  * This class implements the portal-site menu option
 30  
  * elements constructed and returned to decorators.
 31  
  * 
 32  
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
 33  
  * @version $Id: MenuOptionImpl.java 537314 2007-05-11 23:08:36Z taylor $
 34  
  */
 35  
 public class MenuOptionImpl extends MenuElementImpl implements MenuOption, Cloneable
 36  
 {
 37  
     /**
 38  
      * definition - menu option definition
 39  
      */
 40  
     private MenuOptionsDefinition definition;
 41  
 
 42  
     /**
 43  
      * MenuOptionImpl - constructor
 44  
      *
 45  
      * @param parent containing menu implementation
 46  
      * @param node menu option node proxy
 47  
      * @param definition menu option definition
 48  
      */
 49  
     public MenuOptionImpl(MenuImpl parent, Node node, MenuOptionsDefinition definition)
 50  
     {
 51  0
         super(parent, node);
 52  0
         this.definition = definition;
 53  0
     }
 54  
 
 55  
     /**
 56  
      * getElementType - get type of menu element
 57  
      *
 58  
      * @return OPTION_ELEMENT_TYPE
 59  
      */
 60  
     public String getElementType()
 61  
     {
 62  0
         return OPTION_ELEMENT_TYPE;
 63  
     }
 64  
 
 65  
     /**
 66  
      * getType - get type of menu option
 67  
      *
 68  
      * @return FOLDER_OPTION_TYPE, PAGE_OPTION_TYPE, or
 69  
      *         LINK_OPTION_TYPE
 70  
      */
 71  
     public String getType()
 72  
     {
 73  
         // return type of menu option node proxy
 74  0
         Node node = getNode();
 75  0
         if (node instanceof Page)
 76  
         {
 77  0
             return PAGE_OPTION_TYPE;
 78  
         }
 79  0
         else if (node instanceof Link)
 80  
         {
 81  0
             return LINK_OPTION_TYPE;
 82  
         }
 83  0
         else if (node instanceof Folder)
 84  
         {
 85  0
             return FOLDER_OPTION_TYPE;
 86  
         }
 87  0
         return null;
 88  
     }
 89  
 
 90  
     /**
 91  
      * getSkin - get skin name for menu element
 92  
      *
 93  
      * @return skin name
 94  
      */
 95  
     public String getSkin()
 96  
     {
 97  
         // get skin from definition, from menu option
 98  
         // node proxy, or inherit from parent menu
 99  0
         String skin = definition.getSkin();
 100  0
         if (skin == null)
 101  
         {
 102  0
             Node node = getNode();
 103  0
             if (node instanceof Page)
 104  
             {
 105  0
                 skin = ((Page)node).getSkin();
 106  
             }
 107  0
             else if (node instanceof Link)
 108  
             {
 109  0
                 skin = ((Link)node).getSkin();
 110  
             }
 111  0
             else if (node instanceof Folder)
 112  
             {
 113  0
                 skin = ((Folder)node).getSkin();
 114  
             }
 115  
         }
 116  0
         if (skin == null)
 117  
         {
 118  0
             skin = super.getSkin();
 119  
         }
 120  0
         return skin;
 121  
     }
 122  
 
 123  
     /**
 124  
      * getUrl - get url of menu option
 125  
      *
 126  
      * @return folder, page, or link url
 127  
      */
 128  
     public String getUrl()
 129  
     {
 130  0
         return getNode().getUrl();
 131  
     }
 132  
 
 133  
     /**
 134  
      * getTarget - get target for url of menu option
 135  
      *
 136  
      * @return url target
 137  
      */
 138  
     public String getTarget()
 139  
     {
 140  
         // only link nodes support target
 141  0
         Node node = getNode();
 142  0
         if (node instanceof Link)
 143  
         {
 144  0
             return ((Link)node).getTarget();
 145  
         }
 146  0
         return null;
 147  
     }
 148  
 
 149  
     /**
 150  
      * getDefaultPage - get default page for a folder (if folder) of menu option
 151  
      *
 152  
      * @return url target
 153  
      */
 154  
     public String getDefaultPage()
 155  
     {
 156  
         // only link nodes support target
 157  0
         Node node = getNode();
 158  0
         if (node instanceof Folder)
 159  
         {
 160  0
             return ((Folder)node).getDefaultPage();
 161  
         }
 162  0
         return null;
 163  
     }
 164  
     
 165  
     /**
 166  
      * isHidden - get hidden state of menu option
 167  
      *
 168  
      * @return hidden state
 169  
      */
 170  
     public boolean isHidden()
 171  
     {
 172  0
         return getNode().isHidden();
 173  
     }
 174  
 
 175  
     /**
 176  
      * isSelected - return true if menu option is selected by
 177  
      *              the specified request context
 178  
      *
 179  
      * @param context request context
 180  
      * @return selected state
 181  
      */
 182  
     public boolean isSelected(PortalSiteRequestContext context)
 183  
     {
 184  
         // compare the site view url of the page or
 185  
         // folder menu option proxy with the url of
 186  
         // the context request profiled page proxy
 187  0
         if (context != null)
 188  
         {
 189  
             // get request page
 190  0
             Page requestPage = null;
 191  
             try
 192  
             {
 193  0
                 requestPage = context.getPage();
 194  
             }
 195  0
             catch (NodeNotFoundException nnfe)
 196  
             {
 197  
             }
 198  0
             catch (SecurityException se)
 199  
             {
 200  0
             }
 201  0
             if (requestPage != null)
 202  
             {
 203  
                 // get selected status based or request page url
 204  0
                 Node node = getNode();
 205  0
                 if (node instanceof Page)
 206  
                 {
 207  
                     // page urls must match the request page
 208  
                     // urls to be considered selected
 209  0
                     return requestPage.getUrl().equals(node.getUrl());
 210  
                 }
 211  0
                 else if (node instanceof Folder)
 212  
                 {
 213  
                     // folder urls must be a prefix of the
 214  
                     // request page urls to be considered
 215  
                     // selected
 216  0
                     return requestPage.getUrl().startsWith(node.getUrl());
 217  
                 }
 218  
             }
 219  
         }
 220  0
         return false;
 221  
     }
 222  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.