http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrAuditLogData.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrAuditLogData.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrAuditLogData.java deleted file mode 100644 index 9de05db..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrAuditLogData.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.solr.model; - -import org.apache.ambari.logsearch.model.response.AuditLogData; -import org.apache.solr.client.solrj.beans.Field; - -import java.util.Date; -import java.util.List; - -import static org.apache.ambari.logsearch.solr.SolrConstants.AuditLogConstants.*; - -public class SolrAuditLogData extends SolrCommonLogData implements AuditLogData { - - @Field(AUDIT_LOG_TYPE) - private String logType; - - @Field(AUDIT_POLICY) - private String policy; - - @Field(AUDIT_ACCESS) - private String access; - - @Field(AUDIT_ACTION) - private String action; - - @Field(AUDIT_AGENT) - private String agent; - - @Field(AUDIT_AGENT_HOST) - private String agentHost; - - @Field(AUDIT_CLIENT_IP) - private String clientIp; - - @Field(AUDIT_CLIENT_TYPE) - private String clientType; - - @Field(AUDIT_REQEST_CONTEXT) - private String requestContext; - - @Field(AUDIT_ENFORCER) - private String enforcer; - - @Field(AUDIT_EVTTIME) - private Date eventTime; - - @Field(AUDIT_REASON) - private String reason; - - @Field(AUDIT_PROXY_USERS) - private List<String> proxyUsers; - - @Field(AUDIT_COMPONENT) - private String repo; - - @Field(AUDIT_REPO_TYPE) - private Integer repoType; - - @Field(AUDIT_REQEST_DATA) - private String requestData; - - @Field(AUDIT_REQUEST_USER) - private String requestUser; - - @Field(AUDIT_RESPONSE_TYPE) - private String responseType; - - @Field(AUDIT_RESOURCE) - private String resource; - - @Field(AUDIT_RESULT) - private Integer result; - - @Field(AUDIT_SESSION) - private String session; - - @Field(AUDIT_TAGS) - private List<String> tags; - - @Field(AUDIT_TAGS_STR) - private String tagsStr; - - @Field(AUDIT_TEXT) - private String text; - - @Override - public String getText() { - return text; - } - - @Override - public void setText(String text) { - this.text = text; - } - - @Override - public String getTagsStr() { - return tagsStr; - } - - @Override - public void setTagsStr(String tagsStr) { - this.tagsStr = tagsStr; - } - - @Override - public List<String> getTags() { - return tags; - } - - @Override - public void setTags(List<String> tags) { - this.tags = tags; - } - - @Override - public String getSession() { - return session; - } - - @Override - public void setSession(String session) { - this.session = session; - } - - @Override - public Integer getResult() { - return result; - } - - @Override - public void setResult(Integer result) { - this.result = result; - } - - @Override - public String getResource() { - return resource; - } - - @Override - public void setResource(String resource) { - this.resource = resource; - } - - @Override - public String getResponseType() { - return responseType; - } - - public void setResponseType(String responseType) { - this.responseType = responseType; - } - - @Override - public String getRequestUser() { - return requestUser; - } - - @Override - public void setRequestUser(String requestUser) { - this.requestUser = requestUser; - } - - @Override - public String getRequestData() { - return requestData; - } - - @Override - public void setRequestData(String requestData) { - this.requestData = requestData; - } - - @Override - public Integer getRepoType() { - return repoType; - } - - @Override - public void setRepoType(Integer repoType) { - this.repoType = repoType; - } - - @Override - public String getRepo() { - return repo; - } - - @Override - public void setRepo(String repo) { - this.repo = repo; - } - - @Override - public List<String> getProxyUsers() { - return proxyUsers; - } - - @Override - public void setProxyUsers(List<String> proxyUsers) { - this.proxyUsers = proxyUsers; - } - - @Override - public String getReason() { - return reason; - } - - @Override - public void setReason(String reason) { - this.reason = reason; - } - - @Override - public Date getEventTime() { - return eventTime; - } - - @Override - public void setEventTime(Date eventTime) { - this.eventTime = eventTime; - } - - @Override - public String getEnforcer() { - return enforcer; - } - - @Override - public void setEnforcer(String enforcer) { - this.enforcer = enforcer; - } - - @Override - public String getRequestContext() { - return requestContext; - } - - @Override - public void setRequestContext(String requestContext) { - this.requestContext = requestContext; - } - - @Override - public String getClientType() { - return clientType; - } - - @Override - public void setClientType(String clientType) { - this.clientType = clientType; - } - - @Override - public String getClientIp() { - return clientIp; - } - - @Override - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - @Override - public String getAgent() { - return agent; - } - - @Override - public void setAgent(String agent) { - this.agent = agent; - } - - @Override - public String getAgentHost() { - return agentHost; - } - - @Override - public void setAgentHost(String agentHost) { - this.agentHost = agentHost; - } - - @Override - public String getAction() { - return action; - } - - @Override - public void setAction(String action) { - this.action = action; - } - - @Override - public String getAccess() { - return access; - } - - @Override - public void setAccess(String access) { - this.access = access; - } - - @Override - public String getPolicy() { - return policy; - } - - @Override - public void setPolicy(String policy) { - this.policy = policy; - } - - @Override - public String getLogType() { - return logType; - } - - @Override - public void setLogType(String logType) { - this.logType = logType; - } -}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrCommonLogData.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrCommonLogData.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrCommonLogData.java deleted file mode 100644 index b5ce7ad..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrCommonLogData.java +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.solr.model; - -import org.apache.ambari.logsearch.model.response.CommonLogData; -import org.apache.solr.client.solrj.beans.Field; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import static org.apache.ambari.logsearch.solr.SolrConstants.CommonLogConstants.*; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.KEY_DYNAMIC_FIELDS; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.STORED_TOKEN_DYNAMIC_FIELDS; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.WS_DYNAMIC_FIELDS; - -public class SolrCommonLogData implements CommonLogData { - - @Field(ID) - private String id; - - @Field(BUNDLE_ID) - private String bundleId; - - @Field(CASE_ID) - private String caseId; - - @Field(CLUSTER) - private String cluster; - - @Field(SEQUENCE_ID) - private Long seqNum; - - @Field(LOG_MESSAGE) - private String logMessage; - - @Field(LOGFILE_LINE_NUMBER) - private Integer logFileLineNumber; - - @Field(EVENT_DURATION_MD5) - private Long eventDurationMs; - - @Field(FILE) - private String file; - - @Field(TYPE) - private String type; - - @Field(EVENT_COUNT) - private Long eventCount; - - @Field(EVENT_MD5) - private String eventMd5; - - @Field(MESSAGE_MD5) - private String messageMd5; - - @Field(TTL) - private String ttl; - - @Field(EXPIRE_AT) - private Date expire; - - @Field(VERSION) - private Long version; - - @Field(ROUTER_FIELD) - private Integer routerField; - - @Field(STORED_TOKEN_DYNAMIC_FIELDS) - private Map<String, Object> stdDynamicFields; - - @Field(KEY_DYNAMIC_FIELDS) - private Map<String, Object> keyDynamicFields; - - @Field(WS_DYNAMIC_FIELDS) - private Map<String, Object> wsDynamicFields; - - @Override - public String getId() { - return this.id; - } - - @Override - public void setId(String id) { - this.id = id; - } - - @Override - public String getCaseId() { - return this.caseId; - } - - @Override - public void setCaseId(String caseId) { - this.caseId = caseId; - } - - @Override - public String getLogMessage() { - return this.logMessage; - } - - @Override - public String getBundleId() { - return bundleId; - } - - @Override - public void setBundleId(String bundleId) { - this.bundleId = bundleId; - } - - @Override - public Integer getLogFileLineNumber() { - return logFileLineNumber; - } - - @Override - public void setLogFileLineNumber(Integer logFileLineNumber) { - this.logFileLineNumber = logFileLineNumber; - } - - @Override - public void setLogMessage(String logMessage) { - this.logMessage = logMessage; - } - - @Override - public Long getEventDurationMs() { - return eventDurationMs; - } - - @Override - public void setEventDurationMs(Long eventDurationMs) { - this.eventDurationMs = eventDurationMs; - } - - @Override - public String getFile() { - return file; - } - - @Override - public void setFile(String file) { - this.file = file; - } - - @Override - public Long getSeqNum() { - return seqNum; - } - - @Override - public void setSeqNum(Long seqNum) { - this.seqNum = seqNum; - } - - @Override - public String getMessageMd5() { - return messageMd5; - } - - @Override - public void setMessageMd5(String messageMd5) { - this.messageMd5 = messageMd5; - } - - @Override - public String getEventMd5() { - return eventMd5; - } - - @Override - public void setEventMd5(String eventMd5) { - this.eventMd5 = eventMd5; - } - - @Override - public String getCluster() { - return cluster; - } - - @Override - public void setCluster(String cluster) { - this.cluster = cluster; - } - - @Override - public Long getEventCount() { - return eventCount; - } - - @Override - public void setEventCount(Long eventCount) { - this.eventCount = eventCount; - } - - @Override - public String getTtl() { - return this.ttl; - } - - @Override - public void setTtl(String ttl) { - this.ttl = ttl; - } - - @Override - public Date getExpire() { - return expire; - } - - @Override - public void setExpire(Date expire) { - this.expire = expire; - } - - @Override - public Long getVersion() { - return version; - } - - @Override - public void setVersion(Long version) { - this.version = version; - } - - @Override - public Integer getRouterField() { - return this.routerField; - } - - @Override - public void setRouterField(Integer routerField) { - this.routerField = routerField; - } - - @Override - public String getType() { - return type; - } - - @Override - public void setType(String type) { - this.type = type; - } - - @Override - public Map<String, Object> getAllDynamicFields() { - Map<String, Object> allDynamicFields = new HashMap<>(); - if (stdDynamicFields != null) { - allDynamicFields.putAll(stdDynamicFields); - } - if (keyDynamicFields != null) { - allDynamicFields.putAll(keyDynamicFields); - } - if (wsDynamicFields != null) { - allDynamicFields.putAll(wsDynamicFields); - } - - return allDynamicFields; - } - - public void setStdDynamicFields(Map<String, Object> stdDynamicFields) { - this.stdDynamicFields = stdDynamicFields; - } - - public void setKeyDynamicFields(Map<String, Object> keyDynamicFields) { - this.keyDynamicFields = keyDynamicFields; - } - - public void setWsDynamicFields(Map<String, Object> wsDynamicFields) { - this.wsDynamicFields = wsDynamicFields; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrComponentTypeLogData.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrComponentTypeLogData.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrComponentTypeLogData.java deleted file mode 100644 index 1a63700..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrComponentTypeLogData.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.solr.model; - -import org.apache.ambari.logsearch.model.response.ComponentTypeLogData; -import org.apache.solr.client.solrj.beans.Field; - -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.COMPONENT; - -public class SolrComponentTypeLogData implements ComponentTypeLogData { - - @Field(COMPONENT) - private String type; - - @Override - public String getType() { - return this.type; - } - - @Override - public void setType(String type) { - this.type = type; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrHostLogData.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrHostLogData.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrHostLogData.java deleted file mode 100644 index 8391815..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrHostLogData.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.solr.model; - -import org.apache.ambari.logsearch.model.response.HostLogData; -import org.apache.solr.client.solrj.beans.Field; - -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.HOST; - -public class SolrHostLogData implements HostLogData { - - @Field(HOST) - private String host; - - @Override - public String getHost() { - return host; - } - - @Override - public void setHost(String host) { - this.host = host; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrServiceLogData.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrServiceLogData.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrServiceLogData.java deleted file mode 100644 index c6fdba3..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/model/SolrServiceLogData.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.solr.model; - -import org.apache.ambari.logsearch.model.response.ServiceLogData; -import org.apache.solr.client.solrj.beans.Field; - -import java.util.Date; - -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.*; - -public class SolrServiceLogData extends SolrCommonLogData implements ServiceLogData { - - @Field(LEVEL) - private String level; - - @Field(LINE_NUMBER) - private Integer lineNumber; - - @Field(LOGTIME) - private Date logTime; - - @Field(COMPONENT) - private String type; - - @Field(IP) - private String ip; - - @Field(PATH) - private String path; - - @Field(HOST) - private String host; - - @Override - public String getPath() { - return path; - } - - @Override - public void setPath(String path) { - this.path = path; - } - - @Override - public String getIp() { - return ip; - } - - @Override - public void setIp(String ip) { - this.ip = ip; - } - - @Override - public String getType() { - return type; - } - - @Override - public void setType(String type) { - this.type = type; - } - - @Override - public String getHost() { - return host; - } - - @Override - public void setHost(String host) { - this.host = host; - } - - @Override - public Date getLogTime() { - return logTime; - } - - @Override - public void setLogTime(Date logTime) { - this.logTime = logTime; - } - - @Override - public Integer getLineNumber() { - return lineNumber; - } - - @Override - public void setLineNumber(Integer lineNumber) { - this.lineNumber = lineNumber; - } - - @Override - public String getLevel() { - return level; - } - - @Override - public void setLevel(String level) { - this.level = level; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java deleted file mode 100644 index 1cfe469..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.security.SecureRandom; - -import org.springframework.security.authentication.encoding.Md5PasswordEncoder; - -public class CommonUtil { - private CommonUtil() { - throw new UnsupportedOperationException(); - } - - private static SecureRandom secureRandom = new SecureRandom(); - private static int counter = 0; - - public static String genGUI() { - return System.currentTimeMillis() + "_" + secureRandom.nextInt(1000) + "_" + counter++; - } - - private static final Md5PasswordEncoder md5Encoder = new Md5PasswordEncoder(); - public static String encryptPassword(String username, String password) { - return md5Encoder.encodePassword(password, username); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DateUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DateUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DateUtil.java deleted file mode 100644 index 9b4f553..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DateUtil.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; -import java.util.concurrent.TimeUnit; - -import org.apache.ambari.logsearch.common.LogSearchConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; -import org.apache.log4j.Logger; - -public class DateUtil { - - private static final Logger logger = Logger.getLogger(DateUtil.class); - - private DateUtil() { - throw new UnsupportedOperationException(); - } - - public static String addOffsetToDate(String date, Long utcOffset, String dateFormat) { - if (StringUtils.isBlank(date)) { - logger.debug("input date is empty or null."); - return null; - } - if (utcOffset == null) { - logger.debug("Utc offset is null, Return input date without adding offset."); - return date; - } - if (StringUtils.isBlank(dateFormat)) { - logger.debug("dateFormat is null or empty, Return input date without adding offset."); - return date; - } - String retDate = ""; - try { - String modifiedDate = date; - if (date.contains(".")) { - modifiedDate = date.replace(".", ","); - } - SimpleDateFormat formatter = new SimpleDateFormat(dateFormat, Locale.ENGLISH); - Date startDate = formatter.parse(modifiedDate); - long toWithOffset = startDate.getTime() + TimeUnit.MINUTES.toMillis(utcOffset); - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(toWithOffset); - retDate = formatter.format(calendar.getTime()); - } catch (Exception e) { - logger.error(e); - } - return retDate; - } - - public static String getCurrentDateInString() { - DateFormat df = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss", Locale.ENGLISH); - Date today = Calendar.getInstance().getTime(); - return df.format(today); - } - - public static Date getTodayFromDate() { - return DateUtils.truncate(new Date(), Calendar.DATE); - } - - public static String convertGivenDateFormatToSolrDateFormat(Date date) throws ParseException { - String time = date.toString(); - SimpleDateFormat input = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); - SimpleDateFormat output = new SimpleDateFormat(LogSearchConstants.SOLR_DATE_FORMAT_PREFIX_Z, Locale.ENGLISH); - Date d = input.parse(time); - TimeZone timeZone = TimeZone.getTimeZone("UTC"); - output.setTimeZone(timeZone); - - return output.format(d); - } - - public static String convertDateWithMillisecondsToSolrDate(Date date) { - if (date == null) { - return ""; - } - SimpleDateFormat formatter = new SimpleDateFormat(LogSearchConstants.SOLR_DATE_FORMAT_PREFIX_Z, Locale.ENGLISH); - TimeZone timeZone = TimeZone.getTimeZone("GMT"); - formatter.setTimeZone(timeZone); - - return formatter.format(date); - } - - public static String convertSolrDateToNormalDateFormat(long d, long utcOffset) throws ParseException { - Date date = new Date(d); - SimpleDateFormat formatter = new SimpleDateFormat(LogSearchConstants.SOLR_DATE_FORMAT, Locale.ENGLISH); - TimeZone timeZone = TimeZone.getTimeZone("GMT"); - formatter.setTimeZone(timeZone); - String stringDate = formatter.format(date); - return addOffsetToDate(stringDate, Long.parseLong("" + utcOffset), LogSearchConstants.SOLR_DATE_FORMAT); - - } - - public static Date convertStringToSolrDate(String dateStr) { - try { - SimpleDateFormat formatter = new SimpleDateFormat(LogSearchConstants.SOLR_DATE_FORMAT_PREFIX_Z); - return formatter.parse(dateStr); - } catch (Exception e){ - throw new RuntimeException("Cannot parse date from request", e.getCause()); - } - } - - public static boolean isDateValid(String value) { - if (StringUtils.isBlank(value)) { - return false; - } - Date date = null; - try { - SimpleDateFormat sdf = new SimpleDateFormat(LogSearchConstants.SOLR_DATE_FORMAT_PREFIX_Z); - date = sdf.parse(value); - if (!value.equals(sdf.format(date))) { - date = null; - } - } catch (Exception ex) { - // do nothing - } - return date != null; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java deleted file mode 100644 index debe131..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/DownloadUtil.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Splitter; -import org.apache.ambari.logsearch.common.LogSearchConstants; -import org.apache.ambari.logsearch.model.request.impl.ServiceLogExportRequest; -import org.apache.ambari.logsearch.model.response.BarGraphData; -import org.apache.ambari.logsearch.model.response.BarGraphDataListResponse; -import org.apache.ambari.logsearch.model.response.NameValueData; -import org.apache.ambari.logsearch.model.response.TemplateData; -import org.apache.commons.lang.StringUtils; -import org.apache.solr.common.SolrDocument; -import org.apache.solr.common.SolrDocumentList; - -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LINE_NUMBER; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOGTIME; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOG_MESSAGE; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LEVEL; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.HOST; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.COMPONENT; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.LOGGER_NAME; -import static org.apache.ambari.logsearch.solr.SolrConstants.ServiceLogConstants.THREAD_NAME; -import static org.apache.ambari.logsearch.solr.SolrConstants.CommonLogConstants.FILE; - - -public class DownloadUtil { - - private DownloadUtil() { - throw new UnsupportedOperationException(); - } - - public static void fillModelsForLogFile(SolrDocumentList docList, Map<String, Object> models, ServiceLogExportRequest request, - String format, String from, String to) { - long numLogs = docList.getNumFound(); - List<String> hosts = new ArrayList<>(); - List<String> components = new ArrayList<>(); - List<String> levels = new ArrayList<>(); - List<TemplateData> logData = new ArrayList<>(); - for (SolrDocument doc : docList) { - if (doc != null) { - String hostname = (String) doc.getFieldValue(HOST); - String comp = (String) doc.getFieldValue(COMPONENT); - String level = (String) doc.getFieldValue(LEVEL); - - if (!hosts.contains(hostname)) { - hosts.add(hostname); - } - - if (!components.contains(comp)) { - components.add(comp); - } - - if (!levels.contains(level)) { - levels.add(level); - } - - StringBuffer textToWrite = new StringBuffer(); - - if (doc.getFieldValue(LOGTIME) != null) { - textToWrite.append(doc.getFieldValue(LOGTIME).toString() + " "); - } - if (doc.getFieldValue(LEVEL) != null) { - textToWrite.append(doc.getFieldValue(LEVEL).toString()).append(" "); - } - if (doc.getFieldValue(THREAD_NAME) != null) { - textToWrite.append(doc.getFieldValue(THREAD_NAME).toString().trim()).append(" "); - } - if (doc.getFieldValue(LOGGER_NAME) != null) { - textToWrite.append(doc.getFieldValue(LOGGER_NAME).toString().trim()).append(" "); - } - if (doc.getFieldValue(FILE) != null && doc.getFieldValue(LINE_NUMBER) != null) { - textToWrite - .append(doc.getFieldValue(FILE).toString()) - .append(":") - .append(doc.getFieldValue(LINE_NUMBER).toString()) - .append(" "); - } - if (doc.getFieldValue(LOG_MESSAGE) != null) { - textToWrite.append("- ") - .append(doc.getFieldValue(LOG_MESSAGE).toString()); - } - logData.add(new TemplateData((textToWrite.toString()))); - } - } - models.put("numberOfLogs", numLogs); - models.put("logs", logData); - models.put("hosts", "[ " + StringUtils.join(hosts, " ; ") + " ]"); - models.put("components", "[ " + StringUtils.join(components, " ; ") + " ]"); - models.put("format", format); - models.put("from", from); - models.put("levels", StringUtils.join(levels, ", ")); - models.put("to", to); - String includeString = request.getiMessage(); - if (StringUtils.isBlank(includeString)) { - includeString = "\"\""; - } else { - List<String> include = Splitter.on(request.getiMessage()).splitToList(LogSearchConstants.I_E_SEPRATOR); - includeString = "\"" + StringUtils.join(include, "\", \"") + "\""; - } - models.put("iString", includeString); - - String excludeString = request.geteMessage(); - if (StringUtils.isBlank(excludeString)) { - excludeString = "\"\""; - } else { - List<String> exclude = Splitter.on(request.getiMessage()).splitToList(LogSearchConstants.I_E_SEPRATOR); - excludeString = "\"" + StringUtils.join(exclude, "\", \"") + "\""; - } - models.put("eString", excludeString); - } - - public static void fillUserResourcesModel(Map<String, Object> models, BarGraphDataListResponse vBarUserDataList, BarGraphDataListResponse vBarResourceDataList) { - List<TemplateData> usersDataList = new ArrayList<>(); - List<TemplateData> resourceDataList = new ArrayList<>(); - Collection<BarGraphData> tableUserData = vBarUserDataList.getGraphData(); - for (BarGraphData graphData : tableUserData) { - String userName = graphData.getName().length() > 45 ? graphData.getName().substring(0, 45) : graphData.getName(); - Collection<NameValueData> vnameValueList = graphData.getDataCount(); - usersDataList.add(new TemplateData(appendNameValueData(addBlank(userName), vnameValueList))); - } - Collection<BarGraphData> tableResourceData = vBarResourceDataList.getGraphData(); - for (BarGraphData graphData : tableResourceData) { - String resourceName = graphData.getName().length() > 45 ? graphData.getName().substring(0, 45) : graphData.getName(); - Collection<NameValueData> vnameValueList = graphData.getDataCount(); - resourceDataList.add(new TemplateData(appendNameValueData(addBlank(resourceName), vnameValueList))); - } - models.put("users", usersDataList); - models.put("resources", resourceDataList); - models.put("usersSummary", vBarUserDataList.getGraphData().size()); - models.put("resourcesSummary", vBarResourceDataList.getGraphData().size()); - } - - private static String appendNameValueData(String data, Collection<NameValueData> vnameValueList) { - int count = 0; - String blank = ""; - for (NameValueData vNameValue : vnameValueList) { - data += blank + vNameValue.getName() + " " + vNameValue.getValue(); - if (count == 0) - blank = addBlank(blank); - count++; - } - return data; - } - - private static String addBlank(String field) { - int blanks = 50; - int strSize = field.length(); - String fieldWithBlank = field; - for (int i = 0; i < blanks - strSize; i++) { - fieldWithBlank += " "; - } - return fieldWithBlank; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java deleted file mode 100644 index 5d4efbc..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/FileUtil.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.io.File; -import java.net.URL; - -import org.apache.log4j.Logger; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.Chmod; -import org.apache.tools.ant.types.FileSet; - -public class FileUtil { - private static final Logger logger = Logger.getLogger(FileUtil.class); - - private FileUtil() { - throw new UnsupportedOperationException(); - } - - public static File getFileFromClasspath(String filename) { - URL fileCompleteUrl = Thread.currentThread().getContextClassLoader().getResource(filename); - logger.debug("File Complete URI :" + fileCompleteUrl); - File file = null; - try { - file = new File(fileCompleteUrl.toURI()); - } catch (Exception exception) { - logger.debug(exception.getMessage(), exception.getCause()); - } - return file; - } - - public static void createDirectory(String dirPath) { - File dir = new File(dirPath); - if (!dir.exists()) { - logger.info("Directory " + dirPath + " does not exist. Creating ..."); - boolean mkDirSuccess = dir.mkdirs(); - if (!mkDirSuccess) { - String errorMessage = String.format("Could not create directory %s", dirPath); - logger.error(errorMessage); - throw new RuntimeException(errorMessage); - } - } - } - - public static void setPermissionOnDirectory(String dirPath, String permission) { - Chmod chmod = new Chmod(); - chmod.setProject(new Project()); - FileSet fileSet = new FileSet(); - fileSet.setDir(new File(dirPath)); - fileSet.setIncludes("**"); - chmod.addFileset(fileSet); - chmod.setPerm(permission); - chmod.execute(); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/JSONUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/JSONUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/JSONUtil.java deleted file mode 100644 index d08c0f4..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/JSONUtil.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.apache.ambari.logsearch.common.MessageEnums; -import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; -import org.codehaus.jettison.json.JSONArray; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class JSONUtil { - private static final Logger logger = Logger.getLogger(JSONUtil.class); - - private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; - private static final Gson gson = new GsonBuilder().setDateFormat(DATE_FORMAT).create(); - - private JSONUtil() { - throw new UnsupportedOperationException(); - } - - @SuppressWarnings("unchecked") - public static HashMap<String, Object> jsonToMapObject(String jsonStr) { - if (StringUtils.isBlank(jsonStr)) { - logger.info("jsonString is empty, cannot conver to map"); - return null; - } - ObjectMapper mapper = new ObjectMapper(); - try { - Object tempObject = mapper.readValue(jsonStr, new TypeReference<HashMap<String, Object>>() {}); - return (HashMap<String, Object>) tempObject; - - } catch (JsonParseException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } catch (JsonMappingException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } catch (IOException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } - - } - - @SuppressWarnings("unchecked") - public static List<HashMap<String, Object>> jsonToMapObjectList(String jsonStr) { - if (StringUtils.isBlank(jsonStr)) { - return null; - } - ObjectMapper mapper = new ObjectMapper(); - try { - Object tempObject = mapper.readValue(jsonStr, new TypeReference<List<HashMap<String, Object>>>() {}); - return (List<HashMap<String, Object>>) tempObject; - - } catch (JsonParseException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } catch (JsonMappingException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } catch (IOException e) { - throw RESTErrorUtil.createRESTException("Invalid input data: " + e.getMessage(), MessageEnums.INVALID_INPUT_DATA); - } - - } - - public static boolean isJSONValid(String jsonString) { - try { - new JSONObject(jsonString); - } catch (JSONException ex) { - try { - new JSONArray(jsonString); - } catch (JSONException ex1) { - return false; - } - } - return true; - } - - public static HashMap<String, Object> readJsonFromFile(File jsonFile) { - ObjectMapper mapper = new ObjectMapper(); - try { - HashMap<String, Object> jsonmap = mapper.readValue(jsonFile, new TypeReference<HashMap<String, Object>>() {}); - return jsonmap; - } catch (IOException e) { - logger.error(e, e.getCause()); - } - return new HashMap<String, Object>(); - } - - public static String mapToJSON(Map<String, Object> map) { - ObjectMapper om = new ObjectMapper(); - try { - String json = om.writeValueAsString(map); - - return json; - } catch (IOException e) { - logger.error(e, e.getCause()); - } - return ""; - } - - /** - * WRITE JOSN IN FILE ( Delete existing file and create new file) - */ - public static synchronized void writeJSONInFile(String jsonStr, File outputFile, boolean beautify) { - FileWriter fileWriter = null; - if (outputFile == null) { - logger.error("user_pass json file can't be null."); - return; - } - try { - boolean writePermission = false; - if (outputFile.exists() && outputFile.canWrite()) { - writePermission = true; - } - if (writePermission) { - fileWriter = new FileWriter(outputFile); - if (beautify) { - ObjectMapper mapper = new ObjectMapper(); - Object json = mapper.readValue(jsonStr, Object.class); - jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json); - } - fileWriter.write(jsonStr); - } else { - logger.error("Applcation does not have permission to update file to write enc_password. file="+ outputFile.getAbsolutePath()); - } - } catch (IOException e) { - logger.error("Error writing to password file.", e.getCause()); - } finally { - if (fileWriter != null) { - try { - fileWriter.flush(); - fileWriter.close(); - } catch (Exception exception) { - logger.error(exception); - } - } - } - } - - public static String objToJson(Object obj) { - return gson.toJson(obj); - } - - public static Object jsonToObj(String json, Class<?> klass) { - return gson.fromJson(json, klass); - } - - /** - * GET VALUES FROM JSON BY GIVING KEY RECURSIVELY - */ - @SuppressWarnings("rawtypes") - public static String getValuesOfKey(String jsonStr, String keyName, List<String> values) { - if (values == null) { - return null; - } - Object jsonObj = null; - try { - jsonObj = new JSONObject(jsonStr); - } catch (Exception e) { - // ignore - } - if (jsonObj == null) { - try { - JSONArray jsonArray = new JSONArray(jsonStr); - String str = null; - for (int i = 0; i < jsonArray.length(); i++) { - - str = getValuesOfKey(jsonArray.getString(i), keyName, values); - if (str != null) { - return str; - } - } - - } catch (Exception e) { - // ignore - } - } - if (jsonObj == null) { - return null; - } - - Iterator iterator = ((JSONObject) jsonObj).keys(); - if (iterator == null) { - return null; - } - while (iterator.hasNext()) { - String key = (String) iterator.next(); - - if (key != null && key.equals(keyName)) { - - try { - String val = ((JSONObject) jsonObj).getString(key); - values.add(val); - } catch (Exception e) { - // ignore - } - - } else if ((((JSONObject) jsonObj).optJSONArray(key) != null) || (((JSONObject) jsonObj).optJSONObject(key) != null)) { - - String str = null; - try { - str = getValuesOfKey("" + ((JSONObject) jsonObj).getString(key), keyName, values); - } catch (Exception e) { - // ignore - } - if (str != null) { - return str; - } - - } - - } - return null; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/RESTErrorUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/RESTErrorUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/RESTErrorUtil.java deleted file mode 100644 index b1a53f2..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/RESTErrorUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Response; - -import org.apache.ambari.logsearch.common.MessageEnums; -import org.apache.ambari.logsearch.common.MessageData; -import org.apache.ambari.logsearch.common.VResponse; -import org.apache.log4j.Logger; - -public class RESTErrorUtil { - private static final Logger logger = Logger.getLogger(RESTErrorUtil.class); - - private RESTErrorUtil() { - throw new UnsupportedOperationException(); - } - - public static WebApplicationException createRESTException(VResponse response) { - return createRESTException(response, HttpServletResponse.SC_BAD_REQUEST); - } - - public static VResponse createMessageResponse(String errorMessage, MessageEnums messageEnum) { - List<MessageData> messageList = new ArrayList<>(); - messageList.add(messageEnum.getMessage()); - VResponse response = new VResponse(); - response.setStatusCode(VResponse.STATUS_ERROR); - response.setMsgDesc(errorMessage); - response.setMessageList(messageList); - return response; - } - - public static WebApplicationException createRESTException(String errorMessage, MessageEnums messageEnum) { - VResponse response = createMessageResponse(errorMessage, messageEnum); - WebApplicationException webAppEx = createRESTException(response); - logger.error("Operation error. response=" + response, webAppEx); - return webAppEx; - } - - private static WebApplicationException createRESTException(VResponse response, int sc) { - Response errorResponse = Response.status(sc).entity(response).build(); - WebApplicationException restException = new WebApplicationException(errorResponse); - restException.fillInStackTrace(); - return restException; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SSLUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SSLUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SSLUtil.java deleted file mode 100644 index d4b6544..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SSLUtil.java +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import javax.net.ssl.SSLContext; - -import org.apache.ambari.logsearch.common.PropertiesHelper; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang3.ArrayUtils; -import org.apache.hadoop.conf.Configuration; -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.x500.X500Name; -import org.bouncycastle.asn1.x509.AlgorithmIdentifier; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.operator.ContentSigner; -import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder; -import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; -import org.bouncycastle.operator.OperatorCreationException; -import org.bouncycastle.operator.bc.BcContentSignerBuilder; -import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; -import org.bouncycastle.cert.X509CertificateHolder; -import org.bouncycastle.cert.X509v3CertificateBuilder; -import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter; -import org.bouncycastle.crypto.params.RSAKeyParameters; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.net.InetAddress; -import java.security.InvalidKeyException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SecureRandom; -import java.security.Security; -import java.security.SignatureException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.util.Date; - -public class SSLUtil { - private static final Logger LOG = LoggerFactory.getLogger(SSLUtil.class); - - private static final String KEYSTORE_LOCATION_ARG = "javax.net.ssl.keyStore"; - private static final String KEYSTORE_PASSWORD_ARG = "javax.net.ssl.keyStorePassword"; - private static final String KEYSTORE_TYPE_ARG = "javax.net.ssl.keyStoreType"; - private static final String DEFAULT_KEYSTORE_TYPE = "JKS"; - private static final String TRUSTSTORE_LOCATION_ARG = "javax.net.ssl.trustStore"; - private static final String TRUSTSTORE_PASSWORD_ARG = "javax.net.ssl.trustStorePassword"; - private static final String TRUSTSTORE_TYPE_ARG = "javax.net.ssl.trustStoreType"; - private static final String DEFAULT_TRUSTSTORE_TYPE = "JKS"; - private static final String KEYSTORE_PASSWORD_PROPERTY_NAME = "logsearch_keystore_password"; - private static final String TRUSTSTORE_PASSWORD_PROPERTY_NAME = "logsearch_truststore_password"; - private static final String KEYSTORE_PASSWORD_FILE = "ks_pass.txt"; - private static final String TRUSTSTORE_PASSWORD_FILE = "ts_pass.txt"; - private static final String CREDENTIAL_STORE_PROVIDER_PATH = "hadoop.security.credential.provider.path"; - - private static final String LOGSEARCH_CERT_FOLDER_LOCATION = "logsearch.cert.folder.location"; - private static final String LOGSEARCH_CERT_ALGORITHM = "logsearch.cert.algorithm"; - - private static final String LOGSEARCH_CERT_FILENAME = "logsearch.crt"; - private static final String LOGSEARCH_KEYSTORE_FILENAME = "logsearch.jks"; - private static final String LOGSEARCH_KEYSTORE_PRIVATE_KEY = "logsearch.private.key"; - private static final String LOGSEARCH_KEYSTORE_PUBLIC_KEY = "logsearch.public.key"; - private static final String LOGSEARCH_CERT_DEFAULT_ALGORITHM = "sha256WithRSA"; - - private static final String LOGSEARCH_CERT_DEFAULT_FOLDER = "/etc/ambari-logsearch-portal/conf/keys"; - private static final String LOGSEARCH_KEYSTORE_DEFAULT_PASSWORD = "bigdata"; - - private SSLUtil() { - throw new UnsupportedOperationException(); - } - - public static String getKeyStoreLocation() { - return System.getProperty(KEYSTORE_LOCATION_ARG); - } - - public static String getKeyStorePassword() { - return System.getProperty(KEYSTORE_PASSWORD_ARG); - } - - public static String getKeyStoreType() { - return System.getProperty(KEYSTORE_TYPE_ARG, DEFAULT_KEYSTORE_TYPE); - } - - public static String getTrustStoreLocation() { - return System.getProperty(TRUSTSTORE_LOCATION_ARG); - } - - public static String getTrustStorePassword() { - return System.getProperty(TRUSTSTORE_PASSWORD_ARG); - } - - public static String getTrustStoreType() { - return System.getProperty(TRUSTSTORE_TYPE_ARG, DEFAULT_TRUSTSTORE_TYPE); - } - - public static boolean isKeyStoreSpecified() { - return StringUtils.isNotEmpty(getKeyStoreLocation()); - } - - private static boolean isTrustStoreSpecified() { - return StringUtils.isNotEmpty(getTrustStoreLocation()); - } - - public static SslContextFactory getSslContextFactory() { - SslContextFactory sslContextFactory = new SslContextFactory(); - sslContextFactory.setKeyStorePath(getKeyStoreLocation()); - sslContextFactory.setKeyStorePassword(getKeyStorePassword()); - sslContextFactory.setKeyStoreType(getKeyStoreType()); - if (isTrustStoreSpecified()) { - sslContextFactory.setTrustStorePath(getTrustStoreLocation()); - sslContextFactory.setTrustStorePassword(getTrustStorePassword()); - sslContextFactory.setTrustStoreType(getTrustStoreType()); - } - - return sslContextFactory; - } - - public static SSLContext getSSLContext() { - SslContextFactory sslContextFactory = getSslContextFactory(); - - try { - sslContextFactory.start(); - return sslContextFactory.getSslContext(); - } catch (Exception e) { - LOG.error("Could not create SSL Context", e); - return null; - } finally { - try { - sslContextFactory.stop(); - } catch (Exception e) { - LOG.error("Could not stop sslContextFactory", e); - } - } - } - - private static String getPasswordFromFile(String fileName) { - try { - File pwdFile = new File(LOGSEARCH_CERT_DEFAULT_FOLDER, fileName); - if (!pwdFile.exists()) { - FileUtils.writeStringToFile(pwdFile, LOGSEARCH_KEYSTORE_DEFAULT_PASSWORD); - return LOGSEARCH_KEYSTORE_DEFAULT_PASSWORD; - } else { - return FileUtils.readFileToString(pwdFile); - } - } catch (Exception e) { - LOG.warn("Exception occurred during read/write password file for keystore/truststore.", e); - return null; - } - } - - private static String getPasswordFromCredentialStore(String propertyName) { - try { - String providerPath = PropertiesHelper.getProperty(CREDENTIAL_STORE_PROVIDER_PATH); - if (providerPath == null) { - return null; - } - - Configuration config = new Configuration(); - config.set(CREDENTIAL_STORE_PROVIDER_PATH, providerPath); - char[] passwordChars = config.getPassword(propertyName); - return (ArrayUtils.isNotEmpty(passwordChars)) ? new String(passwordChars) : null; - } catch (Exception e) { - LOG.warn(String.format("Could not load password %s from credential store, using default password", propertyName), e); - return null; - } - } - - private static String getPassword(String propertyName, String fileName) { - String credentialStorePassword = getPasswordFromCredentialStore(propertyName); - if (credentialStorePassword != null) { - return credentialStorePassword; - } - - String filePassword = getPasswordFromFile(fileName); - if (filePassword != null) { - return filePassword; - } - - return LOGSEARCH_KEYSTORE_DEFAULT_PASSWORD; - } - - /** - * Put private key into in-memory keystore and write it to a file (JKS file) - */ - private static void setKeyAndCertInKeystore(X509Certificate cert, KeyPair keyPair, KeyStore keyStore, String keyStoreLocation, char[] password) - throws Exception { - Certificate[] certChain = new Certificate[1]; - certChain[0] = cert; - try (FileOutputStream fos = new FileOutputStream(keyStoreLocation)) { - keyStore.setKeyEntry("logsearch.alias", keyPair.getPrivate(), password, certChain); - keyStore.store(fos, password); - } catch (Exception e) { - LOG.error("Could not write certificate to Keystore", e); - throw e; - } - } - - /** - * Create in-memory keypair with bouncy castle - */ - private static KeyPair createKeyPair(String encryptionType, int byteCount) - throws NoSuchProviderException, NoSuchAlgorithmException { - Security.addProvider(new BouncyCastleProvider()); - KeyPairGenerator keyPairGenerator = createKeyPairGenerator(encryptionType, byteCount); - return keyPairGenerator.genKeyPair(); - } - - /** - * Generate X509 certificate if it does not exist - */ - private static X509Certificate generateCertificate(String certificateLocation, KeyPair keyPair, String algorithm) throws Exception { - try { - File certFile = new File(certificateLocation); - if (certFile.exists()) { - LOG.info("Certificate file exists ({}), skip the generation.", certificateLocation); - return getCertFile(certificateLocation); - } else { - Security.addProvider(new BouncyCastleProvider()); - X509Certificate cert = createCert(keyPair, algorithm, InetAddress.getLocalHost().getCanonicalHostName()); - FileUtils.writeByteArrayToFile(certFile, cert.getEncoded()); - return cert; - } - } catch (Exception e) { - LOG.error("Could not create certificate.", e); - throw e; - } - } - - private static void ensureStorePassword(String locationArg, String pwdArg, String propertyName, String fileName) { - if (StringUtils.isNotEmpty(System.getProperty(locationArg)) && StringUtils.isEmpty(System.getProperty(pwdArg))) { - String password = getPassword(propertyName, fileName); - System.setProperty(pwdArg, password); - } - } - - public static void ensureStorePasswords() { - ensureStorePassword(KEYSTORE_LOCATION_ARG, KEYSTORE_PASSWORD_ARG, KEYSTORE_PASSWORD_PROPERTY_NAME, KEYSTORE_PASSWORD_FILE); - ensureStorePassword(TRUSTSTORE_LOCATION_ARG, TRUSTSTORE_PASSWORD_ARG, TRUSTSTORE_PASSWORD_PROPERTY_NAME, TRUSTSTORE_PASSWORD_FILE); - } - - private static X509Certificate getCertFile(String location) throws Exception { - try (FileInputStream fos = new FileInputStream(location)) { - CertificateFactory factory = CertificateFactory.getInstance("X.509"); - return (X509Certificate) factory.generateCertificate(fos); - } catch (Exception e) { - LOG.error("Cannot read cert file. ('" + location + "')", e); - throw e; - } - } - - private static X509Certificate createCert(KeyPair keyPair, String signatureAlgoritm, String domainName) - throws NoSuchAlgorithmException, InvalidKeyException, SignatureException, OperatorCreationException, CertificateException, IOException { - - RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic(); - RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate(); - - AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgoritm); - AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId); - BcContentSignerBuilder sigGen = new BcRSAContentSignerBuilder(sigAlgId, digAlgId); - - ASN1InputStream publicKeyStream = new ASN1InputStream(rsaPublicKey.getEncoded()); - SubjectPublicKeyInfo pubKey = SubjectPublicKeyInfo.getInstance(publicKeyStream.readObject()); - publicKeyStream.close(); - - X509v3CertificateBuilder v3CertBuilder = new X509v3CertificateBuilder( - new X500Name("CN=" + domainName + ", OU=None, O=None L=None, C=None"), - BigInteger.valueOf(Math.abs(new SecureRandom().nextInt())), - new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30), - new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 365*10)), - new X500Name("CN=" + domainName + ", OU=None, O=None L=None, C=None"), - pubKey); - - RSAKeyParameters keyParams = new RSAKeyParameters(true, rsaPrivateKey.getPrivateExponent(), rsaPrivateKey.getModulus()); - ContentSigner contentSigner = sigGen.build(keyParams); - - X509CertificateHolder certificateHolder = v3CertBuilder.build(contentSigner); - - JcaX509CertificateConverter certConverter = new JcaX509CertificateConverter().setProvider("BC"); - return certConverter.getCertificate(certificateHolder); - } - - private static KeyPairGenerator createKeyPairGenerator(String algorithmIdentifier, int bitCount) - throws NoSuchProviderException, NoSuchAlgorithmException { - KeyPairGenerator kpg = KeyPairGenerator.getInstance(algorithmIdentifier, BouncyCastleProvider.PROVIDER_NAME); - kpg.initialize(bitCount); - return kpg; - } - - /** - * Create keystore with keys and certificate (only if the keystore does not exist or if you have no permissions on the keystore file) - */ - public static void loadKeystore() { - try { - String certFolder = PropertiesHelper.getProperty(LOGSEARCH_CERT_FOLDER_LOCATION, LOGSEARCH_CERT_DEFAULT_FOLDER); - String certAlgorithm = PropertiesHelper.getProperty(LOGSEARCH_CERT_ALGORITHM, LOGSEARCH_CERT_DEFAULT_ALGORITHM); - String certLocation = String.format("%s/%s", LOGSEARCH_CERT_DEFAULT_FOLDER, LOGSEARCH_CERT_FILENAME); - String keyStoreLocation = StringUtils.isNotEmpty(getKeyStoreLocation()) ? getKeyStoreLocation() - : String.format("%s/%s", LOGSEARCH_CERT_DEFAULT_FOLDER, LOGSEARCH_KEYSTORE_FILENAME); - char[] password = StringUtils.isNotEmpty(getKeyStorePassword()) ? - getKeyStorePassword().toCharArray() : LOGSEARCH_KEYSTORE_DEFAULT_PASSWORD.toCharArray(); - boolean keyStoreFileExists = new File(keyStoreLocation).exists(); - if (!keyStoreFileExists) { - FileUtil.createDirectory(certFolder); - LOG.warn("Keystore file ('{}') does not exist, creating new one. " + - "If the file exists, make sure you have proper permissions on that.", keyStoreLocation); - if (isKeyStoreSpecified() && !"JKS".equalsIgnoreCase(getKeyStoreType())) { - throw new RuntimeException(String.format("Keystore does not exist. Only JKS keystore can be auto generated. (%s)", keyStoreLocation)); - } - LOG.info("SSL keystore is not specified. Generating it with certificate ... (using default format: JKS)"); - Security.addProvider(new BouncyCastleProvider()); - KeyPair keyPair = createKeyPair("RSA", 2048); - File privateKeyFile = new File(String.format("%s/%s", certFolder, LOGSEARCH_KEYSTORE_PRIVATE_KEY)); - if (!privateKeyFile.exists()) { - FileUtils.writeByteArrayToFile(privateKeyFile, keyPair.getPrivate().getEncoded()); - } - File file = new File(String.format("%s/%s", certFolder, LOGSEARCH_KEYSTORE_PUBLIC_KEY)); - if (!file.exists()) { - FileUtils.writeByteArrayToFile(file, keyPair.getPublic().getEncoded()); - } - X509Certificate cert = generateCertificate(certLocation, keyPair, certAlgorithm); - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - keyStore.load(null, password); - setKeyAndCertInKeystore(cert, keyPair, keyStore, keyStoreLocation, password); - FileUtil.setPermissionOnDirectory(certFolder, "600"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java deleted file mode 100644 index 973e304..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/SolrUtil.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Splitter; -import org.apache.ambari.logsearch.common.LogSearchConstants; -import org.apache.lucene.analysis.core.KeywordTokenizerFactory; -import org.apache.lucene.analysis.path.PathHierarchyTokenizerFactory; -import org.apache.lucene.analysis.standard.StandardTokenizerFactory; -import org.apache.lucene.analysis.util.TokenizerFactory; -import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.schema.TrieDoubleField; -import org.apache.solr.schema.TrieFloatField; -import org.apache.solr.schema.TrieIntField; -import org.apache.solr.schema.TrieLongField; -import org.apache.commons.collections.MapUtils; -import org.apache.commons.lang3.StringUtils; - -public class SolrUtil { - private SolrUtil() { - throw new UnsupportedOperationException(); - } - - /** - * Copied from Solr ClientUtils.escapeQueryChars and removed escaping * - */ - public static String escapeQueryChars(String s) { - StringBuilder sb = new StringBuilder(); - if (s != null) { - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - int ic = (int) c; - if (ic == 10) { - sb.append('\\'); - sb.append((char) 13); - } - // Note: Remove || c == '*' - // These characters are part of the query syntax and must be escaped - if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' - || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' - || c == '\"' || c == '{' || c == '}' || c == '~' || c == '?' - || c == '|' || c == '&' || c == ';' || c == '/' - || Character.isWhitespace(c)) { - sb.append('\\'); - } - sb.append(c); - } - } - return sb.toString(); - } - - public static String escapeForStandardTokenizer(String search) { - if (search == null) { - return null; - } - String newSearch = escapeQueryChars(search.trim()); - if (StringUtils.containsWhitespace(newSearch)) { - newSearch = "\"" + newSearch + "\""; - } - - return newSearch; - } - - private static String makeSolrSearchStringWithoutAsterisk(String search) { - String newString = search.trim(); - String newSearch = newString.replaceAll("(?=[]\\[+&|!(){}^\"~=/$@%?:.\\\\])", "\\\\"); - newSearch = newSearch.replace("\n", "*"); - newSearch = newSearch.replace("\t", "*"); - newSearch = newSearch.replace("\r", "*"); - newSearch = newSearch.replace(" ", "\\ "); - newSearch = newSearch.replace("**", "*"); - newSearch = newSearch.replace("***", "*"); - return newSearch; - } - - public static String makeSearcableString(String search) { - if (StringUtils.isBlank(search)) { - return ""; - } - String newSearch = search.replaceAll("[\\t\\n\\r]", " "); - newSearch = newSearch.replaceAll("(?=[]\\[+&|!(){}^~=$/@%?:.\\\\-])", "\\\\"); - - return newSearch.replace(" ", "\\ "); - } - - public static void removeDoubleOrTripleEscapeFromFilters(SolrQuery solrQuery) { - String[] filterQueries = solrQuery.getFilterQueries(); - List<String> newArray = new ArrayList<>(); - if (filterQueries != null && filterQueries.length > 0) { - for (String filterQuery : filterQueries) { - newArray.add(filterQuery.replaceAll("\\\\\\\\\\\\|\\\\\\\\", "\\\\")); - } - } - solrQuery.setFilterQueries(newArray.toArray(new String[0])); - } - - - private static boolean isSolrFieldNumber(Map<String, Object> fieldTypeInfoMap) { - if (MapUtils.isEmpty(fieldTypeInfoMap)) { - return false; - } - String fieldTypeClassName = (String) fieldTypeInfoMap.get("class"); - return fieldTypeClassName.equalsIgnoreCase(TrieIntField.class.getSimpleName()) || - fieldTypeClassName.equalsIgnoreCase(TrieDoubleField.class.getSimpleName()) || - fieldTypeClassName.equalsIgnoreCase(TrieFloatField.class.getSimpleName()) || - fieldTypeClassName.equalsIgnoreCase(TrieLongField.class.getSimpleName()); - } - - public static String putWildCardByType(String str, String fieldType, String fieldTypeMetaData) { - Map<String, Object> fieldTypeInfoMap = getFieldTypeInfoMap(fieldTypeMetaData); - if (StringUtils.isNotBlank(fieldType)) { - if (isSolrFieldNumber(fieldTypeInfoMap)) { - String value = putEscapeCharacterForNumber(str, fieldTypeInfoMap); - if (StringUtils.isNotBlank(value)) { - return value; - } else { - return null; - } - } else if (checkTokenizer(StandardTokenizerFactory.class, fieldTypeInfoMap)) { - return escapeForStandardTokenizer(str); - } else if (checkTokenizer(KeywordTokenizerFactory.class, fieldTypeInfoMap) || "string".equalsIgnoreCase(fieldType)) { - return makeSolrSearchStringWithoutAsterisk(str); - } else if (checkTokenizer(PathHierarchyTokenizerFactory.class, fieldTypeInfoMap)) { - return str; - } else { - return escapeQueryChars(str); - } - } - return str; - } - - private static String putEscapeCharacterForNumber(String str, Map<String, Object> fieldTypeInfoMap) { - if (StringUtils.isNotEmpty(str)) { - str = str.replace("*", ""); - } - String escapeCharSting = parseInputValueAsPerFieldType(str, fieldTypeInfoMap); - if (escapeCharSting == null || escapeCharSting.isEmpty()) { - return null; - } - escapeCharSting = escapeCharSting.replace("-", "\\-"); - return escapeCharSting; - } - - private static String parseInputValueAsPerFieldType(String str, Map<String, Object> fieldTypeInfoMap) { - try { - String className = (String) fieldTypeInfoMap.get("class"); - if (className.equalsIgnoreCase(TrieDoubleField.class.getSimpleName())) { - return "" + Double.parseDouble(str); - } else if (className.equalsIgnoreCase(TrieFloatField.class.getSimpleName())) { - return "" + Float.parseFloat(str); - } else if (className.equalsIgnoreCase(TrieLongField.class.getSimpleName())) { - return "" + Long.parseLong(str); - } else { - return "" + Integer.parseInt(str); - } - } catch (Exception e) { - return null; - } - } - - public static SolrQuery addListFilterToSolrQuery(SolrQuery solrQuery, String fieldName, String fieldValue) { - if (org.apache.commons.lang.StringUtils.isNotEmpty(fieldValue)) { - List<String> clusters = Splitter.on(",").splitToList(fieldValue); - if (clusters.size() > 1) { - solrQuery.addFilterQuery(String.format("%s:(%s)", fieldName, org.apache.commons.lang.StringUtils.join(clusters, " OR "))); - } else { - solrQuery.addFilterQuery(String.format("%s:%s", fieldName, clusters.get(0))); - } - } - return solrQuery; - } - - private static Map<String, Object> getFieldTypeInfoMap(String fieldTypeMetaData) { - HashMap<String, Object> fieldTypeMap = JSONUtil.jsonToMapObject(fieldTypeMetaData); - if (fieldTypeMap == null) { - return new HashMap<>(); - } - String classname = (String) fieldTypeMap.get("class"); - if (StringUtils.isNotBlank(classname)) { - classname = classname.replace("solr.", ""); - fieldTypeMap.put("class", classname); - } - return fieldTypeMap; - } - - //============================================================================================================= - - public static void setFacetField(SolrQuery solrQuery, String facetField) { - solrQuery.setFacet(true); - setRowCount(solrQuery, 0); - solrQuery.set(LogSearchConstants.FACET_FIELD, facetField); - setFacetLimit(solrQuery, -1); - } - - public static void setFacetSort(SolrQuery solrQuery, String sortType) { - solrQuery.setFacet(true); - solrQuery.setFacetSort(sortType); - } - - public static void setFacetPivot(SolrQuery solrQuery, int mincount, String... hirarchy) { - solrQuery.setFacet(true); - setRowCount(solrQuery, 0); - solrQuery.set(LogSearchConstants.FACET_PIVOT, hirarchy); - solrQuery.set(LogSearchConstants.FACET_PIVOT_MINCOUNT, mincount); - setFacetLimit(solrQuery, -1); - } - - private static void setFacetLimit(SolrQuery solrQuery, int limit) { - solrQuery.set("facet.limit", limit); - } - - public static void setRowCount(SolrQuery solrQuery, int rows) { - if (rows > 0) { - solrQuery.setRows(rows); - } else { - solrQuery.setRows(0); - solrQuery.remove(LogSearchConstants.SORT); - } - } - - @SuppressWarnings("unchecked") - private static boolean checkTokenizer(Class<? extends TokenizerFactory> tokenizerFactoryClass, Map<String, Object> fieldTypeInfoMap) { - HashMap<String, Object> analyzer = (HashMap<String, Object>) fieldTypeInfoMap.get("analyzer"); - HashMap<String, Object> tokenizerMap = (HashMap<String, Object>)MapUtils.getObject(analyzer, "tokenizer"); - if (tokenizerMap != null) { - String tokenizerClass = (String) tokenizerMap.get("class"); - if (StringUtils.isNotEmpty(tokenizerClass)) { - tokenizerClass = tokenizerClass.replace("solr.", ""); - return tokenizerClass.equalsIgnoreCase(tokenizerFactoryClass.getSimpleName()); - } - } - - return false; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/WebUtil.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/WebUtil.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/WebUtil.java deleted file mode 100644 index 36865ad..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/util/WebUtil.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.util; - -import java.io.IOException; -import java.net.ServerSocket; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class WebUtil { - private static final Logger LOG = LoggerFactory.getLogger(WebUtil.class); - - private static final String WEB_RESOURCE_FOLDER = "webapps/app"; - - private WebUtil() { - throw new UnsupportedOperationException(); - } - - public static URI findWebResourceBase() { - URL fileCompleteUrl = Thread.currentThread().getContextClassLoader().getResource(WEB_RESOURCE_FOLDER); - String errorMessage = "Web Resource Folder " + WEB_RESOURCE_FOLDER + " not found in classpath"; - if (fileCompleteUrl != null) { - try { - return fileCompleteUrl.toURI().normalize(); - } catch (URISyntaxException e) { - LOG.error(errorMessage, e); - System.exit(1); - } - } else { - LOG.error(errorMessage); - System.exit(1); - } - throw new IllegalStateException(errorMessage); - } - - public static void checkPort(int port) { - try (ServerSocket serverSocket = new ServerSocket(port)) { - } catch (IOException ex) { - LOG.error(ex.getLocalizedMessage() + " PORT :" + port); - System.exit(1); - } - } - -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthFailureHandler.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthFailureHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthFailureHandler.java deleted file mode 100644 index fdec8d3..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthFailureHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.web.authenticate; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.log4j.Logger; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler; - -public class LogsearchAuthFailureHandler extends ExceptionMappingAuthenticationFailureHandler { - private static final Logger logger = Logger.getLogger(LogsearchAuthFailureHandler.class); - - public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) - throws IOException, ServletException { - logger.debug(" AuthFailureHandler + onAuthenticationFailure"); - // TODO UI side handle status and redirect to login page with proper - response.setContentType("application/json"); - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - response.getOutputStream().println("{ \"error\": \"" + "login failed !!" + "\" }"); - } - -} http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthSuccessHandler.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthSuccessHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthSuccessHandler.java deleted file mode 100644 index cf9d200..0000000 --- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/web/authenticate/LogsearchAuthSuccessHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.ambari.logsearch.web.authenticate; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.log4j.Logger; -import org.springframework.security.core.Authentication; -import org.springframework.security.web.authentication.AuthenticationSuccessHandler; - -public class LogsearchAuthSuccessHandler implements AuthenticationSuccessHandler { - private static final Logger logger = Logger.getLogger(LogsearchAuthSuccessHandler.class); - - - @Override - public void onAuthenticationSuccess(HttpServletRequest request, - HttpServletResponse response, Authentication authentication) - throws ServletException, IOException { - response.setStatus(HttpServletResponse.SC_OK); - } -}