001 /*
002 * Apache License
003 * Version 2.0, January 2004
004 * http://www.apache.org/licenses/
005 *
006 * Copyright 1996-2008 by Sven Homburg
007 *
008 * Licensed under the Apache License, Version 2.0 (the "License");
009 * you may not use this file except in compliance with the License.
010 * You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 */
014
015 package org.chenillekit.tapestry.core.bindings;
016
017 import java.util.ArrayList;
018 import java.util.List;
019
020 import org.apache.tapestry5.Binding;
021 import org.apache.tapestry5.internal.bindings.AbstractBinding;
022 import org.apache.tapestry5.ioc.Location;
023 import org.apache.tapestry5.ioc.Messages;
024
025 /**
026 * Binding type for collection values.
027 * This binding called by expression "messageformat:".
028 *
029 * @version $Id: MessageFormatBinding.java 594 2009-12-05 15:17:26Z mlusetti $
030 */
031 public class MessageFormatBinding extends AbstractBinding
032 {
033 private final String _messageKey;
034 private final Messages _messages;
035 private final List<Binding> _bindings;
036 private final boolean _invariant;
037
038 public MessageFormatBinding(Location location, String messageKey, Messages messages, List<Binding> bindings, boolean invariant)
039 {
040 super(location);
041
042 _messageKey = messageKey;
043 _messages = messages;
044 _bindings = bindings;
045 _invariant = invariant;
046 }
047
048 public Object get()
049 {
050 List<Object> values = new ArrayList<Object>(_bindings.size());
051 for (Binding binding : _bindings)
052 values.add(binding.get());
053
054 return _messages.format(_messageKey, values.toArray());
055 }
056
057 @Override
058 public boolean isInvariant()
059 {
060 return this._invariant;
061 }
062
063 @Override
064 public Class getBindingType()
065 {
066 return String.class;
067 }
068 }