/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2001 Intersect Software Corporation This library 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 2.1 of the License, or (at your option) any later version. This library 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 this library; if not, see http://www.gnu.org */ package net.wotonomy.control; import java.util.List; import java.util.Map; import net.wotonomy.foundation.NSDictionary; import net.wotonomy.foundation.NSKeyValueCodingAdditions; /** * EOKeyValueCodingAdditions defines an interface for classes that need to have * more control over the wotonomy's bulk property copying and cloning * facilities.
*
* * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 894 $ */ public interface EOKeyValueCodingAdditions extends EOKeyValueCoding, NSKeyValueCodingAdditions { /** * Static utilities methods that call the appropriate method if the object * implements NSKeyValueCodingAdditions, otherwise calls the method on * DefaultImplementation. */ public class Utility extends NSKeyValueCodingAdditions.Utility { /** * Calls the appropriate method if the object implements * NSKeyValueCodingAdditions, otherwise calls the method on * DefaultImplementation. */ public static void takeValuesFromDictionary(Object object, Map dictionary) { if (object instanceof NSKeyValueCodingAdditions) { ((NSKeyValueCodingAdditions) object).takeValuesFromDictionary(dictionary); } else { DefaultImplementation.takeValuesFromDictionary(object, dictionary); } } /** * Calls the appropriate method if the object implements * NSKeyValueCodingAdditions, otherwise calls the method on * DefaultImplementation. */ /* * public static void takeValuesFromDictionaryWithMapping( Object object, * NSDictionary dictionary, NSDictionary mapping) { if (object instanceof * NSKeyValueCodingAdditions) { * ((NSKeyValueCodingAdditions)object).takeValuesFromDictionaryWithMapping( * dictionary, mapping); } else { * DefaultImplementation.takeValuesFromDictionaryWithMapping(object, dictionary, * mapping); } } */ /** * Calls the appropriate method if the object implements * NSKeyValueCodingAdditions, otherwise calls the method on * DefaultImplementation. */ public static NSDictionary valuesForKeys(Object object, List keys) { if (object instanceof NSKeyValueCodingAdditions) { return ((NSKeyValueCodingAdditions) object).valuesForKeys(keys); } else { return DefaultImplementation.valuesForKeys(object, keys); } } /** * Calls the appropriate method if the object implements * NSKeyValueCodingAdditions, otherwise calls the method on * DefaultImplementation. */ /* * public static NSDictionary valuesForKeysWithMapping( Object object, * NSDictionary mapping) { if (object instanceof NSKeyValueCodingAdditions) { * return ((NSKeyValueCodingAdditions)object).valuesForKeysWithMapping(mapping); * } else { return DefaultImplementation.valuesForKeysWithMapping(object, * mapping); } } */ } /** * Provides a reflection-based implementation for classes that don't implement * NSKeyValueCodingAdditions. */ public class DefaultImplementation extends NSKeyValueCodingAdditions.DefaultImplementation { public static void takeValuesFromDictionary(Object object, NSDictionary dictionary) { throw new RuntimeException("Not implemented yet."); } public static void takeValuesFromDictionaryWithMapping(Object object, NSDictionary dictionary, NSDictionary mapping) { throw new RuntimeException("Not implemented yet."); } public static NSDictionary valuesForKeys(Object object, List keys) { throw new RuntimeException("Not implemented yet."); } public static NSDictionary valuesForKeysWithMapping(Object object, Map mapping) { throw new RuntimeException("Not implemented yet."); } } } /* * $Log$ Revision 1.2 2006/02/16 16:47:14 cgruber Move some classes in to * "internal" packages and re-work imports, etc. * * Also use UnsupportedOperationExceptions where appropriate, instead of * WotonomyExceptions. * * Revision 1.1 2006/02/16 13:19:57 cgruber Check in all sources in * eclipse-friendly maven-enabled packages. * * Revision 1.4 2003/01/16 22:47:30 mpowers Compatibility changes to support * compiling woextensions source. (34 out of 56 classes compile!) * * Revision 1.3 2001/12/10 15:25:11 mpowers Now properly extending * EOKeyValueCoding. * * Revision 1.2 2001/04/28 14:12:23 mpowers Refactored cloning/copying into * KeyValueCodingUtilities. * * Revision 1.1 2001/03/29 03:29:49 mpowers Now using KeyValueCoding and Support * instead of Introspector. * * Revision 1.2 2001/03/28 16:12:30 mpowers Documented interface. * * Revision 1.1 2001/03/27 23:25:05 mpowers Contributing interface, no docs yet. * * */