    001    package org.apache.turbine.pipeline;
    002
    003    import java.util.HashMap;
    004    import java.util.Map;
    005
    006
    007    /*
    008     * Licensed to the Apache Software Foundation (ASF) under one
    009     * or more contributor license agreements.  See the NOTICE file
    010     * distributed with this work for additional information
    011     * regarding copyright ownership.  The ASF licenses this file
    012     * to you under the Apache License, Version 2.0 (the
    013     * "License"); you may not use this file except in compliance
    014     * with the License.  You may obtain a copy of the License at
    015     *
    016     *   http://www.apache.org/licenses/LICENSE-2.0
    017     *
    018     * Unless required by applicable law or agreed to in writing,
    019     * software distributed under the License is distributed on an
    020     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    021     * KIND, either express or implied.  See the License for the
    022     * specific language governing permissions and limitations
    023     * under the License.
    024     */
    025
    026
    027    /**
    028     * <p>A <b>PipelineData</b> is a holder for data being passed from one
    029     * Valve to the next.
    030     * The detailed contract for a Valve is included in the description of
    031     * the <code>invoke()</code> method below.</p>
    032     *
    033     * <b>HISTORICAL NOTE</b>:  The "PipelineData" name was assigned to this
    034     * holder as it functions similarily to the RunData object, but without
    035     * the additional methods
    036     *
    037     * @author <a href="mailto:epugh@opensourceconnections.com">Eric Pugh</a>
    038     * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
    039     */
    040    public class DefaultPipelineData implements PipelineData
    041    {
    042        private final Map<Class<?>, Map<?, ?>> map = new HashMap<Class<?>, Map<?, ?>>();
    043
    044        public void put(Class<?> key, Map<?, ?> value)
    045        {
    046            map.put(key, value);
    047        }
    048
    049        public Map<?, ?> get(Class key)
    050        {
    051            return map.get(key);
    052        }
    053
    054        public Object get(Class<?> key, Object innerKey)
    055        {
    056            Map<?, ?> innerMap = get(key);
    057            if (innerMap == null)
    058            {
    059                return null;
    060            }
    061            return innerMap.get(innerKey);
    062        }
    063
    064
    065    }