org.springframework.util.MultiValueMap#getFirst ( )源码实例Demo

下面列出了org.springframework.util.MultiValueMap#getFirst ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test
public void cookieInitializer() {
	this.resolver.addCookieInitializer(builder -> builder.domain("example.org"));
	this.resolver.addCookieInitializer(builder -> builder.sameSite("Strict"));
	this.resolver.addCookieInitializer(builder -> builder.secure(false));

	MockServerHttpRequest request = MockServerHttpRequest.get("https://example.org/path").build();
	MockServerWebExchange exchange = MockServerWebExchange.from(request);
	this.resolver.setSessionId(exchange, "123");

	MultiValueMap<String, ResponseCookie> cookies = exchange.getResponse().getCookies();
	assertEquals(1, cookies.size());
	ResponseCookie cookie = cookies.getFirst(this.resolver.getCookieName());
	assertNotNull(cookie);
	assertEquals("SESSION=123; Path=/; Domain=example.org; HttpOnly; SameSite=Strict", cookie.toString());
}
 
protected final String getCallbackParam(ServerHttpRequest request) {
	String query = request.getURI().getQuery();
	MultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();
	String value = params.getFirst("c");
	if (StringUtils.isEmpty(value)) {
		return null;
	}
	try {
		String result = UriUtils.decode(value, "UTF-8");
		return (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);
	}
	catch (UnsupportedEncodingException ex) {
		// should never happen
		throw new SockJsException("Unable to decode callback query parameter", null, ex);
	}
}
 
@Test
public void resolveParts() {
	ServerHttpRequest request = generateMultipartRequest();
	ResolvableType elementType = forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
	MultiValueMap<String, Part> parts = this.reader.readMono(elementType, request, emptyMap()).block();
	assertEquals(2, parts.size());

	assertTrue(parts.containsKey("fooPart"));
	Part part = parts.getFirst("fooPart");
	assertTrue(part instanceof FilePart);
	assertEquals("fooPart", part.name());
	assertEquals("foo.txt", ((FilePart) part).filename());
	DataBuffer buffer = DataBufferUtils.join(part.content()).block();
	assertEquals(12, buffer.readableByteCount());
	byte[] byteContent = new byte[12];
	buffer.read(byteContent);
	assertEquals("Lorem Ipsum.", new String(byteContent));

	assertTrue(parts.containsKey("barPart"));
	part = parts.getFirst("barPart");
	assertTrue(part instanceof FormFieldPart);
	assertEquals("barPart", part.name());
	assertEquals("bar", ((FormFieldPart) part).value());
}
 
@Test // SPR-16545
public void transferTo() {
	ServerHttpRequest request = generateMultipartRequest();
	ResolvableType elementType = forClassWithGenerics(MultiValueMap.class, String.class, Part.class);
	MultiValueMap<String, Part> parts = this.reader.readMono(elementType, request, emptyMap()).block();

	assertNotNull(parts);
	FilePart part = (FilePart) parts.getFirst("fooPart");
	assertNotNull(part);

	File dest = new File(System.getProperty("java.io.tmpdir") + "/" + part.filename());
	part.transferTo(dest).block(Duration.ofSeconds(5));

	assertTrue(dest.exists());
	assertEquals(12, dest.length());
	assertTrue(dest.delete());
}
 
源代码5 项目: arthas   文件: TunnelSocketFrameHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
    if (evt instanceof HandshakeComplete) {
        HandshakeComplete handshake = (HandshakeComplete) evt;
        // http request uri
        String uri = handshake.requestUri();
        logger.info("websocket handshake complete, uri: {}", uri);

        MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(uri).build().getQueryParams();
        String method = parameters.getFirst("method");

        if ("connectArthas".equals(method)) { // form browser
            connectArthas(ctx, parameters);
        } else if ("agentRegister".equals(method)) { // form arthas agent, register
            agentRegister(ctx, uri);
        }
        if ("openTunnel".equals(method)) { // from arthas agent open tunnel
            String clientConnectionId = parameters.getFirst("clientConnectionId");
            openTunnel(ctx, clientConnectionId);
        }
    } else {
        ctx.fireUserEventTriggered(evt);
    }
}
 
源代码6 项目: flow-platform-x   文件: WebAuth.java
/**
 * Get user object from ws message header
 * @param headers
 * @return User object
 * @exception AuthenticationException if Token header is missing or invalid token
 */
public User validate(MessageHeaders headers) {
    MultiValueMap<String, String> map = headers.get(StompHeaderAccessor.NATIVE_HEADERS, MultiValueMap.class);
    if (Objects.isNull(map)) {
        throw new AuthenticationException("Invalid token");
    }

    String token = map.getFirst(HeaderToken);
    if (!StringHelper.hasValue(token)) {
        throw new AuthenticationException("Invalid token");
    }

    Optional<User> user = authService.get(token);
    if (!user.isPresent()) {
        throw new AuthenticationException("Invalid token");
    }

    return user.get();
}
 
源代码7 项目: sdk-rest   文件: RestFileManager.java
public void deleteTempResume(MultiValueMap<String, Object> multiValueMap) {
    // clean up file
    FileSystemResource fileSystemResource = (FileSystemResource) multiValueMap.getFirst(formFileName);

    File file = fileSystemResource.getFile();

    if (!file.delete()) {
        log.info("Unable to delete temp resume " + file.getAbsolutePath());
    }
}
 
@Test
public void setSessionId() {
	MockServerHttpRequest request = MockServerHttpRequest.get("https://example.org/path").build();
	MockServerWebExchange exchange = MockServerWebExchange.from(request);
	this.resolver.setSessionId(exchange, "123");

	MultiValueMap<String, ResponseCookie> cookies = exchange.getResponse().getCookies();
	assertEquals(1, cookies.size());
	ResponseCookie cookie = cookies.getFirst(this.resolver.getCookieName());
	assertNotNull(cookie);
	assertEquals("SESSION=123; Path=/; Secure; HttpOnly; SameSite=Lax", cookie.toString());
}
 
源代码9 项目: pinpoint   文件: LinkMap.java
public static LinkMap buildLinkMap(List<Node> nodeList, TraceState traceState, long collectorAcceptTime, ServiceTypeRegistryService serviceTypeRegistryService) {
    final MultiValueMap<LongPair, Node> spanToLinkMap = new LinkedMultiValueMap<>();

    // for performance & remove duplicate span
    final List<Node> duplicatedNodeList = new ArrayList<>();
    for (Node node : nodeList) {
        final SpanBo span = node.getSpanBo();
        final LongPair spanIdPairKey = new LongPair(span.getParentSpanId(), span.getSpanId());
        // check duplicated span
        Node firstNode = spanToLinkMap.getFirst(spanIdPairKey);
        if (firstNode == null) {
            spanToLinkMap.add(spanIdPairKey, node);
        } else {
            ServiceType serviceType = serviceTypeRegistryService.findServiceType(span.getServiceType());
            if (serviceType.isQueue() && firstNode.getSpanBo().getServiceType() == serviceType.getCode()) {
                spanToLinkMap.add(spanIdPairKey, node);
            } else {
                traceState.progress();
                // duplicated span, choose focus span
                if (span.getCollectorAcceptTime() == collectorAcceptTime) {
                    // replace value
                    spanToLinkMap.put(spanIdPairKey, Collections.singletonList(node));
                    duplicatedNodeList.add(node);
                    logger.warn("Duplicated span - choose focus {}", node);
                } else {
                    // add remove list
                    duplicatedNodeList.add(node);
                    logger.warn("Duplicated span - ignored second {}", node);
                }
            }
        }
    }

    // clean duplicated node
    nodeList.removeAll(duplicatedNodeList);
    return new LinkMap(spanToLinkMap, duplicatedNodeList);
}
 
源代码10 项目: proxylive   文件: StreamController.java
private boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws Exception {
    MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(ProxyLiveUtils.getURL(request)).build().getQueryParams();

    String token = parameters.getFirst("token");
    String username = parameters.getFirst("user");
    if(token!=null){
        return validateToken(token);
    }else{
        return validateUser(username,parameters.getFirst("pass"));
    }
}
 
/**
 * 校验验证码
 *
 * @param serverHttpRequest serverHttpRequest
 * @param loginType         loginType
 * @throws InvalidValidateCodeException
 */
private void checkCode(ServerHttpRequest serverHttpRequest, LoginTypeEnum loginType) throws InvalidValidateCodeException {
    MultiValueMap<String, String> params = serverHttpRequest.getQueryParams();
    // 验证码
    String code = params.getFirst("code");
    if (StrUtil.isBlank(code))
        throw new InvalidValidateCodeException("请输入验证码.");
    // 获取随机码
    String randomStr = params.getFirst("randomStr");
    // 随机数为空,则获取手机号
    if (StrUtil.isBlank(randomStr))
        randomStr = params.getFirst("mobile");
    String key = CommonConstant.DEFAULT_CODE_KEY + loginType.getType() + "@" + randomStr;
    // 验证码过期
    if (!redisTemplate.hasKey(key))
        throw new ValidateCodeExpiredException(GatewayConstant.EXPIRED_ERROR);
    Object codeObj = redisTemplate.opsForValue().get(key);
    if (codeObj == null)
        throw new ValidateCodeExpiredException(GatewayConstant.EXPIRED_ERROR);
    String saveCode = codeObj.toString();
    if (StrUtil.isBlank(saveCode)) {
        redisTemplate.delete(key);
        throw new ValidateCodeExpiredException(GatewayConstant.EXPIRED_ERROR);
    }
    if (!StrUtil.equals(saveCode, code)) {
        redisTemplate.delete(key);
        throw new InvalidValidateCodeException("验证码错误.");
    }
    redisTemplate.delete(key);
}
 
源代码12 项目: taskana   文件: AbstractPagingController.java
private long getPage(MultiValueMap<String, String> params) throws InvalidArgumentException {
  String param = params.getFirst(PAGING_PAGE);
  params.remove(PAGING_PAGE);
  try {
    return Long.parseLong(param != null ? param : "1");
  } catch (NumberFormatException e) {
    throw new InvalidArgumentException("page must be a integer value.", e.getCause());
  }
}
 
源代码13 项目: sdk-rest   文件: RestFileManager.java
public void deleteTempFile(MultiValueMap<String, Object> multiValueMap) {
    // clean up file
    FileSystemResource fileSystemResource = (FileSystemResource) multiValueMap.getFirst("file");

    String filePath = fileSystemResource.getPath();
    String newFolderPath = StringUtils.substringBeforeLast(filePath, "/");
    File newFolder = new File(newFolderPath);
    try {
        FileUtils.deleteDirectory(newFolder);
    } catch (IOException e) {
        log.info("Unable to delete temp file " + filePath);
    }

}
 
@Nullable
protected final String getCallbackParam(ServerHttpRequest request) {
	String query = request.getURI().getQuery();
	MultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();
	String value = params.getFirst("c");
	if (StringUtils.isEmpty(value)) {
		return null;
	}
	String result = UriUtils.decode(value, StandardCharsets.UTF_8);
	return (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);
}
 
@Test
public void setSessionId() {
	MockServerHttpRequest request = MockServerHttpRequest.get("https://example.org/path").build();
	MockServerWebExchange exchange = MockServerWebExchange.from(request);
	this.resolver.setSessionId(exchange, "123");

	MultiValueMap<String, ResponseCookie> cookies = exchange.getResponse().getCookies();
	assertEquals(1, cookies.size());
	ResponseCookie cookie = cookies.getFirst(this.resolver.getCookieName());
	assertNotNull(cookie);
	assertEquals("SESSION=123; Path=/; Secure; HttpOnly; SameSite=Lax", cookie.toString());
}
 
源代码16 项目: flowable-engine   文件: ApiModelResource.java
protected ModelRepresentation updateModel(Model model, MultiValueMap<String, String> values, boolean forceNewVersion) {

        String name = values.getFirst("name");
        String key = values.getFirst("key");
        String description = values.getFirst("description");
        String isNewVersionString = values.getFirst("newversion");
        String newVersionComment = null;

        ModelKeyRepresentation modelKeyInfo = modelService.validateModelKey(model, model.getModelType(), key);
        if (modelKeyInfo.isKeyAlreadyExists()) {
            throw new BadRequestException("Model with provided key already exists " + key);
        }

        boolean newVersion = false;
        if (forceNewVersion) {
            newVersion = true;
            newVersionComment = values.getFirst("comment");
        } else {
            if (isNewVersionString != null) {
                newVersion = "true".equals(isNewVersionString);
                newVersionComment = values.getFirst("comment");
            }
        }

        String json = values.getFirst("json_xml");

        try {
            model = modelService.saveModel(model.getId(), name, key, description, json, newVersion,
                    newVersionComment, SecurityUtils.getCurrentUserObject());
            return new ModelRepresentation(model);

        } catch (Exception e) {
            LOGGER.error("Error saving model {}", model.getId(), e);
            throw new BadRequestException("Process model could not be saved " + model.getId());
        }
    }
 
@Override
protected String[] readMessages(ServerHttpRequest request) throws IOException {
	SockJsMessageCodec messageCodec = getServiceConfig().getMessageCodec();
	MediaType contentType = request.getHeaders().getContentType();
	if (contentType != null && MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType)) {
		MultiValueMap<String, String> map = this.formConverter.read(null, request);
		String d = map.getFirst("d");
		return (StringUtils.hasText(d) ? messageCodec.decode(d) : null);
	}
	else {
		return messageCodec.decodeInputStream(request.getBody());
	}
}
 
源代码18 项目: flowable-engine   文件: ModelResource.java
protected ModelRepresentation updateModel(Model model, MultiValueMap<String, String> values, boolean forceNewVersion) {
     String name = values.getFirst("name");
     String key = values.getFirst("key").replaceAll(" ", "");
     String description = values.getFirst("description");
     String isNewVersionString = values.getFirst("newversion");
     String newVersionComment = null;

     ModelKeyRepresentation modelKeyInfo = modelService.validateModelKey(model, model.getModelType(), key);
     if (modelKeyInfo.isKeyAlreadyExists()) {
         throw new BadRequestException("Model with provided key already exists " + key);
     }

     boolean newVersion = false;
     if (forceNewVersion) {
         newVersion = true;
         newVersionComment = values.getFirst("comment");
     } else {
         if (isNewVersionString != null) {
             newVersion = "true".equals(isNewVersionString);
             newVersionComment = values.getFirst("comment");
         }
     }

     String json = values.getFirst("json_xml");

     try {
ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(json);

ObjectNode propertiesNode = (ObjectNode) editorJsonNode.get("properties");
String processId = key;
propertiesNode.put("process_id", processId);
propertiesNode.put("name", name);
if (StringUtils.isNotEmpty(description)) {
	propertiesNode.put("documentation", description);
}
editorJsonNode.set("properties", propertiesNode);
         model = modelService.saveModel(model.getId(), name, key, description, editorJsonNode.toString(), newVersion,
                 newVersionComment, SecurityUtils.getCurrentUserObject());
         return new ModelRepresentation(model);

     } catch (Exception e) {
         LOGGER.error("Error saving model {}", model.getId(), e);
         throw new BadRequestException("Process model could not be saved " + model.getId());
     }
 }
 
源代码19 项目: flowable-engine   文件: ModelResource.java
/**
 * POST /rest/models/{modelId}/editor/json -> save the JSON model
 */
@PostMapping(value = "/rest/models/{modelId}/editor/json")
public ModelRepresentation saveModel(@PathVariable String modelId, @RequestBody MultiValueMap<String, String> values) {

    // Validation: see if there was another update in the meantime
    long lastUpdated = -1L;
    String lastUpdatedString = values.getFirst("lastUpdated");
    if (lastUpdatedString == null) {
        throw new BadRequestException("Missing lastUpdated date");
    }
    try {
        Date readValue = objectMapper.getDeserializationConfig().getDateFormat().parse(lastUpdatedString);
        lastUpdated = readValue.getTime();
    } catch (ParseException e) {
        throw new BadRequestException("Invalid lastUpdated date: '" + lastUpdatedString + "'");
    }

    Model model = modelService.getModel(modelId);
    User currentUser = SecurityUtils.getCurrentUserObject();
    boolean currentUserIsOwner = model.getLastUpdatedBy().equals(currentUser.getId());
    String resolveAction = values.getFirst("conflictResolveAction");

    // If timestamps differ, there is a conflict or a conflict has been resolved by the user
    if (model.getLastUpdated().getTime() != lastUpdated) {

        if (RESOLVE_ACTION_SAVE_AS.equals(resolveAction)) {

            String saveAs = values.getFirst("saveAs");
            String json = values.getFirst("json_xml");
            return createNewModel(saveAs, model.getDescription(), model.getModelType(), json);

        } else if (RESOLVE_ACTION_OVERWRITE.equals(resolveAction)) {
            return updateModel(model, values, false);
        } else if (RESOLVE_ACTION_NEW_VERSION.equals(resolveAction)) {
            return updateModel(model, values, true);
        } else {

            // Exception case: the user is the owner and selected to create a new version
            String isNewVersionString = values.getFirst("newversion");
            if (currentUserIsOwner && "true".equals(isNewVersionString)) {
                return updateModel(model, values, true);
            } else {
                // Tried everything, this is really a conflict, return 409
                ConflictingRequestException exception = new ConflictingRequestException("Process model was updated in the meantime");
                exception.addCustomData("userFullName", model.getLastUpdatedBy());
                exception.addCustomData("newVersionAllowed", currentUserIsOwner);
                throw exception;
            }
        }

    } else {

        // Actual, regular, update
        return updateModel(model, values, false);

    }
}
 
源代码20 项目: taskana   文件: TaskHistoryEventController.java
@GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity<TaskHistoryEventListResource> getTaskHistoryEvents(
    @RequestParam MultiValueMap<String, String> params) throws InvalidArgumentException {
  if (LOGGER.isDebugEnabled()) {
    LOGGER.debug("Entry to getTaskHistoryEvents(params= {})", params);
  }

  HistoryQuery query = simpleHistoryService.createHistoryQuery();
  query = applySortingParams(query, params);
  applyFilterParams(query, params);

  PageMetadata pageMetadata = null;
  List<HistoryEventImpl> historyEvents;
  final String page = params.getFirst(PAGING_PAGE);
  final String pageSize = params.getFirst(PAGING_PAGE_SIZE);
  params.remove(PAGING_PAGE);
  params.remove(PAGING_PAGE_SIZE);
  validateNoInvalidParameterIsLeft(params);
  if (page != null && pageSize != null) {
    long totalElements = query.count();
    pageMetadata = initPageMetadata(pageSize, page, totalElements);
    historyEvents = query.listPage((int) pageMetadata.getNumber(), (int) pageMetadata.getSize());
  } else if (page == null && pageSize == null) {
    historyEvents = query.list();
  } else {
    throw new InvalidArgumentException("Paging information is incomplete.");
  }

  TaskHistoryEventListResourceAssembler assembler = new TaskHistoryEventListResourceAssembler();
  TaskHistoryEventListResource pagedResources =
      assembler.toResources(historyEvents, pageMetadata);

  if (LOGGER.isDebugEnabled()) {
    LOGGER.debug(
        "Exit from getTaskHistoryEvents(), returning {}",
        new ResponseEntity<>(pagedResources, HttpStatus.OK));
  }

  return new ResponseEntity<>(pagedResources, HttpStatus.OK);
}