    001    // Copyright 2006, 2011 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    //     http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014
    015    package org.apache.tapestry5.internal.parser;
    016
    017    import org.apache.tapestry5.MarkupWriter;
    018    import org.apache.tapestry5.ioc.Location;
    019    import org.apache.tapestry5.runtime.RenderCommand;
    020    import org.apache.tapestry5.runtime.RenderQueue;
    021
    022    /**
    023     * Stores an attribute/value pair (as part of an XML element).
    024     */
    025    public class AttributeToken extends TemplateToken implements RenderCommand
    026    {
    027        public final String namespaceURI;
    028
    029        public final String name;
    030
    031        public final String value;
    032
    033        public AttributeToken(String namespaceURI, String name, String value, Location location)
    034        {
    035            super(TokenType.ATTRIBUTE, location);
    036
    037            this.namespaceURI = namespaceURI;
    038            this.name = name;
    039            this.value = value;
    040        }
    041
    042        public void render(MarkupWriter writer, RenderQueue queue)
    043        {
    044            writer.attributeNS(namespaceURI, name, value);
    045        }
    046
    047
    048        @Override
    049        public String toString()
    050        {
    051            StringBuilder builder = new StringBuilder("Attribute[");
    052
    053            if (namespaceURI.length() > 0) builder.append(namespaceURI).append(" ");
    054
    055            builder.append(name).append("=").append(value).append("]");
    056
    057            return builder.toString();
    058        }
    059    }