001// Copyright 2009 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.
014package org.apache.tapestry5.ioc;
015
016import java.util.ArrayList;
017import java.util.List;
018
019/**
020 * Represents an order constraints for {@link OrderedConfiguration}.
021 * 
022 * @since 5.2.0.0
023 */
024public class OrderConstraint
025{
026    private static final String ALL = "*";
027    
028    private List<String> constraints = new ArrayList<String>();
029    
030    /**
031     * Adds an <i>after:id</i> constraint.
032     */
033    public OrderConstraint after(String id)
034    {
035        constraints.add("after:" + id);
036        
037        return this;
038    }
039    
040    /**
041     * Adds an <i>after:*</i> constraint.
042     */
043    public OrderConstraint afterAll()
044    {
045        return after(ALL);
046    }
047    /**
048     * Adds a <i>before:id</i> constraint.
049     */
050    public OrderConstraint before(String id)
051    {
052        constraints.add("before:" + id);
053        
054        return this;
055    }
056    
057    /**
058     * Adds a <i>before:*</i> constraint.
059     */
060    public OrderConstraint beforeAll()
061    {
062        return before(ALL);
063    }
064    
065    /**
066     * Returns all constraints as array of strings.
067     */
068    public String[] build()
069    {
070        return constraints.toArray(new String[]{});
071    }
072}