All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.eBus.messages.EFieldInfo Maven / Gradle / Ivy

/*
 * 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, write to the
 *
 * Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330,
 * Boston, MA
 * 02111-1307 USA
 *
 * The Initial Developer of the Original Code is Charles W. Rapp.
 * Portions created by Charles W. Rapp are
 * Copyright 2011, 2013. Charles W. Rapp
 * All Rights Reserved.
 */

package net.sf.eBus.messages;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * This class-level annotation is required for all classes
 * extending {@link EMessage EMessage} and {@link EField}. This
 * annotation contains the names of the serialized fields. The
 * field list defines the order in which fields are serialized
 * and de-serialized. The named fields are required to be both
 * public and final. The EField subclass also requires a
 * constructor with an argument list that matches the listed
 * fields both in order and data type.
 * 

* The reason for this annotation is due to the fact that * {@link java.lang.Class#getFields()} returns an array which * is neither sorted nor in any particular order. The annotation * defines a field order which is necessary for remote eBus * applications to successfully serialize and de-serialize * eBus messages. *

* For more information about message objects and their * requirements, see {@link EMessageObject}. * * @see EMessageObject * @see EMessage * * @author Charles Rapp */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface EFieldInfo { /** * Returns the field names. The order of the message fields * in this array is used to define field serialization, * de-serialization order, and constructor argument order. * @return the message field names. */ String[] fields(); } // end of annotation EFieldInfo





© 2015 - 2025 Weber Informatics LLC | Privacy Policy