List of usage examples for java.util.regex Matcher toMatchResult
public MatchResult toMatchResult()
From source file:com.clustercontrol.hub.session.FluentdTransferFactory.java
/** * ?????????/* w ww .j av a 2 s. c o m*/ * */ @Override public Transfer createTansfer(final TransferInfo info, final PropertyBinder binder) throws TransferException { // HTTP ????? TransferDestProp urlProp = null; TransferDestProp connectTimeoutProp = null; TransferDestProp requestTimeoutProp = null; for (TransferDestProp prop : info.getDestProps()) { switch (prop.getName()) { case prop_url: urlProp = prop; break; case prop_connect_timeout: connectTimeoutProp = prop; break; case prop_request_timeout: requestTimeoutProp = prop; break; default: logger.warn(String.format("createTansfer() : unknown property(%s)", prop.getValue())); break; } } if (urlProp == null || urlProp.getValue() == null) throw new TransferException(String.format("createTansfer() : Value of \"%s\" must be set.", prop_url)); if (!urlPattern.matcher(urlProp.getValue()).matches()) throw new TransferException( String.format("createTansfer() : invalid url format. url=%s", urlProp.getValue())); final String urlStr = urlProp.getValue(); Integer timeout; try { timeout = Integer.valueOf(connectTimeoutProp.getValue()); } catch (NumberFormatException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format("createTansfer() : can't regognize connectTimeout(%s) as number.", connectTimeoutProp.getValue())); } catch (NullPointerException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format( "createTansfer() : connectTimeout is null, then use default value as connectTimeout(%s).", timeout)); } final Integer connectTimeout = timeout; try { timeout = Integer.valueOf(requestTimeoutProp.getValue()); } catch (NumberFormatException e) { timeout = DEFAULT_REQUEST_TIMEOUT; logger.warn(String.format("createTansfer() : can't regognize requestTimeout(%s) as number.", requestTimeoutProp.getValue())); } catch (NullPointerException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format( "createTansfer() : requestTimeout is null, then use default value as requestTimeout(%s).", timeout)); } final Integer requestTimeout = timeout; // ?? return new Transfer() { private static final int BUFF_SIZE = 1024 * 1024; private static final int BODY_MAX_SIZE = 5 * BUFF_SIZE; private CloseableHttpClient client = null; /* * ?? * */ @Override public TransferNumericData transferNumerics(Iterable<TransferNumericData> numerics, TrasferCallback<TransferNumericData> callback) throws TransferException { TransferNumericData lastPosition = null; for (TransferNumericData numeric : numerics) { ObjectNode root = JsonNodeFactory.instance.objectNode(); root.put("item_name", numeric.key.getItemName()); root.put("display_name", numeric.key.getDisplayName()); root.put("monitor_id", numeric.key.getMonitorId()); root.put("facility_id", numeric.key.getFacilityid()); root.put("time", numeric.data.getTime()); root.put("value", numeric.data.getValue()); root.put("position", numeric.data.getPosition()); String url = binder.bind(numeric.key, numeric.data, urlStr); String data = root.toString(); try { send(url, data); lastPosition = numeric; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(numeric.key.getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public TransferStringData transferStrings(Iterable<TransferStringData> strings, TrasferCallback<TransferStringData> callback) throws TransferException { TransferStringData lastPosition = null; for (TransferStringData string : strings) { ObjectNode root = JsonNodeFactory.instance.objectNode(); root.put("target_name", string.key.getTargetName()); root.put("monitor_id", string.key.getMonitorId()); root.put("facility_id", string.key.getFacilityId()); root.put("log_format_id", string.data.getLogformatId()); root.put("time", string.data.getTime()); root.put("source", string.data.getValue()); for (CollectDataTag t : string.data.getTagList()) { root.put(t.getKey(), t.getValue()); } root.put("position", string.data.getDataId()); String url = binder.bind(string.key, string.data, urlStr); String data = root.toString(); try { send(url, data); lastPosition = string; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(string.key.getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public JobSessionEntity transferJobs(Iterable<JobSessionEntity> sessions, TrasferCallback<JobSessionEntity> callback) throws TransferException { JobSessionEntity lastPosition = null; for (JobSessionEntity session : sessions) { ObjectNode sessionNode = JsonNodeFactory.instance.objectNode(); sessionNode.put("ssession_id", session.getSessionId()); sessionNode.put("job_id", session.getJobId()); sessionNode.put("jobunit_id", session.getJobunitId()); sessionNode.put("schedule_date", session.getScheduleDate()); sessionNode.put("position", session.getPosition()); ArrayNode jobArray = sessionNode.putArray("jobs"); for (JobSessionJobEntity job : session.getJobSessionJobEntities()) { ObjectNode jobNode = jobArray.addObject(); jobNode.put("job_id", job.getId().getJobId()); jobNode.put("jobunit_id", job.getId().getJobunitId()); if (job.getScopeText() != null) jobNode.put("scope_text", job.getScopeText()); if (job.getStatus() != null) jobNode.put("status", job.getStatus()); if (job.getStartDate() != null) jobNode.put("start_date", job.getStartDate()); if (job.getEndDate() != null) jobNode.put("end_date", job.getEndDate()); if (job.getEndValue() != null) jobNode.put("end_value", job.getEndValue()); if (job.getEndStatus() != null) jobNode.put("end_status", job.getEndStatus()); if (job.getResult() != null) jobNode.put("result", job.getResult()); if (job.getJobInfoEntity() != null) jobNode.put("job_type", job.getJobInfoEntity().getJobType()); if (!job.getJobSessionNodeEntities().isEmpty()) { ArrayNode nodeArray = jobNode.putArray("nodes"); for (JobSessionNodeEntity node : job.getJobSessionNodeEntities()) { ObjectNode nodeNode = nodeArray.addObject(); nodeNode.put("facility_id", node.getId().getFacilityId()); nodeNode.put("node_name", node.getNodeName()); nodeNode.put("status", node.getStatus()); nodeNode.put("start_date", node.getStartDate()); nodeNode.put("end_date", node.getEndDate()); nodeNode.put("end_value", node.getEndValue()); nodeNode.put("message", node.getMessage()); nodeNode.put("result", node.getResult()); nodeNode.put("start_date", node.getStartDate()); nodeNode.put("startup_time", node.getStartupTime()); nodeNode.put("instance_id", node.getInstanceId()); } } } String url = binder.bind(session, urlStr); String data = sessionNode.toString(); try { send(url, data); lastPosition = session; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_session(session.getSessionId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public EventLogEntity transferEvents(Iterable<EventLogEntity> events, TrasferCallback<EventLogEntity> callback) throws TransferException { EventLogEntity lastPosition = null; for (EventLogEntity event : events) { ObjectNode eventNode = JsonNodeFactory.instance.objectNode(); eventNode.put("monitor_id", event.getId().getMonitorId()); eventNode.put("monitor_detail_id", event.getId().getMonitorDetailId()); eventNode.put("plugin_id", event.getId().getPluginId()); eventNode.put("generation_date", event.getGenerationDate()); eventNode.put("facility_id", event.getId().getFacilityId()); eventNode.put("scope_text", event.getScopeText()); eventNode.put("application", event.getApplication()); eventNode.put("message", event.getMessage()); eventNode.put("message_org", event.getMessageOrg()); eventNode.put("priority", event.getPriority()); eventNode.put("confirm_flg", event.getConfirmFlg()); eventNode.put("confirm_date", event.getCommentDate()); eventNode.put("confirm_user", event.getCommentUser()); eventNode.put("duplication_count", event.getDuplicationCount()); eventNode.put("output_date", event.getId().getOutputDate()); eventNode.put("inhibited_flg", event.getInhibitedFlg()); eventNode.put("comment_date", event.getCommentDate()); eventNode.put("comment_user", event.getCommentUser()); eventNode.put("comment", event.getComment()); eventNode.put("position", event.getPosition()); String url = binder.bind(event, urlStr); String data = eventNode.toString(); try { send(url, data); lastPosition = event; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(event.getId().getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ID ?? * */ @Override public String getDestTypeId() { return transfer_id; } /* * Fluentd ?????? HttpClient ?? * ????????? * */ private CloseableHttpClient getHttpClient() { if (client == null) { client = createHttpClient(); } return client; } /* * Fluentd ?????? HttpClient ?? * */ private CloseableHttpClient createHttpClient() { String proxyHost = null; Integer proxyPort = null; CredentialsProvider cledentialProvider = null; List<String> ignoreHostList = new ArrayList<>(); try { // Hinemos ??? proxyHost = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.host", null); Long proxyPortLong = HinemosPropertyUtil.getHinemosPropertyNum("hub.fluentd.proxy.port", null); if (proxyPortLong != null) proxyPort = proxyPortLong.intValue(); if (proxyPort == null) proxyPort = 80; String proxyUser = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.user", null); String proxyPassword = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.password", null); if (proxyHost != null && proxyPort != null) { logger.debug( "initializing fluentd proxy : proxyHost = " + proxyHost + ", port = " + proxyPort); String ignoreHostStr = HinemosPropertyUtil .getHinemosPropertyStr("hub.fluentd.proxy.ignorehosts", null); if (ignoreHostStr != null) { ignoreHostList = Arrays.asList(ignoreHostStr.split(",")); } if (proxyUser != null && proxyPassword != null) { cledentialProvider = new BasicCredentialsProvider(); cledentialProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(proxyUser, proxyPassword)); } } } catch (Throwable t) { logger.warn("invalid proxy configuration.", t); proxyHost = null; proxyPort = null; cledentialProvider = null; ignoreHostList = Collections.emptyList(); } List<Header> headers = new ArrayList<>(); HttpClientBuilder builder = HttpClients.custom().setDefaultCredentialsProvider(cledentialProvider) .setDefaultHeaders(headers); Builder requestBuilder = RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT); if (connectTimeout != null) requestBuilder.setConnectTimeout(connectTimeout); if (connectTimeout != null) requestBuilder.setSocketTimeout(requestTimeout); builder.setDefaultRequestConfig(requestBuilder.build()); if (proxyHost != null) { Matcher m = urlPattern.matcher(urlStr); if (!m.matches()) throw new InternalError(String.format("invalid url(%s)", urlStr)); m.toMatchResult(); boolean ignore = false; String host = m.group("host"); for (String ignoreHost : ignoreHostList) { if (ignoreHost.equals(host)) { ignore = true; break; } } if (!ignore) { HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http"); builder.setProxy(proxy); } } if (keepAlive) { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE)); } else { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE)); } return builder.build(); } /* * ?? URL ??? * */ private void send(String url, String data) throws Exception { // URL ? Matcher m = urlPattern.matcher(url); if (!m.matches()) throw new InternalError(String.format("invalid url(%s)", urlStr)); m.toMatchResult(); String path = m.group("path"); if (path != null && !path.isEmpty()) { String host = m.group("host"); String port = m.group("port"); String[] paths = path.split("/"); for (int i = 1; i < paths.length; ++i) { paths[i] = URLEncoder.encode(paths[i], "utf-8"); } url = "http://" + host + (port == null || port.isEmpty() ? "" : (":" + port)); for (int i = 1; i < paths.length; ++i) { url += "/" + paths[i]; } } HttpPost requestPost = new HttpPost(url); requestPost.addHeader("content-type", "application/json"); requestPost.setEntity(new StringEntity(data, StandardCharsets.UTF_8)); logger.debug(String.format("send() : request start. url=%s", url)); int count = 0; int maxTryCount = PropertyConstants.hub_transfer_max_try_count.number(); while (count < maxTryCount) { try { long start = HinemosTime.currentTimeMillis(); try (CloseableHttpResponse response = getHttpClient().execute(requestPost)) { long responseTime = HinemosTime.currentTimeMillis() - start; logger.debug(String.format("send() : url=%s, responseTime=%d", url, responseTime)); int statusCode = response.getStatusLine().getStatusCode(); logger.debug(String.format("send() : url=%s, code=%d", url, statusCode)); if (statusCode == HttpStatus.SC_OK) { logger.debug(String.format("send() : url=%s, success=%s", url, response.getStatusLine().toString())); if (logger.isDebugEnabled()) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try (InputStream in = response.getEntity().getContent()) { byte[] buffer = new byte[BUFF_SIZE]; while (out.size() < BODY_MAX_SIZE) { int len = in.read(buffer); if (len < 0) { break; } out.write(buffer, 0, len); } } String res = new String(out.toByteArray(), "UTF-8"); if (!res.isEmpty()) logger.debug(String.format("send() : url=%s, response=%s", url, res)); } } else { throw new RuntimeException( String.format("http status code isn't 200. code=%d, message=%s", statusCode, response.getStatusLine().toString())); } } logger.debug(String.format("send() : success. url=%s, count=%d", url, count)); break; } catch (RuntimeException e) { ++count; if (count < maxTryCount) { logger.debug(e.getMessage(), e); logger.debug(String.format( "send() : fail to send, and then wait to retry. url=%s, count=%d", url, count)); try { Thread.sleep(1000); } catch (InterruptedException e1) { logger.debug(e.getMessage()); } } else { throw new TransferException( String.format("send() : fail to send. url=%s, retry count=%d, error=\"%s\"", url, count, e.getMessage())); } } } } @Override public void close() throws Exception { if (client != null) client.close(); } private void internalError_session(String sessionId, String data, Exception error, String url) { internalError_session(sessionId, data, error.getMessage() == null || error.getMessage().isEmpty() ? error.getClass().getSimpleName() : error.getMessage(), url); } private void internalError_session(String sessionId, String data, String error, String url) { AplLogger.put(PriorityConstant.TYPE_WARNING, HinemosModuleConstant.HUB_TRANSFER, MessageConstant.MESSAGE_HUB_DATA_TRANSFER_FAILED, new String[] { info.getTransferId() }, String.format("error=%s%ntransferId=%s%ndestTypeId=%s%nsessionId=%s%ndata=%s%nurl=%s", error, info.getTransferId(), info.getDestTypeId(), sessionId, data, url)); } private void internalError_monitor(String sessionId, String data, Exception error, String url) { internalError_monitor(sessionId, data, error.getMessage() == null || error.getMessage().isEmpty() ? error.getClass().getSimpleName() : error.getMessage(), url); } private void internalError_monitor(String monitorId, String data, String error, String url) { AplLogger.put(PriorityConstant.TYPE_WARNING, HinemosModuleConstant.HUB_TRANSFER, MessageConstant.MESSAGE_HUB_DATA_TRANSFER_FAILED, new String[] { info.getTransferId() }, String.format("error=%s%ntransferId=%s%ndestTypeId=%s%nmonitorId=%s%ndata=%s%nurl=%s", error, info.getTransferId(), info.getDestTypeId(), monitorId, data, url)); } }; }
From source file:pl.otros.logview.parser.log4j.Log4jPatternMultilineLogParser.java
@Override public LogData parse(String line, ParsingContext parsingContext) throws ParseException { LogData logData = null;//w ww . j a va2 s . co m if (line.trim().equals("")) { parsingContext.getUnmatchedLog().append('\n'); parsingContext.getUnmatchedLog().append(line); return null; } Matcher eventMatcher = regexpPattern.matcher(line); Matcher exceptionMatcher = exceptionPattern.matcher(line); HashMap<String, Object> logEventParsingProperties = (HashMap<String, Object>) parsingContext .getCustomConextProperties().get(PROPERTY_LOG_EVENT_PROPERTIES); if (eventMatcher.matches()) { // build an event from the previous match (held in current map) LoggingEvent event = buildEvent(parsingContext); if (event != null && passesExpression(event)) { // doPost(event); logData = Log4jUtil.translateLog4j(event); } // Allow for optional capture fields. // This is used by rePattern now, but traditional patterns could be // enhanced to support optional fields too. for (Map.Entry<String, Object> entry : (Set<Map.Entry<String, Object>>) processEvent( eventMatcher.toMatchResult()).entrySet()) if (entry.getValue() != null) // We never write null key logEventParsingProperties.put(entry.getKey(), entry.getValue()); } else if (exceptionMatcher.matches()) { // an exception line if (parsingContext.getUnmatchedLog().length() > 0) parsingContext.getUnmatchedLog().append('\n'); parsingContext.getUnmatchedLog().append(line); } else { // neither...either post an event with the line or append as // additional lines // if this was a logging event with multiple lines, each line // will show up as its own event instead of being // appended as multiple lines on the same event.. // choice is to have each non-matching line show up as its own // line, or append them all to a previous event if (appendNonMatches) { // hold on to the previous time, so we can do our best to // preserve time-based ordering if the event is a non-match String lastTime = (String) logEventParsingProperties.get(TIMESTAMP); // build an event from the previous match (held in current // map) if (logEventParsingProperties.size() > 0) { LoggingEvent event = buildEvent(parsingContext); if (event != null) { if (passesExpression(event)) { logData = Log4jUtil.translateLog4j(event); } } } if (lastTime != null) { logEventParsingProperties.put(TIMESTAMP, lastTime); } logEventParsingProperties.put(MESSAGE, line); } else { if (parsingContext.getUnmatchedLog().length() > 0) { parsingContext.getUnmatchedLog().append('\n'); } parsingContext.getUnmatchedLog().append(line.trim()); } } return logData; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
/** * Substitute with i18n properties/*from w ww.ja v a2s . com*/ * * @param displayText * @return */ public String formatDisplayStringWithI18n(String displayText) { if (StringUtils.trimToNull(displayText) == null) return displayText; try { String formatted = displayText; Matcher m = indexFieldPatternMatcher.matcher(displayText); int currentPos = 0; while (m.find(currentPos)) { String matchedIndexTerm = m.group(0).replaceAll(":", ""); MatchResult mr = m.toMatchResult(); //if the matched term represents a layer lookup the title in the layers service Matcher lm = layersPattern.matcher(matchedIndexTerm); String i18n = ""; if (lm.matches()) { i18n = layersService.getName(matchedIndexTerm); if (i18n == null) { i18n = matchedIndexTerm; } } else { i18n = messageSource.getMessage("facet." + matchedIndexTerm, null, matchedIndexTerm, null); } //System.out.println("i18n for " + matchedIndexTerm + " = " + i18n); if (!matchedIndexTerm.equals(i18n)) { int nextWhitespace = displayText.substring(mr.end()).indexOf(" "); String extractedValue = null; if (nextWhitespace > 0) { extractedValue = displayText.substring(mr.end(), mr.end() + nextWhitespace); } else { //reached the end of the query extractedValue = displayText.substring(mr.end()); } String formattedExtractedValue = SearchUtils.stripEscapedQuotes(extractedValue); String i18nForValue = messageSource.getMessage(matchedIndexTerm + "." + formattedExtractedValue, null, "", null); if (i18nForValue.length() == 0) i18nForValue = messageSource.getMessage(formattedExtractedValue, null, "", null); if (i18nForValue.length() > 0) { formatted = formatted.replaceAll(matchedIndexTerm + ":" + extractedValue, i18n + ":" + i18nForValue); } else { //just replace the matched index term formatted = formatted.replaceAll(matchedIndexTerm, i18n); } } currentPos = mr.end(); } return formatted; } catch (Exception e) { logger.debug(e.getMessage(), e); return displayText; } }