org.apache.commons.lang3.StringUtils#splitByWholeSeparatorPreserveAllTokens ( )源码实例Demo

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

源代码1 项目: mithqtt   文件: Topics.java
/**
 * Validate the topic filter, add EMPTY and END, return as a List of levels
 *
 * @param topicFilter Topic Filter
 * @return List of levels
 */
public static List<String> sanitizeTopicFilter(String topicFilter) {
    if (StringUtils.isEmpty(topicFilter)) throw new IllegalArgumentException("Empty topic filer");
    if (!topicFilter.contains("+") && !topicFilter.contains("#"))
        throw new IllegalArgumentException("Topic filter does not contain wildcard");

    List<String> levels = new ArrayList<>();

    if (topicFilter.startsWith("/")) topicFilter = EMPTY + topicFilter;
    if (topicFilter.endsWith("/")) topicFilter = topicFilter + EMPTY;

    String[] tokens = StringUtils.splitByWholeSeparatorPreserveAllTokens(topicFilter, "/");
    for (int i = 0; i < tokens.length; i++) {
        if (tokens[i].contains("+") && !tokens[i].equals("+"))
            throw new IllegalArgumentException("Illegal topic filter: " + topicFilter);
        if (tokens[i].contains("#") && !tokens[i].equals("#"))
            throw new IllegalArgumentException("Illegal topic filter: " + topicFilter);
        if (tokens[i].equals("#") && !(i == tokens.length - 1 || (i == tokens.length - 2 && END.equals(tokens[i + 1]))))
            throw new IllegalArgumentException("Illegal topic filter: " + topicFilter);
        levels.add(StringUtils.isNotEmpty(tokens[i]) ? tokens[i] : EMPTY);
    }

    if (!topicFilter.endsWith(END)) levels.add(END);

    return levels;
}
 
源代码2 项目: FEBS-Cloud   文件: MenuController.java
@GetMapping("/{username}")
public FebsResponse getUserRouters(@NotBlank(message = "{required}") @PathVariable String username) {
    Map<String, Object> result = new HashMap<>(2);
    List<VueRouter<Menu>> userRouters = this.menuService.getUserRouters(username);
    String userPermissions = this.menuService.findUserPermissions(username);
    String[] permissionArray = new String[0];
    if (StringUtils.isNoneBlank(userPermissions)) {
        permissionArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(userPermissions, StringConstant.COMMA);
    }
    result.put("routes", userRouters);
    result.put("permissions", permissionArray);
    return new FebsResponse().data(result);
}
 
源代码3 项目: FEBS-Cloud   文件: UserServiceImpl.java
@Override
@Transactional(rollbackFor = Exception.class)
public void createUser(SystemUser user) {
    // 创建用户
    user.setCreateTime(new Date());
    user.setAvatar(SystemUser.DEFAULT_AVATAR);
    user.setPassword(passwordEncoder.encode(SystemUser.DEFAULT_PASSWORD));
    save(user);
    // 保存用户角色
    String[] roles = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getRoleId(), StringConstant.COMMA);
    setUserRoles(user, roles);
    // 保存用户数据权限关联关系
    String[] deptIds = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getDeptIds(), StringConstant.COMMA);
    setUserDataPermissions(user, deptIds);
}
 
源代码4 项目: FEBS-Cloud   文件: RoleServiceImpl.java
@Override
@Transactional(rollbackFor = Exception.class)
public void createRole(Role role) {
    role.setCreateTime(new Date());
    this.save(role);

    if (StringUtils.isNotBlank(role.getMenuIds())) {
        String[] menuIds = StringUtils.splitByWholeSeparatorPreserveAllTokens(role.getMenuIds(), StringConstant.COMMA);
        setRoleMenus(role, menuIds);
    }
}
 
源代码5 项目: gatk   文件: FuncotationMap.java
/** Create a FuncotationMap where all Funcotations will be TableFuncotations.  This is useful for parsing existing
 *   VCFs.
 * Only renders for a single allele.
 * See {@link FuncotatorUtils#extractFuncotatorKeysFromHeaderDescription(String)} for getting the funcotation keys.
 *
 * @param transcriptFieldName The field name to use for transcript IDs.  Use {@see NO_TRANSCRIPT_AVAILABLE_KEY} if unknown.
 *                            If not in the funcotation keys, then the Funcotation map will be created with one transcript ID, {@see NO_TRANSCRIPT_AVAILABLE_KEY}
 *                            Never {@code null}
 * @param funcotationKeys The ordered keys of the funcotation field.  Never {@code null}
 * @param funcotationAttributeForSingleAllele  The funcotation attribute from a VCF, split for a single Allele.  Never {@code null}
 * @param altAllele The alternate allele for the created funcotations.  Never {@code null}
 * @param datasourceName The datasource name to use for all of the created funcotatinos.  Never {@code null}
 * @return a funcotation map.  Note that no funcotations will be GencodeFuncotations.  Never {@code null}
 */
public static FuncotationMap createAsAllTableFuncotationsFromVcf(final String transcriptFieldName, final String[] funcotationKeys,
                                                                 final String funcotationAttributeForSingleAllele, final Allele altAllele,
                                                                 final String datasourceName) {
    Utils.nonNull(transcriptFieldName);
    Utils.nonNull(funcotationKeys);
    Utils.nonNull(funcotationAttributeForSingleAllele);
    Utils.nonNull(altAllele);
    Utils.nonNull(datasourceName);

    final FuncotationMap result = createEmpty();
    final String[] funcotationAttributeForSingleAlleleByTranscript = StringUtils.splitByWholeSeparator(funcotationAttributeForSingleAllele, VcfOutputRenderer.END_TRANSCRIPT_DELIMITER +
            VcfOutputRenderer.ALL_TRANSCRIPT_DELIMITER + VcfOutputRenderer.START_TRANSCRIPT_DELIMITER);

    for (final String funcotationAttribute : funcotationAttributeForSingleAlleleByTranscript) {
        final String[] values = StringUtils.splitByWholeSeparatorPreserveAllTokens(funcotationAttribute, VcfOutputRenderer.FIELD_DELIMITER);
        if (values[0].startsWith(VcfOutputRenderer.START_TRANSCRIPT_DELIMITER)) {
            values[0] = values[0].replace(VcfOutputRenderer.START_TRANSCRIPT_DELIMITER, "");
        }
        if (values[values.length - 1].endsWith(VcfOutputRenderer.END_TRANSCRIPT_DELIMITER)) {
            values[values.length - 1] = values[values.length - 1].replace(VcfOutputRenderer.END_TRANSCRIPT_DELIMITER, "");
        }
        if (values.length != funcotationKeys.length) {
            logger.error("Keys:  " + StringUtils.join(funcotationKeys, ", "));
            logger.error("Values:  " + StringUtils.join(values, ", "));
            throw new GATKException.ShouldNeverReachHereException("Cannot parse the funcotation attribute.  Num values: " + values.length + "   Num keys: " + funcotationKeys.length);
        }
        final Map<String, String> simpleNameValuePairs = IntStream.range(0, values.length).boxed().collect(Collectors
                .toMap(i -> funcotationKeys[i], i-> values[i]));

        final List<String> valuesAsList = Arrays.stream(funcotationKeys).map(simpleNameValuePairs::get).collect(Collectors.toList());
        result.add(simpleNameValuePairs.getOrDefault(transcriptFieldName, NO_TRANSCRIPT_AVAILABLE_KEY), TableFuncotation.create(Arrays.asList(funcotationKeys), valuesAsList, altAllele, datasourceName, null));
    }
    return result;
}
 
源代码6 项目: async-gamequery-lib   文件: AbstractRestClient.java
/**
 * <p>A Simply utility method for parsing Content-Type which contains parameters</p>
 *
 * @param contentType A {@link String} containing the Content-Type
 *
 * @return The parsed content-type {@link String} excluding the parameters
 */
private String parseContentType(String contentType) {
    if (!StringUtils.isEmpty(contentType) && contentType.contains(";")) {
        String[] types = StringUtils.splitByWholeSeparatorPreserveAllTokens(contentType, ";", 2);
        if (types != null && types.length > 1)
            return types[0].trim();
    }
    return contentType;
}
 
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteOauthClientDetails(String clientIds) {
    Object[] clientIdArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(clientIds, StringConstant.COMMA);
    LambdaQueryWrapper<OauthClientDetails> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.in(OauthClientDetails::getClientId, clientIdArray);
    boolean removed = this.remove(queryWrapper);
    if (removed) {
        log.info("删除ClientId为({})的Client", clientIds);
        Arrays.stream(clientIdArray).forEach(c -> this.redisClientDetailsService.removeRedisCache(String.valueOf(c)));

    }
}
 
源代码8 项目: FEBS-Security   文件: QQOAuth2Template.java
@Override
protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
    // access_token=FE04************************CCE2&expires_in=7776000&refresh_token=88E4************************BE14
    String result = this.getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);
    log.info("responseToken: {}", result);
    String[] params = StringUtils.splitByWholeSeparatorPreserveAllTokens(result, "&");

    String accessToken = StringUtils.substringAfterLast(params[0], "=");
    Long expiresIn = Long.valueOf(StringUtils.substringAfterLast(params[1], "="));
    String refreshToken = StringUtils.substringAfterLast(params[2], "=");
    return new AccessGrant(accessToken, null, refreshToken, expiresIn);
}
 
源代码9 项目: flink   文件: SqlFunctionUtils.java
/**
 * Split target string with custom separator and pick the index-th(start with 0) result.
 *
 * @param str       target string.
 * @param separator custom separator.
 * @param index     index of the result which you want.
 * @return the string at the index of split results.
 */
public static String splitIndex(String str, String separator, int index) {
	if (index < 0) {
		return null;
	}
	String[] values = StringUtils.splitByWholeSeparatorPreserveAllTokens(str, separator);
	if (index >= values.length) {
		return null;
	} else {
		return values[index];
	}
}
 
源代码10 项目: FEBS-Security   文件: SmsCodeFilter.java
@Override
public void afterPropertiesSet() throws ServletException {
    super.afterPropertiesSet();
    String[] configUrls = StringUtils.splitByWholeSeparatorPreserveAllTokens(securityProperties.getCode().getSms().getUrl(), ",");
    url.addAll(Arrays.asList(configUrls));
    url.add(securityProperties.getCode().getSms().getLoginProcessingUrl());
}
 
源代码11 项目: vscrawler   文件: SplitByWholeSeparator.java
@Override
protected String[] split(String str, String separatorChars, int max, boolean preserveAllTokens) {
    if (preserveAllTokens) {
        return StringUtils.splitByWholeSeparatorPreserveAllTokens(str, separatorChars, max);
    } else {
        return StringUtils.splitByWholeSeparator(str, separatorChars, max);
    }
}
 
源代码12 项目: cs-actions   文件: CollectionUtilities.java
/**
 * Splits the stringArray by the delimiter into an array of strings without ignoring the escaped delimiters
 *
 * @param stringArray the string to be split
 * @param delimiter   the delimiter by which to split the stringArray
 * @return an array of Strings
 */
@NotNull
public static String[] toArrayWithEscaped(@Nullable final String stringArray, @NotNull final String delimiter) {
    if (StringUtils.isEmpty(stringArray)) {
        return new String[0];
    }
    return StringUtils.splitByWholeSeparatorPreserveAllTokens(stringArray, delimiter);
}
 
源代码13 项目: cola   文件: QQOAuth2Template.java
@Override
protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
    String responseStr = getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);

    log.info("【QQOAuth2Template】获取accessToke的响应:responseStr={}" , responseStr);

    String[] items = StringUtils.splitByWholeSeparatorPreserveAllTokens(responseStr, "&");
    //http://wiki.connect.qq.com/使用authorization_code获取access_token
    //access_token=FE04************************CCE2&expires_in=7776000&refresh_token=88E4************************BE14
    String accessToken = StringUtils.substringAfterLast(items[0], "=");
    Long expiresIn = new Long(StringUtils.substringAfterLast(items[1], "="));
    String refreshToken = StringUtils.substringAfterLast(items[2], "=");

    return new AccessGrant(accessToken, null, refreshToken, expiresIn);
}
 
源代码14 项目: SpringAll   文件: GlobalExceptionHandler.java
/**
 * 统一处理请求参数校验(普通传参)
 *
 * @param e ConstraintViolationException
 * @return FebsResponse
 */
@ExceptionHandler(value = ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleConstraintViolationException(ConstraintViolationException e) {
    StringBuilder message = new StringBuilder();
    Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
    for (ConstraintViolation<?> violation : violations) {
        Path path = violation.getPropertyPath();
        String[] pathArr = StringUtils.splitByWholeSeparatorPreserveAllTokens(path.toString(), ".");
        message.append(pathArr[1]).append(violation.getMessage()).append(",");
    }
    message = new StringBuilder(message.substring(0, message.length() - 1));
    return message.toString();
}
 
源代码15 项目: pre   文件: QQOAuth2Template.java
@Override
protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
    String responseStr = getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);
    log.info("获取accessToke的响应:"+responseStr);

    String[] items = StringUtils.splitByWholeSeparatorPreserveAllTokens(responseStr, "&");

    String accessToken = StringUtils.substringAfterLast(items[0], "=");
    Long expiresIn = new Long(StringUtils.substringAfterLast(items[1], "="));
    String refreshToken = StringUtils.substringAfterLast(items[2], "=");

    return new AccessGrant(accessToken, null, refreshToken, expiresIn);
}
 
源代码16 项目: FEBS-Security   文件: FebsSecurityConfig.java
@Override
protected void configure(HttpSecurity http) throws Exception {

    String[] anonResourcesUrl = StringUtils.splitByWholeSeparatorPreserveAllTokens(febsSecurityProperties.getAnonResourcesUrl(),",");

    ImageCodeFilter imageCodeFilter = new ImageCodeFilter();
    imageCodeFilter.setAuthenticationFailureHandler(febsAuthenticationFailureHandler);
    imageCodeFilter.setSecurityProperties(febsSecurityProperties);
    imageCodeFilter.afterPropertiesSet();

    SmsCodeFilter smsCodeFilter = new SmsCodeFilter();
    smsCodeFilter.setAuthenticationFailureHandler(febsAuthenticationFailureHandler);
    smsCodeFilter.setSecurityProperties(febsSecurityProperties);
    smsCodeFilter.setSessionRegistry(sessionRegistry());
    smsCodeFilter.afterPropertiesSet();

    http.exceptionHandling().accessDeniedHandler(accessDeniedHandler()) // 权限不足处理器
         .and()
            .addFilterBefore(smsCodeFilter, UsernamePasswordAuthenticationFilter.class) // 短信验证码校验
            .addFilterBefore(imageCodeFilter, UsernamePasswordAuthenticationFilter.class) // 添加图形证码校验过滤器
            .formLogin() // 表单方式
            .loginPage(febsSecurityProperties.getLoginUrl()) // 未认证跳转 URL
            .loginProcessingUrl(febsSecurityProperties.getCode().getImage().getLoginProcessingUrl()) // 处理登录认证 URL
            .successHandler(febsAuthenticationSucessHandler) // 处理登录成功
            .failureHandler(febsAuthenticationFailureHandler) // 处理登录失败
        .and()
            .rememberMe() // 添加记住我功能
            .tokenRepository(persistentTokenRepository()) // 配置 token 持久化仓库
            .tokenValiditySeconds(febsSecurityProperties.getRememberMeTimeout()) // rememberMe 过期时间,单为秒
            .userDetailsService(febsUserDetailService) // 处理自动登录逻辑
        .and()
            .sessionManagement() // 配置 session管理器
            .invalidSessionStrategy(invalidSessionStrategy()) // 处理 session失效
            .maximumSessions(febsSecurityProperties.getSession().getMaximumSessions()) // 最大并发登录数量
            .expiredSessionStrategy(new FebsExpiredSessionStrategy()) // 处理并发登录被踢出
            .sessionRegistry(sessionRegistry()) // 配置 session注册中心
        .and()
        .and()
            .logout() // 配置登出
            .addLogoutHandler(logoutHandler()) // 配置登出处理器
            .logoutUrl(febsSecurityProperties.getLogoutUrl()) // 处理登出 url
            .logoutSuccessUrl("/") // 登出后跳转到 /
            .deleteCookies("JSESSIONID") // 删除 JSESSIONID
        .and()
            .authorizeRequests() // 授权配置
            .antMatchers(anonResourcesUrl).permitAll() // 免认证静态资源路径
            .antMatchers(
                    febsSecurityProperties.getLoginUrl(), // 登录路径
                    FebsConstant.FEBS_REGIST_URL, // 用户注册 url
                    febsSecurityProperties.getCode().getImage().getCreateUrl(), // 创建图片验证码路径
                    febsSecurityProperties.getCode().getSms().getCreateUrl(), // 创建短信验证码路径
                    febsSecurityProperties.getSocial().getSocialRedirectUrl(), // 重定向到社交账号注册(绑定)页面路径
                    febsSecurityProperties.getSocial().getSocialBindUrl(), // 社交账号绑定 URL
                    febsSecurityProperties.getSocial().getSocialRegistUrl() // 注册并绑定社交账号 URL
            ).permitAll() // 配置免认证路径
            .anyRequest()  // 所有请求
            .authenticated() // 都需要认证
        .and()
            .csrf().disable()
            .apply(febsSmsCodeAuthenticationSecurityConfig) // 添加短信验证码认证流程
        .and()
            .apply(febsSocialSecurityConfig); // social 配置
}
 
源代码17 项目: FEBS-Cloud   文件: BlackListServiceImpl.java
@Override
public Flux<BlackList> delete(String ids) {
    String[] idArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(ids, StringConstant.COMMA);
    return blackListMapper.deleteByIdIn(Arrays.asList(idArray))
            .doOnNext(routeEnhanceCacheService::removeBlackList);
}
 
源代码18 项目: FEBS-Cloud   文件: RateLimitRuleServiceImpl.java
@Override
public Flux<RateLimitRule> delete(String ids) {
    String[] idArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(ids, StringConstant.COMMA);
    return rateLimitRuleMapper.deleteByIdIn(Arrays.asList(idArray))
            .doOnNext(routeEnhanceCacheService::removeRateLimitRule);
}
 
源代码19 项目: FEBS-Cloud   文件: BlockLogServiceImpl.java
@Override
public Flux<BlockLog> delete(String ids) {
    String[] idArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(ids, StringConstant.COMMA);
    return blockLogMapper.deleteByIdIn(Arrays.asList(idArray));
}
 
源代码20 项目: ghidra   文件: GhidraProtocolConnector.java
/**
 * Parse item path name from URL and establish initial values for folderPath and
 * folderItemName.
 * @return original item path from URL or null if not specified
 * @throws MalformedURLException if URL is invalid
 */
protected String parseItemPath() throws MalformedURLException {

	String path = url.getPath();

	if (repositoryName == null) {
		return null; // presumed server-only URL
	}

	// strip off repository name from path
	path = path.substring(repositoryName.length() + 1);
	if (path.length() <= 1) {
		// root path specified
		folderPath = FileSystem.SEPARATOR;
		return folderPath; // repository URL, root folder
	}

	// Handles server repository URL case  ghidra://<host>:<port>/<repository-name>[/<folder-path>]/[<folderItemName>]

	boolean isFolder = path.endsWith(FileSystem.SEPARATOR);
	folderPath = "";
	String pathToSplit = isFolder ? path.substring(0, path.length() - 1) : path;
	String[] pieces =
		StringUtils.splitByWholeSeparatorPreserveAllTokens(pathToSplit, FileSystem.SEPARATOR);
	if (pieces.length == 0) {
		throw new MalformedURLException("invalid repository path specification");
	}
	for (int i = 1; i < pieces.length; i++) {
		String p = pieces[i];
		if (p.length() == 0) {
			throw new MalformedURLException("invalid repository path specification");
		}
		if (!isFolder && i == (pieces.length - 1)) {
			folderItemName = p;
		}
		else {
			folderPath = folderPath + FileSystem.SEPARATOR + p;
		}
	}
	if (folderPath.length() == 0) {
		folderPath = FileSystem.SEPARATOR;
	}

	return path;
}
 
 同类方法