Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
*
* Copyright 2018 Virtualan Contributors (https://virtualan.io)
*
* 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 io.virtualan.controller;
import com.cedarsoftware.util.io.JsonObject;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.ApiParam;
import io.virtualan.autoconfig.ApplicationContextProvider;
import io.virtualan.core.InvalidMockResponseException;
import io.virtualan.core.VirtualParameterizedUtil;
import io.virtualan.core.VirtualServiceInfo;
import io.virtualan.core.VirtualServiceUtil;
import io.virtualan.core.model.*;
import io.virtualan.core.util.Converter;
import io.virtualan.core.util.OpenApiGeneratorUtil;
import io.virtualan.core.util.VirtualanClassLoader;
import io.virtualan.core.util.VirtualanConfiguration;
import io.virtualan.core.util.rule.RuleEvaluator;
import io.virtualan.core.util.rule.ScriptExecutor;
import io.virtualan.requestbody.RequestBodyTypes;
import io.virtualan.service.VirtualService;
import java.beans.IntrospectionException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.invoke.MethodHandles;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* This is a entry point to to record mock data in the Virtualan.
*
* Virtualan-UI and Virtualan-OpenAPI would interact through this web services.
*
*
* @author Elan Thangamani
*/
@RestController("virtualServiceController")
@Slf4j
public class VirtualServiceController {
/**
* The constant VS_REQUEST_BODY_MISMATCH.
*/
public static final String VS_REQUEST_BODY_MISMATCH = "VS_REQUEST_BODY_MISMATCH";
@Autowired
private static ConfigurableApplicationContext context;
/**
* The Locale.
*/
Locale locale = LocaleContextHolder.getLocale();
@Autowired
private RuleEvaluator ruleEvaluator;
@Autowired
private ScriptExecutor scriptExecutor;
@Autowired
private Converter converter;
@Autowired
private VirtualService virtualService;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private MessageSource messageSource;
@Autowired
private VirtualServiceUtil virtualServiceUtil;
@Value("${virtualan.application.name:Mock Service}")
private String applicationName;
@Autowired
private ApplicationContextProvider applicationContext;
private File yamlFolder = VirtualanConfiguration.getYamlPath();
@Autowired
private OpenApiGeneratorUtil openApiGeneratorUtil;
@Autowired
private VirtualParameterizedUtil virtualParameterizedUtil;
@Value("${virtualan.script.enabled:false}")
private boolean scriptEnabled;
private ObjectMapper getObjectMapper() {
objectMapper.findAndRegisterModules();
objectMapper.setSerializationInclusion(Include.NON_NULL);
return objectMapper.enable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE,
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
);
}
/**
* Gets virtual service.
*
* @return the virtual service
*/
public VirtualService getVirtualService() {
return virtualService;
}
/**
* Sets virtual service.
*
* @param virtualService the virtual service
*/
public void setVirtualService(VirtualService virtualService) {
this.virtualService = virtualService;
}
/**
* Gets virtual service info.
*
* @return the virtual service info
*/
public VirtualServiceInfo getVirtualServiceInfo() {
return virtualServiceUtil.getVirtualServiceInfo();
}
/**
* Application name string.
*
* @return the string
*/
@GetMapping(value = "/virtualservices/app-name")
public String applicationName() {
return "{\"appName\":\"" + applicationName + "\"}";
}
/**
* List all mock load request map.
*
* @return the map
* @throws InstantiationException the instantiation exception
* @throws IllegalAccessException the illegal access exception
* @throws ClassNotFoundException the class not found exception
* @throws IOException the io exception
*/
@GetMapping(value = "/virtualservices/load")
public Map> listAllMockLoadRequest()
throws InstantiationException, IllegalAccessException, ClassNotFoundException,
IOException {
return VirtualanConfiguration.getVirtualServiceRequestMap();
}
/**
* List all mock load requests response entity.
*
* @return the response entity
*/
@GetMapping(value = "/virtualservices")
public ResponseEntity> listAllMockLoadRequests() {
final List mockRestLoadRequests = virtualService.findAllMockRequests();
if (mockRestLoadRequests.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
List response =
mockRestLoadRequests.stream().map(x -> converter.convertAsJson(x))
.collect(Collectors.toList());
return new ResponseEntity<>(response, HttpStatus.OK);
}
/**
* Gets mock load request.
*
* @param id the id
* @return the mock load request
*/
@GetMapping(value = "/virtualservices/{id}",
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity getMockLoadRequest(@PathVariable("id") long id) {
VirtualServiceRequest mockLoadRequest = virtualService.findById(id);
if (mockLoadRequest == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
mockLoadRequest = converter.convertAsJson(mockLoadRequest);
return new ResponseEntity<>(mockLoadRequest, HttpStatus.OK);
}
/**
* Create mock request response entity.
*
* @return the response entity
*/
@PostMapping(value = "/virtualservices/apis")
public ResponseEntity