// Copyright 2006 The Apache Software Foundation | |
// | |
// Licensed under the Apache License, Version 2.0 (the "License"); | |
// you may not use this file except in compliance with the License. | |
// You may obtain a copy of the License at | |
// | |
// http://www.apache.org/licenses/LICENSE-2.0 | |
// | |
// Unless required by applicable law or agreed to in writing, software | |
// distributed under the License is distributed on an "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
// See the License for the specific language governing permissions and | |
// limitations under the License. | |
package org.apache.tapestry5.ioc; | |
import org.apache.tapestry5.ioc.internal.util.Defense; | |
/** | |
* A wrapper that allows objects of a target type to be ordered. Each Orderable object is given a unique id and a set of | |
* pre-requisites (objects which should be ordered earlier) and post-requisites (objects which should be ordered | |
* later). | |
* | |
* @param <T> | |
*/ | |
public class Orderable<T> | |
{ | |
private final String id; | |
private final T target; | |
private final String[] constraints; | |
/** | |
* @param id unique identifier for the target object | |
* @param target the object to be ordered; this may also be null (in which case the id represents a placeholder) | |
*/ | |
public Orderable(String id, T target, String... constraints) | |
{ | |
this.id = Defense.notBlank(id, "id"); | |
this.target = target; | |
this.constraints = constraints; | |
} | |
public String getId() | |
{ | |
return id; | |
} | |
public T getTarget() | |
{ | |
return target; | |
} | |
public String[] getConstraints() | |
{ | |
return constraints; | |
} | |
@Override | |
public String toString() | |
{ | |
StringBuilder buffer = new StringBuilder("Orderable["); | |
buffer.append(id); | |
for (String c : constraints) | |
{ | |
buffer.append(" "); | |
buffer.append(c); | |
} | |
buffer.append(" "); | |
buffer.append(target.toString()); | |
buffer.append("]"); | |
return buffer.toString(); | |
} | |
} |