com.google.web.bindery.requestfactory.server.Logging Maven / Gradle / Ivy
/*
* Copyright 2010 Google Inc.
*
* Licensed 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 com.google.web.bindery.requestfactory.server;
import com.google.gwt.core.server.StackTraceDeobfuscator;
import com.google.gwt.logging.server.RemoteLoggingServiceUtil;
import com.google.gwt.logging.server.RemoteLoggingServiceUtil.RemoteLoggingException;
import com.google.gwt.user.client.rpc.RpcRequestBuilder;
import javax.servlet.http.HttpServletRequest;
/**
* Server-side object that handles log messages sent by
* {@link com.google.web.bindery.requestfactory.gwt.client.RequestFactoryLogHandler}
* .
*/
public class Logging {
private static StackTraceDeobfuscator deobfuscator;
/**
* Logs a message.
*
* @param logRecordJson a json serialized LogRecord, as provided by
* {@link com.google.gwt.logging.client.JsonLogRecordClientUtil#logRecordAsJsonObject(LogRecord)}
* @throws RemoteLoggingException if logging fails
*/
public static void logMessage(String logRecordJson) throws RemoteLoggingException {
/*
* if the header does not exist, we pass null, which is handled gracefully
* by the deobfuscation code.
*/
HttpServletRequest threadLocalRequest = RequestFactoryServlet.getThreadLocalRequest();
String strongName = null;
if (threadLocalRequest != null) {
// can be null during tests
strongName = threadLocalRequest.getHeader(RpcRequestBuilder.STRONG_NAME_HEADER);
}
RemoteLoggingServiceUtil.logOnServer(logRecordJson, strongName, deobfuscator, null);
}
/**
* This function is only for server-side use which is why it's not in the
* LoggingRequest interface.
*
* @param dir a directory, specified as a String
*/
public static void setSymbolMapsDirectory(String dir) {
deobfuscator = StackTraceDeobfuscator.fromFileSystem(dir);
}
private String id = "";
private Integer version = 0;
/**
* Returns the id of this instance.
*
* @return a String id
* @see #setId(String)
*/
public String getId() {
return this.id;
}
/**
* Returns the version of this instance.
*
* @return an Integer version number
* @see #setVersion(Integer)
*/
public Integer getVersion() {
return this.version;
}
/**
* Sets the id on this instance.
*
* @param id a String id
* @see #getId()
*/
public void setId(String id) {
this.id = id;
}
/**
* Sets the version of this instance.
*
* @param version an Integer version number
* @see #getVersion()
*/
public void setVersion(Integer version) {
this.version = version;
}
}