| /* |
| * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation from Oracle TopLink |
| package org.eclipse.persistence.mappings; |
| |
| import java.io.*; |
| |
| import org.eclipse.persistence.core.mappings.CoreAttributeAccessor; |
| import org.eclipse.persistence.exceptions.*; |
| import org.eclipse.persistence.internal.helper.ClassConstants; |
| |
| /** |
| * <p><b>Purpose</b>: This provides an abstract class for setting and retrieving |
| * the attribute value for the mapping from an object. |
| * It can be used in advanced situations if the attribute |
| * requires advanced conversion of the mapping value, or a real attribute does not exist. |
| * |
| * @author James |
| * @since OracleAS TopLink 10<i>g</i> (10.0.3) |
| */ |
| public abstract class AttributeAccessor implements CoreAttributeAccessor, Cloneable, Serializable { |
| |
| /** Stores the name of the attribute */ |
| protected String attributeName; |
| protected boolean isWriteOnly = false; |
| protected boolean isReadOnly = false; |
| |
| /** |
| * Default constructor. |
| */ |
| protected AttributeAccessor() { |
| } |
| |
| /** |
| * INTERNAL: |
| * Clones itself. |
| */ |
| @Override |
| public Object clone() { |
| try { |
| return super.clone(); |
| } catch (CloneNotSupportedException e) { |
| throw new InternalError(); |
| } |
| } |
| |
| /** |
| * INTERNAL: |
| * Return the attribute name. |
| */ |
| @Override |
| public String getAttributeName() { |
| return attributeName; |
| } |
| |
| /** |
| * INTERNAL: |
| * Set the attribute name. |
| */ |
| public void setAttributeName(String attributeName) { |
| this.attributeName = attributeName; |
| } |
| |
| /** |
| * Return the class type of the attribute. |
| */ |
| @Override |
| public Class<?> getAttributeClass() { |
| return ClassConstants.OBJECT; |
| } |
| |
| /** |
| * Allow any initialization to be performed with the descriptor class. |
| */ |
| @Override |
| public void initializeAttributes(Class<?> descriptorClass) throws DescriptorException { |
| if (getAttributeName() == null) { |
| throw DescriptorException.attributeNameNotSpecified(); |
| } |
| } |
| |
| /** |
| * Returns true if this attribute accessor has been initialized and now stores a reference to the |
| * class's attribute. An attribute accessor can become uninitialized on serialization. |
| */ |
| public boolean isInitialized(){ |
| return true; |
| } |
| |
| @Override |
| public boolean isInstanceVariableAttributeAccessor() { |
| return false; |
| } |
| |
| public boolean isMapValueAttributeAccessor(){ |
| return false; |
| } |
| |
| @Override |
| public boolean isMethodAttributeAccessor() { |
| return false; |
| } |
| |
| public boolean isValuesAccessor() { |
| return false; |
| } |
| |
| public boolean isVirtualAttributeAccessor(){ |
| return false; |
| } |
| |
| /** |
| * INTERNAL: |
| */ |
| @Override |
| public boolean isWriteOnly() { |
| return isWriteOnly; |
| } |
| |
| /** |
| * INTERNAL: |
| */ |
| @Override |
| public void setIsWriteOnly(boolean aBoolean) { |
| this.isWriteOnly = aBoolean; |
| } |
| |
| /** |
| * INTERNAL |
| */ |
| public boolean isReadOnly() { |
| return isReadOnly; |
| } |
| /** |
| * INTERNAL |
| */ |
| @Override |
| public void setIsReadOnly(boolean aBoolean) { |
| this.isReadOnly = aBoolean; |
| } |
| |
| /** |
| * Return the attribute value from the object. |
| */ |
| @Override |
| public abstract Object getAttributeValueFromObject(Object object) throws DescriptorException; |
| |
| /** |
| * Set the attribute value into the object. |
| */ |
| @Override |
| public abstract void setAttributeValueInObject(Object object, Object value) throws DescriptorException; |
| } |