Oracle Coherence for C++ API
Release 3.7.1.0
E22845-01
00001 /* 00002 * ExtractorProcessor.hpp 00003 * 00004 * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 00005 * 00006 * Oracle is a registered trademarks of Oracle Corporation and/or its 00007 * affiliates. 00008 * 00009 * This software is the confidential and proprietary information of Oracle 00010 * Corporation. You shall not disclose such confidential and proprietary 00011 * information and shall use it only in accordance with the terms of the 00012 * license agreement you entered into with Oracle. 00013 * 00014 * This notice may not be removed or altered. 00015 */ 00016 #ifndef COH_EXTRACTOR_PROCESSOR_HPP 00017 #define COH_EXTRACTOR_PROCESSOR_HPP 00018 00019 #include "coherence/lang.ns" 00020 00021 #include "coherence/io/pof/PofReader.hpp" 00022 #include "coherence/io/pof/PofWriter.hpp" 00023 #include "coherence/io/pof/PortableObject.hpp" 00024 #include "coherence/util/InvocableMap.hpp" 00025 #include "coherence/util/ValueExtractor.hpp" 00026 #include "coherence/util/processor/AbstractProcessor.hpp" 00027 00028 COH_OPEN_NAMESPACE3(coherence,util, processor) 00029 00030 using coherence::io::pof::PofReader; 00031 using coherence::io::pof::PofWriter; 00032 using coherence::io::pof::PortableObject; 00033 using coherence::util::InvocableMap; 00034 using coherence::util::ValueExtractor; 00035 00036 00037 /** 00038 * ExtractorProcessor is an EntryProcessor implementations that extracts a 00039 * value from an object cached in an InvocableMap. 00040 * 00041 * @author tb 2008.04.28 00042 */ 00043 class COH_EXPORT ExtractorProcessor 00044 : public class_spec<ExtractorProcessor, 00045 extends<AbstractProcessor>, 00046 implements<PortableObject> > 00047 { 00048 friend class factory<ExtractorProcessor>; 00049 00050 // ----- constructors --------------------------------------------------- 00051 00052 protected: 00053 /** 00054 * Construct a ExtractorProcessor. 00055 */ 00056 ExtractorProcessor(); 00057 00058 /** 00059 * Construct an ExtractorProcessor based on the specified 00060 * ValueExtractor. 00061 * 00062 * @param vExtractor a ValueExtractor object; passing null is 00063 * equivalent to using the IdentityExtractor 00064 */ 00065 ExtractorProcessor(ValueExtractor::View vExtractor); 00066 00067 00068 // ----- InvocableMap::EntryProcessor interface ------------------------- 00069 00070 public: 00071 /** 00072 * {@inheritDoc} 00073 */ 00074 virtual Object::Holder process(InvocableMap::Entry::Handle hEntry) const; 00075 00076 00077 // ----- PortableObject interface --------------------------------------- 00078 00079 public: 00080 /** 00081 * {@inheritDoc} 00082 */ 00083 virtual void readExternal(PofReader::Handle hIn); 00084 00085 /** 00086 * {@inheritDoc} 00087 */ 00088 virtual void writeExternal(PofWriter::Handle hOut) const; 00089 00090 00091 // ----- Object interface ----------------------------------------------- 00092 00093 public: 00094 /** 00095 * {@inheritDoc} 00096 */ 00097 virtual bool equals(Object::View v) const; 00098 00099 /** 00100 * {@inheritDoc} 00101 */ 00102 virtual size32_t hashCode() const; 00103 00104 00105 // ----- data members --------------------------------------------------- 00106 00107 protected: 00108 /** 00109 * The underlying value extractor. 00110 */ 00111 MemberView<ValueExtractor> m_vExtractor; 00112 }; 00113 00114 COH_CLOSE_NAMESPACE3 00115 00116 #endif // COH_EXTRACTOR_PROCESSOR_HPP