001: /*
002: * Copyright 2002-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.springframework.orm;
018:
019: import org.springframework.dao.DataRetrievalFailureException;
020:
021: /**
022: * Exception thrown if a mapped object could not be retrieved via its identifier.
023: * Provides information about the persistent class and the identifier.
024: *
025: * @author Juergen Hoeller
026: * @since 13.10.2003
027: */
028: public class ObjectRetrievalFailureException extends
029: DataRetrievalFailureException {
030:
031: private Object persistentClass;
032:
033: private Object identifier;
034:
035: /**
036: * Create a general ObjectRetrievalFailureException with the given message,
037: * without any information on the affected object.
038: * @param msg the detail message
039: * @param cause the source exception
040: */
041: public ObjectRetrievalFailureException(String msg, Throwable cause) {
042: super (msg, cause);
043: }
044:
045: /**
046: * Create a new ObjectRetrievalFailureException for the given object,
047: * with the default "not found" message.
048: * @param persistentClass the persistent class
049: * @param identifier the ID of the object that should have been retrieved
050: */
051: public ObjectRetrievalFailureException(Class persistentClass,
052: Object identifier) {
053: this (persistentClass, identifier, "Object of class ["
054: + persistentClass.getName() + "] with identifier ["
055: + identifier + "]: not found", null);
056: }
057:
058: /**
059: * Create a new ObjectRetrievalFailureException for the given object,
060: * with the given explicit message and exception.
061: * @param persistentClass the persistent class
062: * @param identifier the ID of the object that should have been retrieved
063: * @param msg the detail message
064: * @param cause the source exception
065: */
066: public ObjectRetrievalFailureException(Class persistentClass,
067: Object identifier, String msg, Throwable cause) {
068:
069: super (msg, cause);
070: this .persistentClass = persistentClass;
071: this .identifier = identifier;
072: }
073:
074: /**
075: * Create a new ObjectRetrievalFailureException for the given object,
076: * with the default "not found" message.
077: * @param persistentClassName the name of the persistent class
078: * @param identifier the ID of the object that should have been retrieved
079: */
080: public ObjectRetrievalFailureException(String persistentClassName,
081: Object identifier) {
082: this (persistentClassName, identifier, "Object of class ["
083: + persistentClassName + "] with identifier ["
084: + identifier + "]: not found", null);
085: }
086:
087: /**
088: * Create a new ObjectRetrievalFailureException for the given object,
089: * with the given explicit message and exception.
090: * @param persistentClassName the name of the persistent class
091: * @param identifier the ID of the object that should have been retrieved
092: * @param msg the detail message
093: * @param cause the source exception
094: */
095: public ObjectRetrievalFailureException(String persistentClassName,
096: Object identifier, String msg, Throwable cause) {
097:
098: super (msg, cause);
099: this .persistentClass = persistentClassName;
100: this .identifier = identifier;
101: }
102:
103: /**
104: * Return the persistent class of the object that was not found.
105: * If no Class was specified, this method returns null.
106: */
107: public Class getPersistentClass() {
108: return (this .persistentClass instanceof Class ? (Class) this .persistentClass
109: : null);
110: }
111:
112: /**
113: * Return the name of the persistent class of the object that was not found.
114: * Will work for both Class objects and String names.
115: */
116: public String getPersistentClassName() {
117: if (this .persistentClass instanceof Class) {
118: return ((Class) this .persistentClass).getName();
119: }
120: return (this .persistentClass != null ? this .persistentClass
121: .toString() : null);
122: }
123:
124: /**
125: * Return the identifier of the object that was not found.
126: */
127: public Object getIdentifier() {
128: return identifier;
129: }
130:
131: }
|