/*
* Copyright 2015 uaiHebert
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* */
package com.uaihebert.uaimockserver.model;
import com.uaihebert.uaimockserver.constants.ValidatorConstants;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Class that will hold all the project configurations
*/
public final class UaiMockServerConfig {
private Integer port;
private Boolean fileLog;
private Boolean consoleLog;
private String host;
private String context;
private String defaultContentTypeResponse;
private List<UaiRoute> routeList;
private List<String> mappingRoutesFileList;
private UaiFile uaiFile;
public UaiMockServerConfig() {
}
public void postConstruct() {
for (UaiRoute uaiRoute : getRouteList()) {
uaiRoute.createId();
uaiRoute.setUaiFile(uaiFile);
configureRoutes(uaiRoute);
}
// the default GSON List implementation has no add method implemented
routeList = new ArrayList<UaiRoute>(routeList);
}
private void configureRoutes(final UaiRoute uaiRoute) {
uaiRoute.getResponse().configureContentType(defaultContentTypeResponse);
defineIfRequestHeaderUsingWildCard(uaiRoute);
defineIfRequestQueryParamUsingWildCard(uaiRoute);
}
private void defineIfRequestQueryParamUsingWildCard(final UaiRoute uaiRoute) {
for (UaiQueryParam uaiQueryParam : uaiRoute.getRequest().getAllQueryParam()) {
final boolean usingWildCard = uaiQueryParam.getValueList().contains(ValidatorConstants.VALID_WILD_CARD.text);
uaiQueryParam.setUsingWildCard(usingWildCard);
}
}
private void defineIfRequestHeaderUsingWildCard(final UaiRoute uaiRoute) {
for (UaiHeader uaiHeader : uaiRoute.getRequest().getAllHeadersList()) {
final boolean usingWildCard = uaiHeader.getValueList().contains(ValidatorConstants.VALID_WILD_CARD.text);
uaiHeader.setUsingWildCard(usingWildCard);
}
}
public void setUaiFile(final UaiFile uaiFile) {
this.uaiFile = uaiFile;
}
public Integer getPort() {
return port;
}
public Boolean isFileLog() {
return fileLog;
}
public Boolean isConsoleLog() {
return consoleLog;
}
public String getHost() {
return host;
}
public String getContext() {
return context;
}
public String getDefaultContentTypeResponse() {
return defaultContentTypeResponse;
}
public void setPort(final Integer port) {
this.port = port;
}
public void setFileLog(final Boolean fileLog) {
this.fileLog = fileLog;
}
public void setConsoleLog(final Boolean consoleLog) {
this.consoleLog = consoleLog;
}
public void setHost(final String host) {
this.host = host;
}
public void setContext(final String context) {
this.context = context;
}
public void setDefaultContentTypeResponse(final String defaultContentTypeResponse) {
this.defaultContentTypeResponse = defaultContentTypeResponse;
}
public List<UaiRoute> getRouteList() {
if (routeList == null) {
routeList = Collections.emptyList();
}
return routeList;
}
public List<String> getMappingRoutesFileList() {
if (mappingRoutesFileList == null) {
mappingRoutesFileList = Collections.emptyList();
}
return mappingRoutesFileList;
}
public UaiFile getUaiFile() {
return uaiFile;
}
}