You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/03/11 19:53:53 UTC
svn commit: r1080726 - in /cxf/trunk/rt:
frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/
frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/
frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/
frontend/jaxrs/src...
Author: sergeyb
Date: Fri Mar 11 18:53:52 2011
New Revision: 1080726
URL: http://svn.apache.org/viewvc?rev=1080726&view=rev
Log:
[CXF-3370] Adding date related tests
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/FiqlParser.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/FiqlParserTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java
cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/LogRecord.java
cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorage.java
cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java
cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/converter/StandardConverter.java
cxf/trunk/rt/management-web/src/test/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorageTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/FiqlParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/FiqlParser.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/FiqlParser.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/FiqlParser.java Fri Mar 11 18:53:52 2011
@@ -20,7 +20,6 @@ package org.apache.cxf.jaxrs.ext.search;
import java.text.DateFormat;
import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -55,20 +54,30 @@ public class FiqlParser<T> {
public static final String LE = "=le=";
public static final String EQ = "==";
public static final String NEQ = "!=";
+
+ public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
+
+ private static final Pattern COMPARATORS_PATTERN;
+ private static final Map<String, ConditionType> OPERATORS_MAP;
- private static Map<String, ConditionType> operatorsMap;
static {
- operatorsMap = new HashMap<String, ConditionType>();
- operatorsMap.put(GT, ConditionType.GREATER_THAN);
- operatorsMap.put(GE, ConditionType.GREATER_OR_EQUALS);
- operatorsMap.put(LT, ConditionType.LESS_THAN);
- operatorsMap.put(LE, ConditionType.LESS_OR_EQUALS);
- operatorsMap.put(EQ, ConditionType.EQUALS);
- operatorsMap.put(NEQ, ConditionType.NOT_EQUALS);
+ // operatorsMap
+ OPERATORS_MAP = new HashMap<String, ConditionType>();
+ OPERATORS_MAP.put(GT, ConditionType.GREATER_THAN);
+ OPERATORS_MAP.put(GE, ConditionType.GREATER_OR_EQUALS);
+ OPERATORS_MAP.put(LT, ConditionType.LESS_THAN);
+ OPERATORS_MAP.put(LE, ConditionType.LESS_OR_EQUALS);
+ OPERATORS_MAP.put(EQ, ConditionType.EQUALS);
+ OPERATORS_MAP.put(NEQ, ConditionType.NOT_EQUALS);
+
+ // pattern
+ String comparators = GT + "|" + GE + "|" + LT + "|" + LE + "|" + EQ + "|" + NEQ;
+ String s1 = "[\\p{ASCII}]+(" + comparators + ")";
+ COMPARATORS_PATTERN = Pattern.compile(s1);
}
private Beanspector<T> beanspector;
-
+ private Map<String, String> properties;
/**
* Creates FIQL parser.
*
@@ -76,7 +85,19 @@ public class FiqlParser<T> {
* accessible no-arg constructor and complementary setters to these used in FIQL expressions.
*/
public FiqlParser(Class<T> tclass) {
+ this(tclass, Collections.<String, String>emptyMap());
+ }
+
+ /**
+ * Creates FIQL parser.
+ *
+ * @param tclass - class of T used to create condition objects in built syntax tree. Class T must have
+ * accessible no-arg constructor and complementary setters to these used in FIQL expressions.
+ * @param contextProperties
+ */
+ public FiqlParser(Class<T> tclass, Map<String, String> contextProperties) {
beanspector = new Beanspector<T>(tclass);
+ properties = contextProperties;
}
/**
@@ -186,10 +207,7 @@ public class FiqlParser<T> {
}
private Comparison parseComparison(String expr) throws FiqlParseException {
- String comparators = GT + "|" + GE + "|" + LT + "|" + LE + "|" + EQ + "|" + NEQ;
- String s1 = "[\\p{ASCII}]+(" + comparators + ")";
- Pattern p = Pattern.compile(s1);
- Matcher m = p.matcher(expr);
+ Matcher m = COMPARATORS_PATTERN.matcher(expr);
if (m.find()) {
String name = expr.substring(0, m.start(1));
String operator = m.group(1);
@@ -213,17 +231,17 @@ public class FiqlParser<T> {
throw new FiqlParseException(e);
}
if (Date.class.isAssignableFrom(valueType)) {
- DateFormat df;
try {
- df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
- // zone in XML is "+01:00" in Java is "+0100"; stripping semicolon
- int idx = value.lastIndexOf(':');
- if (idx != -1) {
- String v = value.substring(0, idx) + value.substring(idx + 1);
- castedValue = df.parse(v);
- } else {
- castedValue = df.parse(value);
+ DateFormat df = SearchUtils.getDateFormat(properties, DEFAULT_DATE_FORMAT);
+ String dateValue = value;
+ if (SearchUtils.isTimeZoneSupported(properties, Boolean.TRUE)) {
+ // zone in XML is "+01:00" in Java is "+0100"; stripping semicolon
+ int idx = value.lastIndexOf(':');
+ if (idx != -1) {
+ dateValue = value.substring(0, idx) + value.substring(idx + 1);
+ }
}
+ castedValue = df.parse(dateValue);
} catch (ParseException e) {
// is that duration?
try {
@@ -297,7 +315,7 @@ public class FiqlParser<T> {
beanspector.instantiate();
for (ASTNode<T> node : subnodes) {
FiqlParser<T>.Comparison comp = (Comparison)node;
- map.put(comp.getName(), operatorsMap.get(comp.getOperator()));
+ map.put(comp.getName(), OPERATORS_MAP.get(comp.getOperator()));
beanspector.setValue(comp.getName(), comp.getValue());
}
return new SimpleSearchCondition<T>(map, beanspector.getBean());
@@ -348,7 +366,7 @@ public class FiqlParser<T> {
public SearchCondition<T> build() throws FiqlParseException {
T cond = createTemplate(name, value);
- ConditionType ct = operatorsMap.get(operator);
+ ConditionType ct = OPERATORS_MAP.get(operator);
if (isPrimitive(cond)) {
return new SimpleSearchCondition<T>(ct, cond);
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java Fri Mar 11 18:53:52 2011
@@ -19,6 +19,9 @@
package org.apache.cxf.jaxrs.ext.search;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
import javax.ws.rs.core.MultivaluedMap;
import org.apache.cxf.jaxrs.utils.JAXRSUtils;
@@ -71,7 +74,11 @@ public class SearchContextImpl implement
// we can use this method as a parser factory, ex
// we can get parsers capable of parsing XQuery and other languages
// depending on the properties set by a user
-
- return new FiqlParser<T>(cls);
+ Map<String, String> props = new LinkedHashMap<String, String>(2);
+ props.put(SearchUtils.DATE_FORMAT_PROPERTY,
+ (String)message.getContextualProperty(SearchUtils.DATE_FORMAT_PROPERTY));
+ props.put(SearchUtils.TIMEZONE_SUPPORT_PROPERTY,
+ (String)message.getContextualProperty(SearchUtils.TIMEZONE_SUPPORT_PROPERTY));
+ return new FiqlParser<T>(cls, props);
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchUtils.java Fri Mar 11 18:53:52 2011
@@ -18,14 +18,30 @@
*/
package org.apache.cxf.jaxrs.ext.search;
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
import org.apache.cxf.jaxrs.ext.search.sql.SQLPrinterVisitor;
public final class SearchUtils {
+ public static final String DATE_FORMAT_PROPERTY = "search.date-format";
+ public static final String TIMEZONE_SUPPORT_PROPERTY = "search.timezone.support";
+
private SearchUtils() {
}
+ public static SimpleDateFormat getDateFormat(Map<String, String> properties, String defaultFormat) {
+ String dfProperty = properties.get(DATE_FORMAT_PROPERTY);
+ return new SimpleDateFormat(dfProperty == null ? defaultFormat : dfProperty);
+ }
+
+ public static boolean isTimeZoneSupported(Map<String, String> properties, Boolean defaultValue) {
+ String tzProperty = properties.get(SearchUtils.TIMEZONE_SUPPORT_PROPERTY);
+ return tzProperty == null ? defaultValue : Boolean.valueOf(tzProperty);
+ }
+
public static <T> String toSQL(SearchCondition<T> sc, String table, String... columns) {
SearchConditionVisitor<T> visitor = new SQLPrinterVisitor<T>(table, columns);
sc.accept(visitor);
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java Fri Mar 11 18:53:52 2011
@@ -19,12 +19,14 @@
package org.apache.cxf.jaxrs.ext.search.client;
import java.text.DateFormat;
-import java.text.SimpleDateFormat;
+import java.util.Collections;
import java.util.Date;
+import java.util.Map;
import javax.xml.datatype.Duration;
import org.apache.cxf.jaxrs.ext.search.FiqlParser;
+import org.apache.cxf.jaxrs.ext.search.SearchUtils;
/**
* Builds client-side search condition that passed to backend can be consumed by {@link FiqlParser}.
@@ -52,26 +54,41 @@ import org.apache.cxf.jaxrs.ext.search.F
*/
public class FiqlSearchConditionBuilder implements SearchConditionBuilder {
+ private Map<String, String> properties;
+
+ public FiqlSearchConditionBuilder() {
+ this (Collections.<String, String>emptyMap());
+ }
+
+ public FiqlSearchConditionBuilder(Map<String, String> properties) {
+ this.properties = properties;
+ }
+
public String build() {
return "";
}
public PartialCondition query() {
- return new Builder();
+ return new Builder(properties);
}
private static class Builder implements SearchConditionBuilder.Property,
SearchConditionBuilder.CompleteCondition, SearchConditionBuilder.PartialCondition {
private String result = "";
private Builder parent;
- private DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+ private DateFormat df;
+ private boolean timeZoneSupported;
- public Builder() {
+ public Builder(Map<String, String> properties) {
parent = null;
+ df = SearchUtils.getDateFormat(properties, FiqlParser.DEFAULT_DATE_FORMAT);
+ timeZoneSupported = SearchUtils.isTimeZoneSupported(properties, Boolean.TRUE);
}
public Builder(Builder parent) {
this.parent = parent;
+ df = parent.getDateFormat();
+ timeZoneSupported = parent.isTimeZoneSupported();
}
public String build() {
@@ -83,6 +100,14 @@ public class FiqlSearchConditionBuilder
// }
}
+ private DateFormat getDateFormat() {
+ return df;
+ }
+
+ private boolean isTimeZoneSupported() {
+ return timeZoneSupported;
+ }
+
// builds from parent but not further then exclude builder
private String buildPartial(Builder exclude) {
if (parent != null && !parent.equals(exclude)) {
@@ -250,9 +275,13 @@ public class FiqlSearchConditionBuilder
private String toString(Date date) {
String s = df.format(date);
- // zone in XML is "+01:00" in Java is "+0100"; adding semicolon
- int len = s.length();
- return s.substring(0, len - 2) + ":" + s.substring(len - 2, len);
+ if (timeZoneSupported) {
+ // zone in XML is "+01:00" in Java is "+0100"; adding semicolon
+ int len = s.length();
+ return s.substring(0, len - 2) + ":" + s.substring(len - 2, len);
+ } else {
+ return s;
+ }
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/FiqlParserTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/FiqlParserTest.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/FiqlParserTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/FiqlParserTest.java Fri Mar 11 18:53:52 2011
@@ -22,7 +22,9 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.xml.datatype.DatatypeFactory;
@@ -142,9 +144,9 @@ public class FiqlParserTest extends Asse
}
@Test
- public void testParseDate() throws FiqlParseException, ParseException {
+ public void testParseDateWithDefaultFormat() throws FiqlParseException, ParseException {
SearchCondition<Condition> filter = parser.parse("time=le=2010-03-11T18:00:00.000+00:00");
- DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+ DateFormat df = new SimpleDateFormat(FiqlParser.DEFAULT_DATE_FORMAT);
assertTrue(filter.isMet(new Condition("whatever", 15, df.parse("2010-03-11T18:00:00.000+0000"))));
assertTrue(filter.isMet(new Condition(null, null, df.parse("2010-03-10T22:22:00.000+0000"))));
assertFalse(filter.isMet(new Condition("blah", null, df.parse("2010-03-12T00:00:00.000+0000"))));
@@ -152,6 +154,21 @@ public class FiqlParserTest extends Asse
}
@Test
+ public void testParseDateWithCustomFormat() throws FiqlParseException, ParseException {
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(SearchUtils.DATE_FORMAT_PROPERTY, "yyyy-MM-dd'T'HH:mm:ss");
+ props.put(SearchUtils.TIMEZONE_SUPPORT_PROPERTY, "false");
+ parser = new FiqlParser<Condition>(Condition.class, props);
+
+ SearchCondition<Condition> filter = parser.parse("time=le=2010-03-11T18:00:00");
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+ assertTrue(filter.isMet(new Condition("whatever", 15, df.parse("2010-03-11T18:00:00"))));
+ assertTrue(filter.isMet(new Condition(null, null, df.parse("2010-03-10T22:22:00"))));
+ assertFalse(filter.isMet(new Condition("blah", null, df.parse("2010-03-12T00:00:00"))));
+ assertFalse(filter.isMet(new Condition(null, 123, df.parse("2010-03-12T00:00:00"))));
+ }
+
+ @Test
public void testParseDateDuration() throws Exception {
SearchCondition<Condition> filter = parser.parse("time=gt=-PT1M");
Date now = new Date();
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java Fri Mar 11 18:53:52 2011
@@ -22,6 +22,8 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import java.util.TimeZone;
import javax.xml.datatype.DatatypeConfigurationException;
@@ -30,6 +32,7 @@ import javax.xml.datatype.Duration;
import static junit.framework.Assert.assertEquals;
+import org.apache.cxf.jaxrs.ext.search.SearchUtils;
import org.apache.cxf.jaxrs.ext.search.client.SearchConditionBuilder.PartialCondition;
import org.junit.AfterClass;
@@ -77,6 +80,21 @@ public class FiqlSearchConditionBuilderT
String ret = b.query().is("foo").equalTo(d).build();
assertEquals("foo==2011-03-01T12:34:00.000+00:00", ret);
}
+
+ @Test
+ public void testEqualToDateWithCustomFormat() throws ParseException {
+
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(SearchUtils.DATE_FORMAT_PROPERTY, "yyyy-MM-dd'T'HH:mm:ss");
+ props.put(SearchUtils.TIMEZONE_SUPPORT_PROPERTY, "false");
+
+ Date d = df.parse("2011-03-01 12:34 +0000");
+
+ FiqlSearchConditionBuilder bCustom = new FiqlSearchConditionBuilder(props);
+
+ String ret = bCustom.query().is("foo").equalTo(d).build();
+ assertEquals("foo==2011-03-01T12:34:00", ret);
+ }
@Test
public void testEqualToDuration() throws ParseException, DatatypeConfigurationException {
Modified: cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/LogRecord.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/LogRecord.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/LogRecord.java (original)
+++ cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/LogRecord.java Fri Mar 11 18:53:52 2011
@@ -63,7 +63,7 @@ public class LogRecord {
}
public LogRecord(LogRecord copy) {
- this.eventTimestamp = copy.getEventTimestamp();
+ this.eventTimestamp = copy.getDate();
this.level = copy.getLevel();
this.message = copy.getMessage();
this.loggerName = copy.getLoggerName();
@@ -84,7 +84,7 @@ public class LogRecord {
public static LogRecord fromJUL(java.util.logging.LogRecord julRecord) {
Validate.notNull(julRecord, "julRecord is null");
LogRecord record = new LogRecord();
- record.setEventTimestamp(new Date(julRecord.getMillis()));
+ record.setDate(new Date(julRecord.getMillis()));
record.setLevel(LogLevel.fromJUL(julRecord.getLevel()));
record.setLoggerName(julRecord.getLoggerName());
if (julRecord.getThrown() != null) {
@@ -106,13 +106,13 @@ public class LogRecord {
}
@XmlElement(namespace = "http://cxf.apache.org/log")
- public Date getEventTimestamp() {
+ public Date getDate() {
return eventTimestamp;
}
- public void setEventTimestamp(Date eventTimestamp) {
- Validate.notNull(eventTimestamp, "eventTimestamp is null");
- this.eventTimestamp = eventTimestamp;
+ public void setDate(Date date) {
+ Validate.notNull(date, "eventTimestamp is null");
+ this.eventTimestamp = date;
}
@XmlElement(namespace = "http://cxf.apache.org/log")
Modified: cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorage.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorage.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorage.java (original)
+++ cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorage.java Fri Mar 11 18:53:52 2011
@@ -239,7 +239,7 @@ public class ReadOnlyFileStorage impleme
String fileModifiedDate = logFileInfo.getFileModified();
logDate = fileModifiedDate != null ? fileModifiedDate + " " + logDate : logDate;
Date date = recordDateFormat.parse(logDate);
- record.setEventTimestamp(date);
+ record.setDate(date);
} catch (Exception ex) {
// ignore
}
Modified: cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java (original)
+++ cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java Fri Mar 11 18:53:52 2011
@@ -394,7 +394,7 @@ public class AtomPullServer extends Abst
sb.append("<tr><th>Date</th><th>Level</th><th>Logger</th><th>Message</th></tr>");
for (LogRecord lr : list) {
sb.append("<tr>");
- sb.append("<td>" + df.format(lr.getEventTimestamp()) + "</td>");
+ sb.append("<td>" + df.format(lr.getDate()) + "</td>");
sb.append("<td>" + lr.getLevel().toString() + "</td>");
sb.append("<td>" + lr.getLoggerName() + "</td>");
String message = null;
@@ -476,7 +476,7 @@ public class AtomPullServer extends Abst
private static class LogRecordComparator implements Comparator<LogRecord> {
public int compare(LogRecord r1, LogRecord r2) {
- return r1.getEventTimestamp().compareTo(r2.getEventTimestamp()) * -1;
+ return r1.getDate().compareTo(r2.getDate()) * -1;
}
}
Modified: cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/converter/StandardConverter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/converter/StandardConverter.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/converter/StandardConverter.java (original)
+++ cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/converter/StandardConverter.java Fri Mar 11 18:53:52 2011
@@ -218,7 +218,7 @@ public class StandardConverter implement
// forget about single line "addExtension().setText()" since
// javac failure "org.apache.abdera.model.Element cannot be dereferenced"
Element e = erec.addExtension(qn("eventTimestamp"));
- e.setText(toAtomDateFormat(record.getEventTimestamp()));
+ e.setText(toAtomDateFormat(record.getDate()));
e = erec.addExtension(qn("level"));
e.setText(record.getLevel().toString());
e = erec.addExtension(qn("loggerName"));
@@ -348,7 +348,7 @@ public class StandardConverter implement
entry.setSummary(records.get(0).getLoggerName() + " : " + records.get(0).getMessage());
}
if (records.size() > 0) {
- entry.setUpdated(toAtomDateFormat(records.get(0).getEventTimestamp()));
+ entry.setUpdated(toAtomDateFormat(records.get(0).getDate()));
}
}
}
Modified: cxf/trunk/rt/management-web/src/test/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorageTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/management-web/src/test/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorageTest.java?rev=1080726&r1=1080725&r2=1080726&view=diff
==============================================================================
--- cxf/trunk/rt/management-web/src/test/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorageTest.java (original)
+++ cxf/trunk/rt/management-web/src/test/java/org/apache/cxf/management/web/logging/ReadOnlyFileStorageTest.java Fri Mar 11 18:53:52 2011
@@ -24,8 +24,10 @@ import java.util.List;
import java.util.Map;
import org.apache.cxf.jaxrs.ext.search.ConditionType;
+import org.apache.cxf.jaxrs.ext.search.FiqlParser;
import org.apache.cxf.jaxrs.ext.search.PrimitiveSearchCondition;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
+import org.apache.cxf.jaxrs.ext.search.SearchUtils;
import org.junit.After;
import org.junit.Assert;
@@ -154,6 +156,58 @@ public class ReadOnlyFileStorageTest ext
}
@Test
+ public void testReadRecordsWithMultipleFilesAndSearchDates() throws Exception {
+
+ List<String> locations = new ArrayList<String>();
+ locations.add(getClass().getResource("logs/2011-01-22-karaf.log").toURI().getPath());
+ locations.add(getClass().getResource("logs/2011-01-23-karaf.log").toURI().getPath());
+ storage.setLogLocations(locations);
+
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(SearchUtils.DATE_FORMAT_PROPERTY, "yyyy-MM-dd'T'HH:mm:ss SSS");
+ props.put(SearchUtils.TIMEZONE_SUPPORT_PROPERTY, "false");
+ FiqlParser<LogRecord> parser = new FiqlParser<LogRecord>(LogRecord.class, props);
+
+ SearchCondition<LogRecord> sc = parser.parse("date==2011-01-22T11:49:17 184");
+
+ List<LogRecord> recordsFirstPage1 = readPage(1, sc, 2, 1);
+ List<LogRecord> recordsFirstPage2 = readPage(1, sc, 2, 1);
+ compareRecords(recordsFirstPage1, recordsFirstPage2);
+
+ LogRecord record = recordsFirstPage1.get(0);
+ assertEquals("Initializing Timer", record.getMessage());
+ }
+
+ @Test
+ public void testReadRecordsWithMultipleFilesAndSearchDates2() throws Exception {
+
+ List<String> locations = new ArrayList<String>();
+ locations.add(getClass().getResource("logs/2011-01-22-karaf.log").toURI().getPath());
+ locations.add(getClass().getResource("logs/2011-01-23-karaf.log").toURI().getPath());
+ storage.setLogLocations(locations);
+
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(SearchUtils.DATE_FORMAT_PROPERTY, "yyyy-MM-dd");
+ props.put(SearchUtils.TIMEZONE_SUPPORT_PROPERTY, "false");
+ FiqlParser<LogRecord> parser = new FiqlParser<LogRecord>(LogRecord.class, props);
+
+ SearchCondition<LogRecord> sc = parser.parse("date=lt=2011-01-23");
+
+ List<LogRecord> recordsFirstPage1 = readPage(1, sc, 32, 32);
+ readPage(2, sc, 32, 0);
+ List<LogRecord> recordsFirstPage2 = readPage(1, sc, 32, 32);
+
+ compareRecords(recordsFirstPage1, recordsFirstPage2);
+
+ LogRecord firstRecord = recordsFirstPage1.get(0);
+ assertEquals("Starting JMX OSGi agent", firstRecord.getMessage());
+ LogRecord lastRecord = recordsFirstPage1.get(31);
+ assertTrue(lastRecord.getMessage().contains("Pax Web available at"));
+
+ readPage(2, sc, 32, 0);
+ }
+
+ @Test
public void testReadRecordsWithMultipleFiles2() throws Exception {
List<String> locations = new ArrayList<String>();
@@ -212,7 +266,7 @@ public class ReadOnlyFileStorageTest ext
LogRecord r1 = records1.get(i);
LogRecord r2 = records2.get(i);
assertEquals(r1.getLevel(), r2.getLevel());
- assertEquals(r1.getEventTimestamp(), r2.getEventTimestamp());
+ assertEquals(r1.getDate(), r2.getDate());
assertEquals(r1.getMessage(), r2.getMessage());
}
}