/* * XAdES4j - A Java library for generation and verification of XAdES signatures. * Copyright (C) 2010 Luis Goncalves. * * XAdES4j is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 3 of the License, or any later version. * * XAdES4j is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License along * with XAdES4j. If not, see <http://www.gnu.org/licenses/>. */ package xades4j.production; import xades4j.properties.DataObjectDesc; import java.net.URI; /** * A reference to a signed data object. Each instance of this class will result * in a {@code ds:Reference} element in the signature. * * @see DataObjectDesc * @see EnvelopedXmlObject * * @author Luís */ public final class DataObjectReference extends DataObjectDesc { private final String uri; private String type; /** * Creates a new data object reference. Additional information is added through * the different methods in {@link DataObjectDesc}. * * @param uri the URI that identifies the target data object * * @throws NullPointerException if {@code uri} is {@code null} * @throws IllegalArgumentException if {@code uri} is not RFC 2396 compliant */ public DataObjectReference(String uri) { if (null == uri) { throw new NullPointerException("Reference URI cannot be null"); } uri = uri.trim(); URI.create(uri.trim()); this.uri = uri; } /** * Gets the uri of this data object reference * @return the uri that identifies the target data object */ String getUri() { return uri; } /** * Defines the {@code type} of the reference. * <p> * "The <b>optional</b> Type attribute contains information about the type of object * being signed after all {@code ds:Reference} transforms have been applied. * This is represented as a URI." * <p> * "The Type attribute applies to the item being pointed at, not its contents." * @param type the referece's type * @return the current instance */ public DataObjectReference withType(String type) { this.type = type; return this; } String getType() { return type; } }