001 /* 002 * Copyright 2004 Stephen J. McConnell. 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 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.metro.data; 020 021 import net.dpml.component.Directive; 022 023 /** 024 * A reference directive is a reference to a part within the enclosing part's 025 * context or parts. 026 * 027 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a> 028 * @version 1.0.4 029 */ 030 public final class LookupDirective extends AbstractDirective implements Directive 031 { 032 /** 033 * Serial version identifier. 034 */ 035 static final long serialVersionUID = 1L; 036 037 /** 038 * The container scoped key. 039 */ 040 private final String m_classname; 041 042 /** 043 * Creation of a new lookup directive. 044 * @param classname the service classname 045 * @exception NullPointerException if the classname argument is null. 046 */ 047 public LookupDirective( final String classname ) 048 throws NullPointerException 049 { 050 if( null == classname ) 051 { 052 throw new NullPointerException( "classname" ); 053 } 054 m_classname = classname; 055 } 056 057 /** 058 * Return the service classname. 059 * 060 * @return the classname 061 */ 062 public String getServiceClassname() 063 { 064 return m_classname; 065 } 066 067 /** 068 * Test if the supplied object is equal to this object. 069 * @param other the object to compare with this instance 070 * @return TRUE if the supplied object is equal to this object 071 */ 072 public boolean equals( Object other ) 073 { 074 if( null == other ) 075 { 076 return false; 077 } 078 else 079 { 080 if( other instanceof LookupDirective ) 081 { 082 LookupDirective directive = (LookupDirective) other; 083 return m_classname.equals( directive.m_classname ); 084 } 085 else 086 { 087 return false; 088 } 089 } 090 } 091 092 /** 093 * Return the hashcode for the instance. 094 * @return the instance hashcode 095 */ 096 public int hashCode() 097 { 098 return m_classname.hashCode(); 099 } 100 }