Skip to content

Commit

Permalink
Merge branch '3.10' of https://github.com/JumpMind/symmetric-ds.git i…
Browse files Browse the repository at this point in the history
…nto 3.10
  • Loading branch information
jumpmind-josh committed May 3, 2019
2 parents a7b240a + 99cd4c0 commit 3b91664
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 1 deletion.
2 changes: 1 addition & 1 deletion symmetric-assemble/src/asciidoc/installation.ad
Expand Up @@ -41,7 +41,7 @@ endif::pro[]
ifdef::pro[]
The SymmetricDS installer is an executable jar file named *symmetric-pro-<version>-setup.jar*.
In order to run the installer, you must have the Java Runtime Environment (JRE)
version 6.0 or newer installed.
version 8.0 or newer installed.
Start the installer by _double-clicking_ it (if the JRE is in your path and associated with .jar files),
or by running it from a command prompt, like this:

Expand Down
Expand Up @@ -149,4 +149,9 @@ protected PermissionResult getCreateSymTriggerPermission() {

return result;
}

@Override
public boolean supportsMultiThreadedTransactions() {
return false;
}
}
13 changes: 13 additions & 0 deletions symmetric-server/src/main/deploy/web/WEB-INF/web.xml
Expand Up @@ -79,6 +79,19 @@ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>LogRequestResponseFilter</filter-name>
<filter-class>org.jumpmind.symmetric.web.LogRequestResponseFilter</filter-class>
<init-param>
<param-name>enabled</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LogRequestResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>SymmetricServlet</servlet-name>
Expand Down
@@ -0,0 +1,114 @@
/**
* Licensed to JumpMind Inc under one or more contributor
* license agreements. See the NOTICE file distributed
* with this work for additional information regarding
* copyright ownership. JumpMind Inc licenses this file
* to you under the GNU General Public License, version 3.0 (GPLv3)
* (the "License"); you may not use this file except in compliance
* with the License.
*
* You should have received a copy of the GNU General Public License,
* version 3.0 (GPLv3) along with this library; if not, see
* <http://www.gnu.org/licenses/>.
*
* 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.jumpmind.symmetric.web;

import java.io.IOException;
import java.util.Collections;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

public class LogRequestResponseFilter implements Filter {

private boolean enabled = false;

private static final Logger LOG = Logger.getLogger(LogRequestResponseFilter.class);

@Override
public void init(FilterConfig filterConfig) throws ServletException {
if (Boolean.valueOf(filterConfig.getInitParameter("enabled"))) {
enabled = true;
}
}

@Override
public void doFilter(ServletRequest argRequest, ServletResponse argResponse, FilterChain chain) throws IOException, ServletException {
if (!enabled) {
chain.doFilter(argRequest, argResponse);
return;
}

HttpServletRequest request = (HttpServletRequest) argRequest;
HttpServletResponse response = (HttpServletResponse) argResponse;

StringBuilder buff = new StringBuilder(256);
buildRequest(request, buff);

long start = System.currentTimeMillis();

chain.doFilter(request, response);

long elapsed = System.currentTimeMillis()-start;

buildResponse(response, elapsed, buff);

buff.setLength(buff.length()-2); // remove last CR/LF

LOG.info(buff.toString());
}

private void buildRequest(HttpServletRequest request, StringBuilder buff) {

buff.append(request.getMethod()).append(" REQUEST: ").append(getUrl(request)).append(" from ").append(request.getRemoteHost()).append("\r\n");

for (String headerName : Collections.list(request.getHeaderNames())) {
buff.append("\t").append(headerName).append("=").append(request.getHeader(headerName)).append("\r\n");
}
}

private void buildResponse(HttpServletResponse response, long elapsed, StringBuilder buff) {
buff.append(" RESPONSE took ").append(elapsed).append("ms.");

if (response.getContentType() != null) {
buff.append(" Content Type: ").append(response.getContentType());
}

buff.append(" HTTP status ").append(response.getStatus()).append("\r\n");

for (String headerName : response.getHeaderNames()) {
buff.append("\t").append(headerName).append("=").append(response.getHeader(headerName)).append("\r\n");
}
}


private String getUrl(HttpServletRequest request) {
String uri = request.getScheme() + "://" +
request.getServerName() +
("http".equals(request.getScheme()) && request.getServerPort() == 80 || "https".equals(request.getScheme()) && request.getServerPort() == 443 ? "" : ":" + request.getServerPort() ) +
request.getRequestURI() +
(request.getQueryString() != null ? "?" + request.getQueryString() : "");
return uri;
}

@Override
public void destroy() {
// no-op.
}

}

0 comments on commit 3b91664

Please sign in to comment.