Oracle® Fusion Middleware C++ API Reference for Oracle Coherence
12c (12.2.1.3.0)

E80355-01

coherence/util/extractor/CompositeUpdater.hpp

00001 /*
00002 * CompositeUpdater.hpp
00003 *
00004 * Copyright (c) 2000, 2017, 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_COMPOSITE_UPDATER_HPP
00017 #define COH_COMPOSITE_UPDATER_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/ValueExtractor.hpp"
00025 #include "coherence/util/ValueUpdater.hpp"
00026 
00027 COH_OPEN_NAMESPACE3(coherence,util,extractor)
00028 
00029 using coherence::io::pof::PortableObject;
00030 using coherence::io::pof::PofReader;
00031 using coherence::io::pof::PofWriter;
00032 
00033 
00034 /**
00035 * A ValueManipulator implementation based on an extractor-updater pair.
00036 *
00037 * @author djl 2008.04.09
00038 *
00039 * @see CompositeUpdater
00040 */
00041 class COH_EXPORT CompositeUpdater
00042     : public class_spec<CompositeUpdater,
00043         extends<Object>,
00044         implements<ValueUpdater, PortableObject> >
00045     {
00046     friend class factory<CompositeUpdater>;
00047 
00048     // ----- constructors ---------------------------------------------------
00049 
00050     protected:
00051         /**
00052         * Construct an empty CompositeUpdater
00053         * (necessary for the PortableObject interface).
00054         */
00055         CompositeUpdater();
00056 
00057         /**
00058         * Construct a CompositeUpdater for a specified method name sequence.
00059         *
00060         * For example: "getAddress. setZip" method name will indicate that the
00061         * "getAddress()" method should be used to extract an Address object,
00062         * which will then be used by the "setZip(String)" call.
00063         *
00064         * @param vsName  a dot-delimited sequence of N method names which results
00065         *                in a CompositeUpdater that is based on an chain of
00066         *                (N-1) ReflectionExtractor objects and a single
00067         *                ReflectionUpdater.
00068         */
00069         CompositeUpdater(String::View vsName);
00070 
00071         /**
00072         * Construct a CompositeUpdater based on the specified extractor and
00073         * updater.
00074         *
00075         * <b>Note:</b> the extractor and updater here are not symmetrical in
00076         * nature: the extractor is used to "drill-down" to the target object,
00077         * while the updater will operate on that extracted object.
00078         *
00079         * @param vExtractor  the ValueExtractor
00080         * @param vUpdater    the ValueUpdater
00081         */
00082         CompositeUpdater(ValueExtractor::View vExtractor,
00083                 ValueUpdater::View vUpdater);
00084 
00085 
00086    // ----- ValueUpdater interface ------------------------------------------
00087 
00088     public:
00089         /**
00090         * {@inheritDoc}
00091         */
00092         virtual void update(Object::Handle hTarget,
00093                 Object::Holder ohValue) const;
00094 
00095 
00096     // ----- PortableObject interface ---------------------------------------
00097 
00098     public:
00099         /**
00100         * {@inheritDoc}
00101         */
00102         virtual void readExternal(PofReader::Handle hIn);
00103 
00104         /**
00105         * {@inheritDoc}
00106         */
00107         virtual void writeExternal(PofWriter::Handle hOut) const;
00108 
00109 
00110     // ----- Object interface -----------------------------------------------
00111 
00112     public:
00113         /**
00114         * {@inheritDoc}
00115         */
00116         virtual TypedHandle<const String> toString() const;
00117 
00118 
00119     // ----- data member accessors ------------------------------------------
00120 
00121     public:
00122         /**
00123         * Retrieve the ValueExtractor part.
00124         *
00125         * @return the ValueExtractor
00126         */
00127         virtual ValueExtractor::View getExtractor() const;
00128 
00129         /**
00130         * Retrieve the ValueUpdator part.
00131         *
00132         * @return the ValueUpdater
00133         */
00134         virtual ValueUpdater::View getUpdater() const;
00135 
00136 
00137     // ----- data members ---------------------------------------------------
00138 
00139     protected:
00140         /**
00141         * The ValueExtractor part.
00142         */
00143         FinalView<ValueExtractor> f_vExtractor;
00144 
00145         /**
00146         * The ValueUpdaterr part.
00147         */
00148         FinalView<ValueUpdater> f_vUpdater;
00149     };
00150 
00151 COH_CLOSE_NAMESPACE3
00152 
00153 #endif // COH_COMPOSITE_UPDATER_HPP
Copyright © 2000, 2017, Oracle and/or its affiliates. All rights reserved.