![JAR search and dependency download from the Maven repository](/logo.png)
net.officefloor.web.value.retrieve.RootValueRetrieverImpl Maven / Gradle / Ivy
/*
* OfficeFloor - http://www.officefloor.net
* Copyright (C) 2005-2018 Daniel Sagenschneider
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package net.officefloor.web.value.retrieve;
import java.util.HashMap;
import java.util.Map;
import net.officefloor.server.http.HttpException;
/**
* {@link ValueRetriever} implementation.
*
* @author Daniel Sagenschneider
*/
public class RootValueRetrieverImpl implements ValueRetriever {
/**
* Mapping of the property name to the {@link RetrieverStruct}.
*/
private final Map propertyToRetriever = new HashMap();
/**
* Indicates if case insensitive.
*/
private final boolean isCaseInsensitive;
/**
* Initiate.
*
* @param properties
* {@link PropertyMetaData} instances.
* @param isCaseInsensitive
* Indicates if case insensitive.
*/
public RootValueRetrieverImpl(PropertyMetaData[] properties, boolean isCaseInsensitive) {
this(properties, isCaseInsensitive, new HashMap>());
}
/**
* Initiate.
*
* @param properties
* {@link PropertyMetaData} instances.
* @param isCaseInsensitive
* Indicates if case insensitive.
* @param valueRetrieverByMetaData
* {@link ValueRetriever} by its {@link PropertyMetaData}.
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
RootValueRetrieverImpl(PropertyMetaData[] properties, boolean isCaseInsensitive,
Map> valueRetrieverByMetaData) {
this.isCaseInsensitive = isCaseInsensitive;
// Load the property retriever
for (PropertyMetaData property : properties) {
// Obtain the property name
String propertyName = property.getPropertyName();
// Determine if already registered value retriever
ValueRetriever propertyRetriever = valueRetrieverByMetaData.get(property);
if (propertyRetriever == null) {
// Create the property retriever (registers itself)
propertyRetriever = new PropertyValueRetrieverImpl
© 2015 - 2025 Weber Informatics LLC | Privacy Policy