Android Open Source - sms-smap-gateway Model Validator






From Project

Back to project page sms-smap-gateway.

License

The source code is released under:

GNU General Public License

If you think the Android project sms-smap-gateway listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.android.smap.api.models.validator;
/*  w w  w .  j av a  2 s .  c o m*/
import java.lang.reflect.Field;
import java.util.List;

import android.util.Log;

public class ModelValidator {

  private static final String  TAG  = ModelValidator.class.getSimpleName();

  /**
   * Validates a given model object. Attach @Required to any fields that
   * should not be null in your model class. Once you have a model object,
   * call this method to determine if any of those fields are null.
   * 
   * @param o
   *            The model object.
   * @return false if any @Required fields are null. true otherwise.
   */
  public static boolean isModelValid(Object o) {
    if (o == null) {
      return false;
    }

    Field[] fields = o.getClass().getFields();

    for (Field field : fields) {
      Required required = field.getAnnotation(Required.class);

      if (required != null) {
        if (!isRequiredFieldValid(o, field)) {
          return false;
        }
      }
    }

    return true;
  }

  private static boolean isRequiredFieldValid(Object parent, Field field) {
    try {
      Object required = field.get(parent);

      if (required == null) {
        Log.e(TAG, "null object found for field " + field.getName());
        return false;
      }

      if (required instanceof List) {
        List<?> list = (List<?>) required;

        for (Object listItem : list) {
          if (!isModelValid(listItem)) {
            return false;
          }
        }
      } else if (!isModelValid(required)) {
        return false;
      }
    }
    catch (IllegalArgumentException e) {
      Log.e(TAG, "Object not compatible with the Field", e);
      return false;
    }
    catch (IllegalAccessException e) {
      Log.e(TAG, "security risk : cannot access field", e);
      return false;
    }

    return true;
  }
}




Java Source Code List

com.android.smap.AppConfig.java
com.android.smap.GatewayApp.java
com.android.smap.PhoneStateWrapper.java
com.android.smap.activities.BaseActivity.java
com.android.smap.activities.FragmentWrapperActivity.java
com.android.smap.activities.MainActivity.java
com.android.smap.adapters.MenuDrawerAdapter.java
com.android.smap.api.ApiConstants.java
com.android.smap.api.models.Gojo.java
com.android.smap.api.models.Node.java
com.android.smap.api.models.SmapException.java
com.android.smap.api.models.Status.java
com.android.smap.api.models.validator.ModelValidator.java
com.android.smap.api.models.validator.Required.java
com.android.smap.api.requests.ApiRequest.java
com.android.smap.api.requests.GojoRequest.java
com.android.smap.api.requests.StatusRequest.java
com.android.smap.commonsware.wakefull.AlarmReceiver.java
com.android.smap.commonsware.wakefull.WakefulIntentService.java
com.android.smap.controllers.ControllerErrorListener.java
com.android.smap.controllers.ControllerError.java
com.android.smap.controllers.ControllerFactory.java
com.android.smap.controllers.ControllerListener.java
com.android.smap.controllers.Controller.java
com.android.smap.controllers.EmailController.java
com.android.smap.controllers.GojoController.java
com.android.smap.controllers.UIPagingController.java
com.android.smap.controllers.UIRequestController.java
com.android.smap.fragments.BaseFragment.java
com.android.smap.fragments.HomeFragment.java
com.android.smap.models.MenuDrawerItem.java
com.android.smap.models.TextMessage.java
com.android.smap.samuel.Samuel.java
com.android.smap.sms.CellularModem.java
com.android.smap.sms.GatewayService.java
com.android.smap.sms.MonitorService.java
com.android.smap.sms.ScheduleMonitoringListener.java
com.android.smap.sms.ServiceRebooter.java
com.android.smap.ui.ArrayVelocAdapter.java
com.android.smap.ui.OnErrorTouchedListener.java
com.android.smap.ui.Operation.java
com.android.smap.ui.VelocAdapter.java
com.android.smap.ui.ViewBinder.java
com.android.smap.ui.ViewQuery.java
com.android.smap.ui.views.AnimatedNetworkImageView.java
com.android.smap.ui.views.ErrorView.java
com.android.smap.ui.views.FontableTextView.java
com.android.smap.utils.BitmapLruCache.java
com.android.smap.utils.MWAPNUtils.java
com.android.smap.utils.MWAnimUtil.java
com.android.smap.utils.MWAssetsUtils.java
com.android.smap.utils.MWConnectionUtils.java
com.android.smap.utils.MWEmailUtils.java
com.android.smap.utils.MWUiUtils.java
com.android.smap.utils.PreferenceWrapper.java
com.android.smap.utils.Refresher.java
com.android.smap.utils.UriBuilder.java