public URL buildURL(final UrlMapping mapping)
   {
      URL result = null;

      String expression = "";
      Object value = null;
      try
      {
         FacesContext context = FacesContext.getCurrentInstance();

         URLPatternParser parser = mapping.getPatternParser();
         List<PathParameter> parameters = parser.getPathParameters();
         List<String> parameterValues = new ArrayList<String>();
         for (PathParameter injection : parameters)
         {
            // read value of the path parameter
            expression = injection.getExpression().getELExpression();
            value = elUtils.getValue(context, expression);
            if (value == null)
            {
               throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                        + mapping.getId() + " >, Required value " + " < " + expression + " > was null");
            }

            // convert the value to a string using the correct converter
            Converter converter = context.getApplication().createConverter(value.getClass());
            if (converter != null)
            {
               String convertedValue = converter.getAsString(context, new NullComponent(), value);
               if (convertedValue == null)
               {
                  throw new PrettyException("PrettyFaces: The converter <" + converter.getClass().getName()
                           + "> returned null while converting the object <" + value.toString() + ">!");
               }
               value = convertedValue;
            }

            parameterValues.add(value.toString());
         }

         result = parser.getMappedURL(parameterValues).encode();
      }
      catch (ELException e)
      {
         throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                  + mapping.getId() + " >, Error occurred while extracting values from backing bean" + " < "
                  + expression + ":" + value + " >", e);
      }

      return result;
   }
public URL buildURL(final UrlMapping mapping)
   {
      URL result = null;

      String expression = "";
      Object value = null;
      try
      {
         FacesContext context = FacesContext.getCurrentInstance();

         URLPatternParser parser = mapping.getPatternParser();
         List<PathParameter> parameters = parser.getPathParameters();
         List<String> parameterValues = new ArrayList<String>();
         for (PathParameter injection : parameters)
         {
            
            expression = injection.getExpression().getELExpression();
            value = elUtils.getValue(context, expression);
            if (value == null)
            {
               throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                        + mapping.getId() + " >, Required value " + " < " + expression + " > was null");
            }

            
            Converter converter = context.getApplication().createConverter(value.getClass());
            if (converter != null)
            {
               String convertedValue = converter.getAsString(context, new NullComponent(), value);
               if (convertedValue == null)
               {
                  throw new PrettyException("PrettyFaces: The converter <" + converter.getClass().getName()
                           + "> returned null while converting the object <" + value.toString() + ">!");
               }
               value = convertedValue;
            }

            parameterValues.add(value.toString());
         }

         result = parser.getMappedURL(parameterValues).encode();
      }
      catch (ELException e)
      {
         throw new PrettyException("PrettyFaces: Exception occurred while building URL for MappingId < "
                  + mapping.getId() + " >, Error occurred while extracting values from backing bean" + " < "
                  + expression + ":" + value + " >", e);
      }

      return result;
   }
public URL buildURL ( final UrlMapping mapping ) { URL result = null ; String expression = "" ; Object value = null ; try { FacesContext context = FacesContext . getCurrentInstance ( ) ; URLPatternParser parser = mapping . getPatternParser ( ) ; List < PathParameter > parameters = parser . getPathParameters ( ) ; List < String > parameterValues = new ArrayList < String > ( ) ; for ( PathParameter injection : parameters ) { // read value of the path parameter expression = injection . getExpression ( ) . getELExpression ( ) ; value = elUtils . getValue ( context , expression ) ; if ( value == null ) { throw new PrettyException ( "PrettyFaces: Exception occurred while building URL for MappingId < " + mapping . getId ( ) + " >, Required value " + " < " + expression + " > was null" ) ; } // convert the value to a string using the correct converter Converter converter = context . getApplication ( ) . createConverter ( value . getClass ( ) ) ; if ( converter != null ) { String convertedValue = converter . getAsString ( context , new NullComponent ( ) , value ) ; if ( convertedValue == null ) { throw new PrettyException ( "PrettyFaces: The converter <" + converter . getClass ( ) . getName ( ) + "> returned null while converting the object <" + value . toString ( ) + ">!" ) ; } value = convertedValue ; } parameterValues . add ( value . toString ( ) ) ; } result = parser . getMappedURL ( parameterValues ) . encode ( ) ; } catch ( ELException e ) { throw new PrettyException ( "PrettyFaces: Exception occurred while building URL for MappingId < " + mapping . getId ( ) + " >, Error occurred while extracting values from backing bean" + " < " + expression + ":" + value + " >" , e ) ; } return result ; }
For all required values of the given PrettyUrlMapping, extract values from their mapped backing beans and create a
URL based on the url-pattern.

@param mapping Mapping for which to extract values and generate URL
@return The fully constructed URL
For all required values of the given PrettyUrlMapping extract values from their mapped backing beans and create a URL based on the url - pattern .