package com.fasterxml.jackson.databind.util;

Helper class used for checking whether a property is visible in the active view
/** * Helper class used for checking whether a property is visible * in the active view */
public class ViewMatcher implements java.io.Serializable { private static final long serialVersionUID = 1L; protected final static ViewMatcher EMPTY = new ViewMatcher(); public boolean isVisibleForView(Class<?> activeView) { return false; } public static ViewMatcher construct(Class<?>[] views) { if (views == null) { return EMPTY; } switch (views.length) { case 0: return EMPTY; case 1: return new Single(views[0]); } return new Multi(views); } /* /********************************************************** /* Concrete sub-classes /********************************************************** */ private final static class Single extends ViewMatcher { private static final long serialVersionUID = 1L; private final Class<?> _view; public Single(Class<?> v) { _view = v; } @Override public boolean isVisibleForView(Class<?> activeView) { return (activeView == _view) || _view.isAssignableFrom(activeView); } } private final static class Multi extends ViewMatcher implements java.io.Serializable { private static final long serialVersionUID = 1L; private final Class<?>[] _views; public Multi(Class<?>[] v) { _views = v; } @Override public boolean isVisibleForView(Class<?> activeView) { for (int i = 0, len = _views.length; i < len; ++i) { Class<?> view = _views[i]; if ((activeView == view) || view.isAssignableFrom(activeView)) { return true; } } return false; } } }