From 9f87819fc754c941ae44dad149322330a8df8736 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Mon, 12 Jun 2017 07:22:05 +0200 Subject: [PATCH 001/836] Evaluation article: Different Types of Bean Injection in Spring --- .../java/com/baeldung/ConstructorApp.java | 15 ++++++ .../src/main/java/com/baeldung/SetterApp.java | 15 ++++++ .../main/java/com/baeldung/model/College.java | 32 +++++++++++++ .../main/java/com/baeldung/model/Student.java | 46 +++++++++++++++++++ .../main/resources/constructor-context.xml | 17 +++++++ .../src/main/resources/setter-context.xml | 19 ++++++++ 6 files changed, 144 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/ConstructorApp.java create mode 100644 spring-core/src/main/java/com/baeldung/SetterApp.java create mode 100644 spring-core/src/main/java/com/baeldung/model/College.java create mode 100644 spring-core/src/main/java/com/baeldung/model/Student.java create mode 100644 spring-core/src/main/resources/constructor-context.xml create mode 100644 spring-core/src/main/resources/setter-context.xml diff --git a/spring-core/src/main/java/com/baeldung/ConstructorApp.java b/spring-core/src/main/java/com/baeldung/ConstructorApp.java new file mode 100644 index 0000000000..89aa55d3b1 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/ConstructorApp.java @@ -0,0 +1,15 @@ +package com.baeldung; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.model.Student; + +public class ConstructorApp { + public static void main(String[] args) { + ApplicationContext context = new ClassPathXmlApplicationContext("constructor-context.xml"); + + Student student = (Student) context.getBean("student"); + student.introduceMyself(); + } +} diff --git a/spring-core/src/main/java/com/baeldung/SetterApp.java b/spring-core/src/main/java/com/baeldung/SetterApp.java new file mode 100644 index 0000000000..17de7db6dd --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/SetterApp.java @@ -0,0 +1,15 @@ +package com.baeldung; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.model.Student; + +public class SetterApp { + public static void main(String[] args) { + ApplicationContext context = new ClassPathXmlApplicationContext("setter-context.xml"); + + Student student = (Student) context.getBean("student"); + student.introduceMyself(); + } +} diff --git a/spring-core/src/main/java/com/baeldung/model/College.java b/spring-core/src/main/java/com/baeldung/model/College.java new file mode 100644 index 0000000000..0e55561fe7 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/model/College.java @@ -0,0 +1,32 @@ +package com.baeldung.model; + +public class College { + + private int id; + private String name; + + public College() { + } + + public College(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/spring-core/src/main/java/com/baeldung/model/Student.java b/spring-core/src/main/java/com/baeldung/model/Student.java new file mode 100644 index 0000000000..46f01cd32d --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/model/Student.java @@ -0,0 +1,46 @@ +package com.baeldung.model; + +public class Student { + + private int id; + private String name; + private College college; + + public Student() { + } + + public Student(int id, String name, College college) { + this.id = id; + this.name = name; + this.college = college; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public College getCollege() { + return college; + } + + public void setCollege(College college) { + this.college = college; + } + + public void introduceMyself() { + System.out.println("My ID is " + id + " and my name is " + name + ". I am a student at " + college.getName() + " College."); + } + +} diff --git a/spring-core/src/main/resources/constructor-context.xml b/spring-core/src/main/resources/constructor-context.xml new file mode 100644 index 0000000000..67d492a0d6 --- /dev/null +++ b/spring-core/src/main/resources/constructor-context.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/spring-core/src/main/resources/setter-context.xml b/spring-core/src/main/resources/setter-context.xml new file mode 100644 index 0000000000..e97bfb4b11 --- /dev/null +++ b/spring-core/src/main/resources/setter-context.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + \ No newline at end of file From ac2ce9636c1fef94bc0357bacc7b0283141c3f78 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 16 Jun 2017 13:57:37 +0200 Subject: [PATCH 002/836] added tests & changed configuration to Java-based config --- .../java/com/baeldung/ConstructorApp.java | 7 +++-- .../src/main/java/com/baeldung/SetterApp.java | 10 +++---- .../configuration/ConstructorConfig.java | 21 ++++++++++++++ .../baeldung/configuration/SetterConfig.java | 28 +++++++++++++++++++ .../configuration/ConstructorConfigTest.java | 22 +++++++++++++++ .../configuration/SetterConfigTest.java | 22 +++++++++++++++ 6 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java create mode 100644 spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java create mode 100644 spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java create mode 100644 spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java diff --git a/spring-core/src/main/java/com/baeldung/ConstructorApp.java b/spring-core/src/main/java/com/baeldung/ConstructorApp.java index 89aa55d3b1..3c66f74a36 100644 --- a/spring-core/src/main/java/com/baeldung/ConstructorApp.java +++ b/spring-core/src/main/java/com/baeldung/ConstructorApp.java @@ -1,15 +1,16 @@ package com.baeldung; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import com.baeldung.configuration.ConstructorConfig; import com.baeldung.model.Student; public class ConstructorApp { public static void main(String[] args) { - ApplicationContext context = new ClassPathXmlApplicationContext("constructor-context.xml"); - - Student student = (Student) context.getBean("student"); + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConstructorConfig.class); + Student student = context.getBean(Student.class); student.introduceMyself(); } } diff --git a/spring-core/src/main/java/com/baeldung/SetterApp.java b/spring-core/src/main/java/com/baeldung/SetterApp.java index 17de7db6dd..202f557f44 100644 --- a/spring-core/src/main/java/com/baeldung/SetterApp.java +++ b/spring-core/src/main/java/com/baeldung/SetterApp.java @@ -1,15 +1,13 @@ package com.baeldung; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import com.baeldung.configuration.SetterConfig; import com.baeldung.model.Student; public class SetterApp { public static void main(String[] args) { - ApplicationContext context = new ClassPathXmlApplicationContext("setter-context.xml"); - - Student student = (Student) context.getBean("student"); + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SetterConfig.class); + Student student = context.getBean(Student.class); student.introduceMyself(); } } diff --git a/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java b/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java new file mode 100644 index 0000000000..e1ebdcedca --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.model.College; +import com.baeldung.model.Student; + +@Configuration +public class ConstructorConfig { + + @Bean + public Student student() { + return new Student(1, "John", college()); + } + + @Bean + public College college() { + return new College(1, "New York"); + } +} diff --git a/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java b/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java new file mode 100644 index 0000000000..caaa70ee46 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java @@ -0,0 +1,28 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.model.College; +import com.baeldung.model.Student; + +@Configuration +public class SetterConfig { + + @Bean + public Student student() { + Student student = new Student(); + student.setId(2); + student.setName("Tom"); + student.setCollege(college()); + return student; + } + + @Bean + public College college() { + College college = new College(); + college.setId(2); + college.setName("Pittsburgh"); + return college; + } +} diff --git a/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java new file mode 100644 index 0000000000..a9f5165704 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java @@ -0,0 +1,22 @@ +package com.baeldung.configuration; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import com.baeldung.model.Student; + +public class ConstructorConfigTest { + + @Test + public void testConstructorDependencyInjection() { + ApplicationContext context = new AnnotationConfigApplicationContext(ConstructorConfig.class); + Student student = context.getBean(Student.class); + assertEquals(1, student.getId()); + assertEquals("John", student.getName()); + assertEquals(1, student.getCollege().getId()); + assertEquals("New York", student.getCollege().getName()); + } +} diff --git a/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java new file mode 100644 index 0000000000..5d687d0272 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java @@ -0,0 +1,22 @@ +package com.baeldung.configuration; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import com.baeldung.model.Student; + +public class SetterConfigTest { + + @Test + public void testConstructorDependencyInjection() { + ApplicationContext context = new AnnotationConfigApplicationContext(SetterConfig.class); + Student student = context.getBean(Student.class); + assertEquals(2, student.getId()); + assertEquals("Tom", student.getName()); + assertEquals(2, student.getCollege().getId()); + assertEquals("Pittsburgh", student.getCollege().getName()); + } +} From 5a8ec66b5dbf34d7c8ec5ec638d809a1bb759c09 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 16 Jun 2017 14:16:41 +0200 Subject: [PATCH 003/836] removed xml config files --- .../main/resources/constructor-context.xml | 17 ----------------- .../src/main/resources/setter-context.xml | 19 ------------------- 2 files changed, 36 deletions(-) delete mode 100644 spring-core/src/main/resources/constructor-context.xml delete mode 100644 spring-core/src/main/resources/setter-context.xml diff --git a/spring-core/src/main/resources/constructor-context.xml b/spring-core/src/main/resources/constructor-context.xml deleted file mode 100644 index 67d492a0d6..0000000000 --- a/spring-core/src/main/resources/constructor-context.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - diff --git a/spring-core/src/main/resources/setter-context.xml b/spring-core/src/main/resources/setter-context.xml deleted file mode 100644 index e97bfb4b11..0000000000 --- a/spring-core/src/main/resources/setter-context.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file From ee8bf9f7112e66f0cdc59a3b75942c982956df1c Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 16 Jun 2017 14:38:54 +0200 Subject: [PATCH 004/836] rename unit tests --- .../java/com/baeldung/configuration/ConstructorConfigTest.java | 2 +- .../test/java/com/baeldung/configuration/SetterConfigTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java index a9f5165704..5a80b8266b 100644 --- a/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java @@ -11,7 +11,7 @@ import com.baeldung.model.Student; public class ConstructorConfigTest { @Test - public void testConstructorDependencyInjection() { + public void whenContextLoaded_thenDependencyInjected() { ApplicationContext context = new AnnotationConfigApplicationContext(ConstructorConfig.class); Student student = context.getBean(Student.class); assertEquals(1, student.getId()); diff --git a/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java index 5d687d0272..3d11c42e50 100644 --- a/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java @@ -11,7 +11,7 @@ import com.baeldung.model.Student; public class SetterConfigTest { @Test - public void testConstructorDependencyInjection() { + public void whenContextLoaded_thenDependencyInjected() { ApplicationContext context = new AnnotationConfigApplicationContext(SetterConfig.class); Student student = context.getBean(Student.class); assertEquals(2, student.getId()); From 94fc522f7fd896ce44b84e28d08c13e20646c381 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 30 Jun 2017 03:34:57 +0200 Subject: [PATCH 005/836] BAEL-972 - Apache Commons Text --- libraries/pom.xml | 6 +++++ .../test/java/com/baeldung/text/DiffTest.java | 18 +++++++++++++ .../text/LongestCommonSubsequenceTest.java | 25 +++++++++++++++++++ .../com/baeldung/text/StrBuilderTest.java | 24 ++++++++++++++++++ .../com/baeldung/text/StrSubstitutorTest.java | 23 +++++++++++++++++ .../java/com/baeldung/text/WordUtilsTest.java | 23 +++++++++++++++++ 6 files changed, 119 insertions(+) create mode 100644 libraries/src/test/java/com/baeldung/text/DiffTest.java create mode 100644 libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java create mode 100644 libraries/src/test/java/com/baeldung/text/StrBuilderTest.java create mode 100644 libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java create mode 100644 libraries/src/test/java/com/baeldung/text/WordUtilsTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 56c94e013e..2aec319cbf 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -76,6 +76,11 @@ commons-lang3 ${commons-lang.version} + + org.apache.commons + commons-text + ${commons-text.version} + org.jasypt jasypt @@ -292,6 +297,7 @@ 0.7.0 3.2.4 3.5 + 1.1 1.9.2 1.2 3.21.0-GA diff --git a/libraries/src/test/java/com/baeldung/text/DiffTest.java b/libraries/src/test/java/com/baeldung/text/DiffTest.java new file mode 100644 index 0000000000..95370013b6 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/DiffTest.java @@ -0,0 +1,18 @@ +package com.baeldung.text; + +import org.apache.commons.text.diff.EditScript; +import org.apache.commons.text.diff.StringsComparator; +import org.junit.Assert; +import org.junit.Test; + +public class DiffTest { + + @Test + public void whenEditScript_thenCorrect() { + StringsComparator cmp = new StringsComparator("ABCFGH", "BCDEFG"); + EditScript script = cmp.getScript(); + int mod = script.getModifications(); + + Assert.assertEquals(4, mod); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java b/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java new file mode 100644 index 0000000000..80ca0cfbba --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java @@ -0,0 +1,25 @@ +package com.baeldung.text; + +import org.apache.commons.text.similarity.LongestCommonSubsequence; +import org.apache.commons.text.similarity.LongestCommonSubsequenceDistance; +import org.junit.Assert; +import org.junit.Test; + +public class LongestCommonSubsequenceTest { + + @Test + public void whenCompare_thenCorrect() { + LongestCommonSubsequence lcs = new LongestCommonSubsequence(); + int countLcs = lcs.apply("New York", "New Hampshire"); + + Assert.assertEquals(5, countLcs); + } + + @Test + public void whenCalculateDistance_thenCorrect() { + LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance(); + int countLcsd = lcsd.apply("New York", "New Hampshire"); + + Assert.assertEquals(11, countLcsd); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java new file mode 100644 index 0000000000..a8dbaadc5a --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java @@ -0,0 +1,24 @@ +package com.baeldung.text; + +import org.apache.commons.text.StrBuilder; +import org.junit.Assert; +import org.junit.Test; + +public class StrBuilderTest { + + @Test + public void whenReplaced_thenCorrect() { + StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); + strBuilder.replaceAll("example", "new"); + + Assert.assertEquals(new StrBuilder("new StrBuilder!"), strBuilder); + } + + @Test + public void whenCleared_thenEmpty() { + StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); + strBuilder.clear(); + + Assert.assertEquals(new StrBuilder(""), strBuilder); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java b/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java new file mode 100644 index 0000000000..24e6ff59c8 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java @@ -0,0 +1,23 @@ +package com.baeldung.text; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.text.StrSubstitutor; +import org.junit.Assert; +import org.junit.Test; + +public class StrSubstitutorTest { + + @Test + public void whenSubstituted_thenCorrect() { + Map substitutes = new HashMap<>(); + substitutes.put("name", "John"); + substitutes.put("college", "University of Stanford"); + String templateString = "My name is ${name} and I am a student at the ${college}."; + StrSubstitutor sub = new StrSubstitutor(substitutes); + String result = sub.replace(templateString); + + Assert.assertEquals("My name is John and I am a student at the University of Stanford.", result); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java b/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java new file mode 100644 index 0000000000..b9268d67b3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java @@ -0,0 +1,23 @@ +package com.baeldung.text; + +import org.apache.commons.text.WordUtils; +import org.junit.Assert; +import org.junit.Test; + +public class WordUtilsTest { + + @Test + public void whenCapitalized_thenCorrect() { + String toBeCapitalized = "to be capitalized!"; + String result = WordUtils.capitalize(toBeCapitalized); + + Assert.assertEquals("To Be Capitalized!", result); + } + + @Test + public void whenContainsWords_thenCorrect() { + boolean containsWords = WordUtils.containsAllWords("String to search", "to", "search"); + + Assert.assertTrue(containsWords); + } +} From e76cf9ca2630b7443e7346dd60886bce6eb03b34 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 30 Jun 2017 04:05:00 +0200 Subject: [PATCH 006/836] remove code from evaluation article --- .../configuration/ConstructorConfig.java | 21 --------- .../baeldung/configuration/SetterConfig.java | 28 ----------- .../main/java/com/baeldung/model/College.java | 32 ------------- .../main/java/com/baeldung/model/Student.java | 46 ------------------- .../configuration/ConstructorConfigTest.java | 22 --------- .../configuration/SetterConfigTest.java | 22 --------- 6 files changed, 171 deletions(-) delete mode 100644 spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java delete mode 100644 spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java delete mode 100644 spring-core/src/main/java/com/baeldung/model/College.java delete mode 100644 spring-core/src/main/java/com/baeldung/model/Student.java delete mode 100644 spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java delete mode 100644 spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java diff --git a/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java b/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java deleted file mode 100644 index e1ebdcedca..0000000000 --- a/spring-core/src/main/java/com/baeldung/configuration/ConstructorConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.configuration; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import com.baeldung.model.College; -import com.baeldung.model.Student; - -@Configuration -public class ConstructorConfig { - - @Bean - public Student student() { - return new Student(1, "John", college()); - } - - @Bean - public College college() { - return new College(1, "New York"); - } -} diff --git a/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java b/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java deleted file mode 100644 index caaa70ee46..0000000000 --- a/spring-core/src/main/java/com/baeldung/configuration/SetterConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.configuration; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import com.baeldung.model.College; -import com.baeldung.model.Student; - -@Configuration -public class SetterConfig { - - @Bean - public Student student() { - Student student = new Student(); - student.setId(2); - student.setName("Tom"); - student.setCollege(college()); - return student; - } - - @Bean - public College college() { - College college = new College(); - college.setId(2); - college.setName("Pittsburgh"); - return college; - } -} diff --git a/spring-core/src/main/java/com/baeldung/model/College.java b/spring-core/src/main/java/com/baeldung/model/College.java deleted file mode 100644 index 0e55561fe7..0000000000 --- a/spring-core/src/main/java/com/baeldung/model/College.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.model; - -public class College { - - private int id; - private String name; - - public College() { - } - - public College(int id, String name) { - this.id = id; - this.name = name; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - -} diff --git a/spring-core/src/main/java/com/baeldung/model/Student.java b/spring-core/src/main/java/com/baeldung/model/Student.java deleted file mode 100644 index 46f01cd32d..0000000000 --- a/spring-core/src/main/java/com/baeldung/model/Student.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.model; - -public class Student { - - private int id; - private String name; - private College college; - - public Student() { - } - - public Student(int id, String name, College college) { - this.id = id; - this.name = name; - this.college = college; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public College getCollege() { - return college; - } - - public void setCollege(College college) { - this.college = college; - } - - public void introduceMyself() { - System.out.println("My ID is " + id + " and my name is " + name + ". I am a student at " + college.getName() + " College."); - } - -} diff --git a/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java deleted file mode 100644 index 5a80b8266b..0000000000 --- a/spring-core/src/test/java/com/baeldung/configuration/ConstructorConfigTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.configuration; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; - -import com.baeldung.model.Student; - -public class ConstructorConfigTest { - - @Test - public void whenContextLoaded_thenDependencyInjected() { - ApplicationContext context = new AnnotationConfigApplicationContext(ConstructorConfig.class); - Student student = context.getBean(Student.class); - assertEquals(1, student.getId()); - assertEquals("John", student.getName()); - assertEquals(1, student.getCollege().getId()); - assertEquals("New York", student.getCollege().getName()); - } -} diff --git a/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java b/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java deleted file mode 100644 index 3d11c42e50..0000000000 --- a/spring-core/src/test/java/com/baeldung/configuration/SetterConfigTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.configuration; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; - -import com.baeldung.model.Student; - -public class SetterConfigTest { - - @Test - public void whenContextLoaded_thenDependencyInjected() { - ApplicationContext context = new AnnotationConfigApplicationContext(SetterConfig.class); - Student student = context.getBean(Student.class); - assertEquals(2, student.getId()); - assertEquals("Tom", student.getName()); - assertEquals(2, student.getCollege().getId()); - assertEquals("Pittsburgh", student.getCollege().getName()); - } -} From c26eaf869650ae634df2256cba6bd95789c5c026 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 30 Jun 2017 04:06:35 +0200 Subject: [PATCH 007/836] remove code from evaluation article --- .../main/java/com/baeldung/ConstructorApp.java | 16 ---------------- .../src/main/java/com/baeldung/SetterApp.java | 13 ------------- 2 files changed, 29 deletions(-) delete mode 100644 spring-core/src/main/java/com/baeldung/ConstructorApp.java delete mode 100644 spring-core/src/main/java/com/baeldung/SetterApp.java diff --git a/spring-core/src/main/java/com/baeldung/ConstructorApp.java b/spring-core/src/main/java/com/baeldung/ConstructorApp.java deleted file mode 100644 index 3c66f74a36..0000000000 --- a/spring-core/src/main/java/com/baeldung/ConstructorApp.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import com.baeldung.configuration.ConstructorConfig; -import com.baeldung.model.Student; - -public class ConstructorApp { - public static void main(String[] args) { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConstructorConfig.class); - Student student = context.getBean(Student.class); - student.introduceMyself(); - } -} diff --git a/spring-core/src/main/java/com/baeldung/SetterApp.java b/spring-core/src/main/java/com/baeldung/SetterApp.java deleted file mode 100644 index 202f557f44..0000000000 --- a/spring-core/src/main/java/com/baeldung/SetterApp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung; - -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import com.baeldung.configuration.SetterConfig; -import com.baeldung.model.Student; - -public class SetterApp { - public static void main(String[] args) { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SetterConfig.class); - Student student = context.getBean(Student.class); - student.introduceMyself(); - } -} From 760d4e1a913be06e80b5081faf384212e810d367 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 1 Jul 2017 02:50:24 +0200 Subject: [PATCH 008/836] BAEL-972 - Apache Commons Text - added another example --- .../com/baeldung/text/UnicodeEscaperTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java diff --git a/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java b/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java new file mode 100644 index 0000000000..5a52bfd0db --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java @@ -0,0 +1,16 @@ +package com.baeldung.text; + +import org.apache.commons.text.translate.UnicodeEscaper; +import org.junit.Assert; +import org.junit.Test; + +public class UnicodeEscaperTest { + + @Test + public void whenTranslate_thenCorrect() { + UnicodeEscaper ue = UnicodeEscaper.above(0); + String result = ue.translate("ABCD"); + + Assert.assertEquals("\\u0041\\u0042\\u0043\\u0044", result); + } +} From 7d87b3aeb7ac35b2721f0e02b10a127b02d16e50 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 2 Jul 2017 19:44:44 +0200 Subject: [PATCH 009/836] BAEL-972 - Apache Commons Text - just indentation --- .../src/test/java/com/baeldung/text/StrBuilderTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java index a8dbaadc5a..38cc6de052 100644 --- a/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java +++ b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java @@ -5,20 +5,20 @@ import org.junit.Assert; import org.junit.Test; public class StrBuilderTest { - + @Test public void whenReplaced_thenCorrect() { StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); strBuilder.replaceAll("example", "new"); - + Assert.assertEquals(new StrBuilder("new StrBuilder!"), strBuilder); } - + @Test public void whenCleared_thenEmpty() { StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); strBuilder.clear(); - + Assert.assertEquals(new StrBuilder(""), strBuilder); } } From d184aa3920b541bd1b8b9f292226aa1bf3004055 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 8 Jul 2017 04:45:52 +0200 Subject: [PATCH 010/836] BAEL-994 - TemporalAdjuster in Java --- .../CustomTemporalAdjuster.java | 23 +++++++ .../TemporalAdjusterUtil.java | 31 +++++++++ .../CustomTemporalAdjusterTest.java | 63 +++++++++++++++++++ .../TemporalAdjustersTest.java | 29 +++++++++ 4 files changed, 146 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java create mode 100644 core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java create mode 100644 core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java create mode 100644 core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java diff --git a/core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java b/core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java new file mode 100644 index 0000000000..ab491bee66 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java @@ -0,0 +1,23 @@ +package com.baeldung.temporaladjuster; + +import java.time.DayOfWeek; +import java.time.temporal.ChronoField; +import java.time.temporal.ChronoUnit; +import java.time.temporal.Temporal; +import java.time.temporal.TemporalAdjuster; + +public class CustomTemporalAdjuster implements TemporalAdjuster { + + @Override + public Temporal adjustInto(Temporal temporal) { + DayOfWeek dayOfWeek = DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); + int daysToAdd; + if (dayOfWeek == DayOfWeek.FRIDAY) + daysToAdd = 3; + else if (dayOfWeek == DayOfWeek.SATURDAY) + daysToAdd = 2; + else + daysToAdd = 1; + return temporal.plus(daysToAdd, ChronoUnit.DAYS); + } +} diff --git a/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java b/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java new file mode 100644 index 0000000000..1a1528456e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java @@ -0,0 +1,31 @@ +package com.baeldung.temporaladjuster; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class TemporalAdjusterUtil { + + public static Calendar nextDayOfWeek(int dayOfWeek) { + Calendar date = Calendar.getInstance(); + int difference = dayOfWeek - date.get(Calendar.DAY_OF_WEEK); + if (!(difference > 0)) { + difference += 7; + } + date.add(Calendar.DAY_OF_MONTH, difference); + return date; + } + + @SuppressWarnings("static-access") + public static String getNextWorkingDay() { + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + format.setCalendar(calendar); + if (calendar.DAY_OF_WEEK == Calendar.FRIDAY) + calendar.add(Calendar.DATE, 3); + if (calendar.DAY_OF_WEEK == Calendar.SATURDAY) + calendar.add(Calendar.DATE, 2); + else + calendar.add(Calendar.DATE, 1); + return format.format(calendar.getTime()); + } +} diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java new file mode 100644 index 0000000000..10dce5c498 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java @@ -0,0 +1,63 @@ +package com.baeldung.temporaladjusters; + +import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.Period; +import java.time.temporal.TemporalAdjuster; +import java.time.temporal.TemporalAdjusters; +import java.util.Calendar; + +import org.junit.Assert; +import org.junit.Test; + +import com.baeldung.temporaladjuster.CustomTemporalAdjuster; +import com.baeldung.temporaladjuster.TemporalAdjusterUtil; + +public class CustomTemporalAdjusterTest { + + @Test + public void whenAdjustAndImplementInterface_thenNextWorkingDay() { + LocalDate localDate = LocalDate.now(); + CustomTemporalAdjuster temporalAdjuster = new CustomTemporalAdjuster(); + LocalDate nextWorkingDay = localDate.with(temporalAdjuster); + + Assert.assertEquals(TemporalAdjusterUtil.getNextWorkingDay(), nextWorkingDay.toString()); + } + + @Test + public void whenAdjust_thenNextWorkingDay() { + LocalDate localDate = LocalDate.now(); + TemporalAdjuster temporalAdjuster = NEXT_WORKING_DAY; + LocalDate date = localDate.with(temporalAdjuster); + + Assert.assertEquals(TemporalAdjusterUtil.getNextWorkingDay(), date.toString()); + } + + @Test + public void whenAdjust_thenFourteenDaysFromToday() { + LocalDate localDate = LocalDate.now(); + TemporalAdjuster temporalAdjuster = (t) -> t.plus(Period.ofDays(14)); + LocalDate result = localDate.with(temporalAdjuster); + + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + format.setCalendar(calendar); + calendar.add(Calendar.DATE, 14); + String fourteenDaysFromToday = format.format(calendar.getTime()); + + Assert.assertEquals(fourteenDaysFromToday, result.toString()); + } + + static TemporalAdjuster NEXT_WORKING_DAY = TemporalAdjusters.ofDateAdjuster(today -> { + DayOfWeek dayOfWeek = today.getDayOfWeek(); + int daysToAdd; + if (dayOfWeek == DayOfWeek.FRIDAY) + daysToAdd = 3; + else if (dayOfWeek == DayOfWeek.SATURDAY) + daysToAdd = 2; + else + daysToAdd = 1; + return today.plusDays(daysToAdd); + }); +} diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java new file mode 100644 index 0000000000..f21da5cf75 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java @@ -0,0 +1,29 @@ +package com.baeldung.temporaladjusters; + +import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjusters; +import java.util.Calendar; + +import org.junit.Assert; +import org.junit.Test; + +import com.baeldung.temporaladjuster.TemporalAdjusterUtil; + +public class TemporalAdjustersTest { + + @Test + public void whenAdjust_thenNextSunday() { + LocalDate localDate = LocalDate.now(); + LocalDate nextSunday = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); + + Calendar calendar = TemporalAdjusterUtil.nextDayOfWeek(Calendar.SUNDAY); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + format.setCalendar(calendar); + String formattedDate = format.format(calendar.getTime()); + + Assert.assertEquals(formattedDate, nextSunday.toString()); + } + +} From 236ac77db11ef38a62f71cf4e8e19039254dc89a Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 8 Jul 2017 14:31:29 +0200 Subject: [PATCH 011/836] BAEL-994 - TemporalAdjuster in Java --- .../temporaladjusters/CustomTemporalAdjusterTest.java | 10 ++-------- .../temporaladjusters/TemporalAdjustersTest.java | 11 ++--------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java index 10dce5c498..9e5ba5b158 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java @@ -1,12 +1,10 @@ package com.baeldung.temporaladjusters; -import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.Period; import java.time.temporal.TemporalAdjuster; import java.time.temporal.TemporalAdjusters; -import java.util.Calendar; import org.junit.Assert; import org.junit.Test; @@ -24,7 +22,7 @@ public class CustomTemporalAdjusterTest { Assert.assertEquals(TemporalAdjusterUtil.getNextWorkingDay(), nextWorkingDay.toString()); } - + @Test public void whenAdjust_thenNextWorkingDay() { LocalDate localDate = LocalDate.now(); @@ -40,11 +38,7 @@ public class CustomTemporalAdjusterTest { TemporalAdjuster temporalAdjuster = (t) -> t.plus(Period.ofDays(14)); LocalDate result = localDate.with(temporalAdjuster); - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - format.setCalendar(calendar); - calendar.add(Calendar.DATE, 14); - String fourteenDaysFromToday = format.format(calendar.getTime()); + String fourteenDaysFromToday = "2017-07-22"; Assert.assertEquals(fourteenDaysFromToday, result.toString()); } diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java index f21da5cf75..b80668e09b 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java @@ -1,16 +1,12 @@ package com.baeldung.temporaladjusters; -import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; -import java.util.Calendar; import org.junit.Assert; import org.junit.Test; -import com.baeldung.temporaladjuster.TemporalAdjusterUtil; - public class TemporalAdjustersTest { @Test @@ -18,12 +14,9 @@ public class TemporalAdjustersTest { LocalDate localDate = LocalDate.now(); LocalDate nextSunday = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); - Calendar calendar = TemporalAdjusterUtil.nextDayOfWeek(Calendar.SUNDAY); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - format.setCalendar(calendar); - String formattedDate = format.format(calendar.getTime()); + String expected = "2017-07-09"; - Assert.assertEquals(formattedDate, nextSunday.toString()); + Assert.assertEquals(expected, nextSunday.toString()); } } From 62efeccfd090ec683f2b236d2bd115233f552f6b Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 8 Jul 2017 23:24:05 +0200 Subject: [PATCH 012/836] BAEL-994 - TemporalAdjuster in Java --- .../TemporalAdjusterUtil.java | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java diff --git a/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java b/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java deleted file mode 100644 index 1a1528456e..0000000000 --- a/core-java/src/main/java/com/baeldung/temporaladjuster/TemporalAdjusterUtil.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.temporaladjuster; - -import java.text.SimpleDateFormat; -import java.util.Calendar; - -public class TemporalAdjusterUtil { - - public static Calendar nextDayOfWeek(int dayOfWeek) { - Calendar date = Calendar.getInstance(); - int difference = dayOfWeek - date.get(Calendar.DAY_OF_WEEK); - if (!(difference > 0)) { - difference += 7; - } - date.add(Calendar.DAY_OF_MONTH, difference); - return date; - } - - @SuppressWarnings("static-access") - public static String getNextWorkingDay() { - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - format.setCalendar(calendar); - if (calendar.DAY_OF_WEEK == Calendar.FRIDAY) - calendar.add(Calendar.DATE, 3); - if (calendar.DAY_OF_WEEK == Calendar.SATURDAY) - calendar.add(Calendar.DATE, 2); - else - calendar.add(Calendar.DATE, 1); - return format.format(calendar.getTime()); - } -} From dc9ee11a796e81cc21c6d7b11900925fdd300ea8 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 8 Jul 2017 23:26:40 +0200 Subject: [PATCH 013/836] BAEL-994 - TemporalAdjuster in Java --- .../CustomTemporalAdjusterTest.java | 23 +++++++++---------- .../TemporalAdjustersTest.java | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java index 9e5ba5b158..a7acc9f743 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java @@ -10,41 +10,40 @@ import org.junit.Assert; import org.junit.Test; import com.baeldung.temporaladjuster.CustomTemporalAdjuster; -import com.baeldung.temporaladjuster.TemporalAdjusterUtil; public class CustomTemporalAdjusterTest { @Test public void whenAdjustAndImplementInterface_thenNextWorkingDay() { - LocalDate localDate = LocalDate.now(); + LocalDate localDate = LocalDate.of(2017, 07, 8); CustomTemporalAdjuster temporalAdjuster = new CustomTemporalAdjuster(); LocalDate nextWorkingDay = localDate.with(temporalAdjuster); - Assert.assertEquals(TemporalAdjusterUtil.getNextWorkingDay(), nextWorkingDay.toString()); + Assert.assertEquals("2017-07-10", nextWorkingDay.toString()); } @Test public void whenAdjust_thenNextWorkingDay() { - LocalDate localDate = LocalDate.now(); + LocalDate localDate = LocalDate.of(2017, 07, 8); TemporalAdjuster temporalAdjuster = NEXT_WORKING_DAY; LocalDate date = localDate.with(temporalAdjuster); - Assert.assertEquals(TemporalAdjusterUtil.getNextWorkingDay(), date.toString()); + Assert.assertEquals("2017-07-10", date.toString()); } @Test - public void whenAdjust_thenFourteenDaysFromToday() { - LocalDate localDate = LocalDate.now(); + public void whenAdjust_thenFourteenDaysAfterDate() { + LocalDate localDate = LocalDate.of(2017, 07, 8); TemporalAdjuster temporalAdjuster = (t) -> t.plus(Period.ofDays(14)); LocalDate result = localDate.with(temporalAdjuster); - String fourteenDaysFromToday = "2017-07-22"; + String fourteenDaysAfterDate = "2017-07-22"; - Assert.assertEquals(fourteenDaysFromToday, result.toString()); + Assert.assertEquals(fourteenDaysAfterDate, result.toString()); } - static TemporalAdjuster NEXT_WORKING_DAY = TemporalAdjusters.ofDateAdjuster(today -> { - DayOfWeek dayOfWeek = today.getDayOfWeek(); + static TemporalAdjuster NEXT_WORKING_DAY = TemporalAdjusters.ofDateAdjuster(date -> { + DayOfWeek dayOfWeek = date.getDayOfWeek(); int daysToAdd; if (dayOfWeek == DayOfWeek.FRIDAY) daysToAdd = 3; @@ -52,6 +51,6 @@ public class CustomTemporalAdjusterTest { daysToAdd = 2; else daysToAdd = 1; - return today.plusDays(daysToAdd); + return date.plusDays(daysToAdd); }); } diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java index b80668e09b..d06da5a782 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java @@ -11,7 +11,7 @@ public class TemporalAdjustersTest { @Test public void whenAdjust_thenNextSunday() { - LocalDate localDate = LocalDate.now(); + LocalDate localDate = LocalDate.of(2017, 07, 8); LocalDate nextSunday = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); String expected = "2017-07-09"; From 0b60c211222eef04ddc78cf854c6c269395ff1f4 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 9 Jul 2017 00:46:20 +0200 Subject: [PATCH 014/836] BAEL-994 - TemporalAdjuster in Java - fix problems --- .../temporaladjusters/CustomTemporalAdjusterTest.java | 4 ---- .../baeldung/temporaladjusters/TemporalAdjustersTest.java | 6 ------ 2 files changed, 10 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java index 8ac57a8816..a7acc9f743 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java @@ -1,15 +1,11 @@ package com.baeldung.temporaladjusters; -import java.text.SimpleDateFormat; - import java.time.DayOfWeek; import java.time.LocalDate; import java.time.Period; import java.time.temporal.TemporalAdjuster; import java.time.temporal.TemporalAdjusters; -import java.util.Calendar; - import org.junit.Assert; import org.junit.Test; diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java index 707ba7a5c0..d06da5a782 100644 --- a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java +++ b/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java @@ -4,15 +4,9 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; -import java.text.SimpleDateFormat; - -import java.util.Calendar; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.temporaladjuster.TemporalAdjusterUtil; - public class TemporalAdjustersTest { @Test From 344fdce2a0bb632a20ac4ac4e850709508c9ea70 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 30 Jul 2017 02:35:46 +0200 Subject: [PATCH 015/836] BAEL-1033 Introduction to StreamUtils --- .../com/baeldung/streamutils/DrainStream.java | 11 ++ .../baeldung/streamutils/CopyStreamTest.java | 110 ++++++++++++++++++ libraries/src/test/resources/input.txt | 1 + libraries/src/test/resources/output.txt | 1 + 4 files changed, 123 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/streamutils/DrainStream.java create mode 100644 libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java create mode 100644 libraries/src/test/resources/input.txt create mode 100644 libraries/src/test/resources/output.txt diff --git a/libraries/src/main/java/com/baeldung/streamutils/DrainStream.java b/libraries/src/main/java/com/baeldung/streamutils/DrainStream.java new file mode 100644 index 0000000000..6ee4a1ef3a --- /dev/null +++ b/libraries/src/main/java/com/baeldung/streamutils/DrainStream.java @@ -0,0 +1,11 @@ +package com.baeldung.streamutils; + +import java.io.InputStream; + +import org.springframework.util.StreamUtils; + +public class DrainStream { + public InputStream getInputStream() { + return StreamUtils.emptyInput(); + } +} diff --git a/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java b/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java new file mode 100644 index 0000000000..fd57b602d6 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java @@ -0,0 +1,110 @@ +package com.baeldung.streamutils; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; +import org.springframework.util.StreamUtils; + +public class CopyStreamTest { + + @Test + public void whenCopyInputStreamToOutputStream_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + InputStream in = new FileInputStream(inputFileName); + OutputStream out = new FileOutputStream(outputFileName); + + StreamUtils.copy(in, out); + + assertTrue(outputFile.exists()); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(inputFileContent, outputFileContent); + } + + @Test + public void whenCopyRangeOfInputStreamToOutputStream_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + InputStream in = new FileInputStream(inputFileName); + OutputStream out = new FileOutputStream(outputFileName); + + StreamUtils.copyRange(in, out, 1, 10); + + assertTrue(outputFile.exists()); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(inputFileContent.substring(1, 11), outputFileContent); + } + + @Test + public void whenCopyStringToOutputStream_thenCorrect() throws IOException { + String string = "Should be copied to OutputStream."; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + OutputStream out = new FileOutputStream("src/test/resources/output.txt"); + + StreamUtils.copy(string, StandardCharsets.UTF_8, out); + + assertTrue(outputFile.exists()); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(outputFileContent, string); + } + + @Test + public void whenCopyInputStreamToString_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + InputStream is = new FileInputStream(inputFileName); + String content = StreamUtils.copyToString(is, StandardCharsets.UTF_8); + + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + Assert.assertEquals(inputFileContent, content); + } + + @Test + public void whenCopyByteArrayToOutputStream_thenCorrect() throws IOException { + String outputFileName = "src/test/resources/output.txt"; + String string = "Should be copied to OutputStream."; + byte[] byteArray = string.getBytes(); + OutputStream out = new FileOutputStream("src/test/resources/output.txt"); + + StreamUtils.copy(byteArray, out); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(outputFileContent, string); + } + + @Test + public void whenCopyInputStreamToByteArray_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + InputStream in = new FileInputStream(inputFileName); + byte[] out = StreamUtils.copyToByteArray(in); + + String content = new String(out); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + Assert.assertEquals(inputFileContent, content); + } + + public static String getStringFromInputStream(InputStream input) throws IOException { + StringWriter writer = new StringWriter(); + IOUtils.copy(input, writer, "UTF-8"); + return writer.toString(); + } + + public InputStream getNonClosingInputStream() throws IOException { + InputStream in = new FileInputStream("src/test/resources/input.txt"); + return StreamUtils.nonClosing(in); + } +} diff --git a/libraries/src/test/resources/input.txt b/libraries/src/test/resources/input.txt new file mode 100644 index 0000000000..811232fa1f --- /dev/null +++ b/libraries/src/test/resources/input.txt @@ -0,0 +1 @@ +This file is merely for testing. \ No newline at end of file diff --git a/libraries/src/test/resources/output.txt b/libraries/src/test/resources/output.txt new file mode 100644 index 0000000000..34e1e27d5a --- /dev/null +++ b/libraries/src/test/resources/output.txt @@ -0,0 +1 @@ +Should be copied to OutputStream. \ No newline at end of file From ece39cb6891185a3c30d3a8a6c7fda00b35b56fd Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 30 Jul 2017 03:13:37 +0200 Subject: [PATCH 016/836] BAEL-1033 Introduction to StreamUtils --- .../com/baeldung/streamutils/CopyStream.java | 22 +++++++++++++++++++ .../baeldung/streamutils/CopyStreamTest.java | 14 ++---------- 2 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 libraries/src/main/java/com/baeldung/streamutils/CopyStream.java diff --git a/libraries/src/main/java/com/baeldung/streamutils/CopyStream.java b/libraries/src/main/java/com/baeldung/streamutils/CopyStream.java new file mode 100644 index 0000000000..430759f3a0 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/streamutils/CopyStream.java @@ -0,0 +1,22 @@ +package com.baeldung.streamutils; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import org.apache.commons.io.IOUtils; +import org.springframework.util.StreamUtils; + +public class CopyStream { + public static String getStringFromInputStream(InputStream input) throws IOException { + StringWriter writer = new StringWriter(); + IOUtils.copy(input, writer, "UTF-8"); + return writer.toString(); + } + + public InputStream getNonClosingInputStream() throws IOException { + InputStream in = new FileInputStream("src/test/resources/input.txt"); + return StreamUtils.nonClosing(in); + } +} diff --git a/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java b/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java index fd57b602d6..9a65075e5b 100644 --- a/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java +++ b/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java @@ -8,14 +8,14 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.StringWriter; import java.nio.charset.StandardCharsets; -import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Test; import org.springframework.util.StreamUtils; +import static com.baeldung.streamutils.CopyStream.getStringFromInputStream; + public class CopyStreamTest { @Test @@ -97,14 +97,4 @@ public class CopyStreamTest { Assert.assertEquals(inputFileContent, content); } - public static String getStringFromInputStream(InputStream input) throws IOException { - StringWriter writer = new StringWriter(); - IOUtils.copy(input, writer, "UTF-8"); - return writer.toString(); - } - - public InputStream getNonClosingInputStream() throws IOException { - InputStream in = new FileInputStream("src/test/resources/input.txt"); - return StreamUtils.nonClosing(in); - } } From 52745f2a1c24608cba3549c95ba0a72b27ac4f16 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 30 Jul 2017 19:26:24 +0200 Subject: [PATCH 017/836] BAEL-1033 Introduction to StreamUtils --- spring-core/pom.xml | 260 +++++++++--------- .../com/baeldung/streamutils/CopyStream.java | 0 .../com/baeldung/streamutils/DrainStream.java | 0 .../baeldung/streamutils/CopyStreamTest.java | 0 .../src/test/resources/input.txt | 0 .../src/test/resources/output.txt | 0 6 files changed, 133 insertions(+), 127 deletions(-) rename {libraries => spring-core}/src/main/java/com/baeldung/streamutils/CopyStream.java (100%) rename {libraries => spring-core}/src/main/java/com/baeldung/streamutils/DrainStream.java (100%) rename {libraries => spring-core}/src/test/java/com/baeldung/streamutils/CopyStreamTest.java (100%) rename {libraries => spring-core}/src/test/resources/input.txt (100%) rename {libraries => spring-core}/src/test/resources/output.txt (100%) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 85cf4573aa..9d9e9838d3 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -1,141 +1,147 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - 4.0.0 + 4.0.0 - com.baeldung - spring-core - 0.0.1-SNAPSHOT - war + com.baeldung + spring-core + 0.0.1-SNAPSHOT + war - spring-core + spring-core - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + - - - org.mockito - mockito-all - ${mockito.version} - - - org.springframework - spring-test - ${spring.version} - - - org.springframework - spring-core - ${spring.version} - - - org.springframework - spring-beans - ${spring.version} - - - org.springframework - spring-context - ${spring.version} - - - javax.inject - javax.inject - ${javax.inject.version} - - - com.google.guava - guava - ${guava.version} - - - org.projectlombok - lombok - ${lombok.version} - - - org.springframework.boot - spring-boot-starter - 1.5.2.RELEASE - - - org.springframework.boot - spring-boot-test - ${mockito.spring.boot.version} - test - - + + + org.mockito + mockito-all + ${mockito.version} + + + org.springframework + spring-test + ${spring.version} + + + org.springframework + spring-core + ${spring.version} + + + org.springframework + spring-beans + ${spring.version} + + + org.springframework + spring-context + ${spring.version} + + + javax.inject + javax.inject + ${javax.inject.version} + + + com.google.guava + guava + ${guava.version} + + + org.projectlombok + lombok + ${lombok.version} + + + org.springframework.boot + spring-boot-starter + 1.5.2.RELEASE + + + org.springframework.boot + spring-boot-test + ${mockito.spring.boot.version} + test + + + commons-io + commons-io + ${commons.io.version} + + - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - false - - + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + false + + - + - + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + - - 1.10.19 - 1.4.4.RELEASE - 4.3.4.RELEASE - 1 - 20.0 - 2.6 - 1.16.12 - + + 1.10.19 + 1.4.4.RELEASE + 4.3.4.RELEASE + 1 + 20.0 + 2.6 + 1.16.12 + 2.5 + - - - java.net - https://maven.java.net/content/repositories/releases/ - - + + + java.net + https://maven.java.net/content/repositories/releases/ + + diff --git a/libraries/src/main/java/com/baeldung/streamutils/CopyStream.java b/spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java similarity index 100% rename from libraries/src/main/java/com/baeldung/streamutils/CopyStream.java rename to spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java diff --git a/libraries/src/main/java/com/baeldung/streamutils/DrainStream.java b/spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java similarity index 100% rename from libraries/src/main/java/com/baeldung/streamutils/DrainStream.java rename to spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java diff --git a/libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java b/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/streamutils/CopyStreamTest.java rename to spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java diff --git a/libraries/src/test/resources/input.txt b/spring-core/src/test/resources/input.txt similarity index 100% rename from libraries/src/test/resources/input.txt rename to spring-core/src/test/resources/input.txt diff --git a/libraries/src/test/resources/output.txt b/spring-core/src/test/resources/output.txt similarity index 100% rename from libraries/src/test/resources/output.txt rename to spring-core/src/test/resources/output.txt From 65e2f5968158dc579030e3f9476c8dccdd58963d Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Sun, 30 Jul 2017 22:27:38 +0200 Subject: [PATCH 018/836] Matchers is now deprecated in Mockito 2, it's now replaced by ArgumentMatchers --- .../baeldung/mocks/mockito/LoginControllerIntegrationTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerIntegrationTest.java b/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerIntegrationTest.java index 8f8918ab22..9d47b2f5d4 100644 --- a/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerIntegrationTest.java +++ b/mocks/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerIntegrationTest.java @@ -8,6 +8,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentMatcher; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -120,7 +121,7 @@ public class LoginControllerIntegrationTest { .login(userForm); // complex matcher Mockito.verify(loginService) - .setCurrentUser(Mockito.argThat(new ArgumentMatcher() { + .setCurrentUser(ArgumentMatchers.argThat(new ArgumentMatcher() { @Override public boolean matches(String argument) { return argument.startsWith("foo"); From 4f2857deb5d31e577fe88c695bf742fbff7eff1e Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 30 Jul 2017 23:04:14 +0200 Subject: [PATCH 019/836] fix formatting --- libraries/pom.xml | 986 +++++++++--------- spring-core/pom.xml | 2 +- .../com/baeldung/streamutils/CopyStream.java | 18 +- .../com/baeldung/streamutils/DrainStream.java | 6 +- .../baeldung/streamutils/CopyStreamTest.java | 128 +-- 5 files changed, 570 insertions(+), 570 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index a655f5267a..795f255f36 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -1,497 +1,497 @@ - - parent-modules - com.baeldung - 1.0.0-SNAPSHOT - - 4.0.0 - libraries - libraries - - - - org.apache.maven.plugins - maven-dependency-plugin - - - org.apache.felix - maven-bundle-plugin - 3.3.0 - maven-plugin + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + 4.0.0 + libraries + libraries + + + + org.apache.maven.plugins + maven-dependency-plugin + + + org.apache.felix + maven-bundle-plugin + 3.3.0 + maven-plugin - - - true - - - maven-failsafe-plugin - 2.20 - - - chromedriver - - - - - net.serenity-bdd.maven.plugins - serenity-maven-plugin - ${serenity.plugin.version} - - - serenity-reports - post-integration-test - - aggregate - - - - - - - org.datanucleus - datanucleus-maven-plugin - 5.0.2 - - JDO - ${basedir}/datanucleus.properties - ${basedir}/log4j.properties - true - false - - - - - process-classes - - enhance - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.0.2 - - - **/log4j.properties - - - - com.baeldung.neuroph.NeurophXOR - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.18.1 - - - test - test - - test - - - - test/java/com/baeldung/neuroph/XORTest.java - - - - - - - - - - - - org.beykery - neuroph - ${neuroph.version} - - - - cglib - cglib - ${cglib.version} - - - commons-beanutils - commons-beanutils - ${commons-beanutils.version} - - - org.apache.commons - commons-lang3 - ${commons-lang.version} - - - org.apache.commons - commons-text - ${commons-text.version} - - - org.apache.commons - commons-collections4 - ${commons.collections.version} - - - org.jasypt - jasypt - ${jasypt.version} - - - org.javatuples - javatuples - ${javatuples.version} - - - org.javassist - javassist - ${javaassist.version} - - - - org.assertj - assertj-core - ${assertj.version} - - - org.skyscreamer - jsonassert - ${jsonassert.version} - - - org.javers - javers-core - ${javers.version} - - - org.eclipse.jetty - jetty-server - ${jetty.version} - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - commons-logging - commons-logging - - - - - commons-io - commons-io - ${commons.io.version} - - - commons-chain - commons-chain - ${commons-chain.version} - - - commons-dbutils - commons-dbutils - ${commons.dbutils.version} - - - org.apache.flink - flink-core - ${flink.version} - - - commons-logging - commons-logging - - - - - org.apache.flink - flink-java - ${flink.version} - - - commons-logging - commons-logging - - - - - org.apache.flink - flink-test-utils_2.10 - ${flink.version} - test - - - org.apache.commons - commons-math3 - 3.6.1 - - - net.serenity-bdd - serenity-core - ${serenity.version} - test - - - net.serenity-bdd - serenity-junit - ${serenity.version} - test - - - net.serenity-bdd - serenity-jbehave - ${serenity.jbehave.version} - test - - - net.serenity-bdd - serenity-rest-assured - ${serenity.version} - test - - - net.serenity-bdd - serenity-jira-requirements-provider - ${serenity.jira.version} - test - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - - org.datanucleus - javax.jdo - 3.2.0-m6 - - - org.datanucleus - datanucleus-core - 5.1.0-m1 - - - org.datanucleus - datanucleus-api-jdo - 5.1.0-m1 - - - org.datanucleus - datanucleus-rdbms - 5.1.0-m1 - - - org.datanucleus - datanucleus-maven-plugin - 5.0.2 - - - org.datanucleus - datanucleus-xml - 5.0.0-release - - - net.openhft - chronicle - 3.6.4 - - - org.springframework - spring-web - 4.3.8.RELEASE - - - net.serenity-bdd - serenity-spring - ${serenity.version} - test - - - net.serenity-bdd - serenity-screenplay - ${serenity.version} - test - - - net.serenity-bdd - serenity-screenplay-webdriver - ${serenity.version} - test - - - io.rest-assured - spring-mock-mvc - 3.0.3 - test - - - org.multiverse - multiverse-core - ${multiverse.version} - - - com.zaxxer - HikariCP - 2.6.1 - compile - - - com.h2database - h2 - ${h2.version} - - - pl.pragmatists - JUnitParams - ${jUnitParams.version} - test - - - org.quartz-scheduler - quartz - 2.3.0 - - - one.util - streamex - 0.6.5 - - - org.jooq - jool - 0.9.12 - - - org.openjdk.jmh - jmh-core - 1.19 - - - org.openjdk.jmh - jmh-generator-annprocess - 1.19 - - - io.netty - netty-all - ${netty.version} - - - junit - junit - ${junit.version} - test - - - info.debatty - java-lsh - ${java-lsh.version} - - - au.com.dius - pact-jvm-consumer-junit_2.11 - ${pact.version} - test - - - org.codehaus.groovy - groovy-all - 2.4.10 - - - org.awaitility - awaitility - ${awaitility.version} - test - - - org.awaitility - awaitility-proxy - ${awaitility.version} - test - - - org.hamcrest - java-hamcrest - ${org.hamcrest.java-hamcrest.version} - test - - - net.agkn - hll - ${hll.version} - - - net.bytebuddy - byte-buddy - ${bytebuddy.version} - - - net.bytebuddy - byte-buddy-agent - ${bytebuddy.version} - - - org.pcollections - pcollections - ${pcollections.version} - - - - 0.7.0 - 3.2.4 - 3.5 - 1.1 - 1.9.3 - 1.2 - 1.9.2 - 1.2 - 3.21.0-GA - 3.6.2 - 1.5.0 - 3.1.0 - 9.4.3.v20170317 - 4.5.3 - 2.5 - 1.6 - 1.4.196 - 9.4.2.v20170220 - 4.5.3 - 2.5 - 1.2.0 - 2.8.5 - 2.92 - 1.4.0 - 1.24.0 - 1.1.3-rc.5 - 1.4.0 - 1.1.0 - 4.1.10.Final - 4.1 - 4.12 - 0.10 - 3.5.0 - 3.0.0 - 2.0.0.0 - 1.6.0 - 1.7.1 - 2.1.2 - + + + true + + + maven-failsafe-plugin + 2.20 + + + chromedriver + + + + + net.serenity-bdd.maven.plugins + serenity-maven-plugin + ${serenity.plugin.version} + + + serenity-reports + post-integration-test + + aggregate + + + + + + + org.datanucleus + datanucleus-maven-plugin + 5.0.2 + + JDO + ${basedir}/datanucleus.properties + ${basedir}/log4j.properties + true + false + + + + + process-classes + + enhance + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.0.2 + + + **/log4j.properties + + + + com.baeldung.neuroph.NeurophXOR + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + + test + test + + test + + + + test/java/com/baeldung/neuroph/XORTest.java + + + + + + + + + + + + org.beykery + neuroph + ${neuroph.version} + + + + cglib + cglib + ${cglib.version} + + + commons-beanutils + commons-beanutils + ${commons-beanutils.version} + + + org.apache.commons + commons-lang3 + ${commons-lang.version} + + + org.apache.commons + commons-text + ${commons-text.version} + + + org.apache.commons + commons-collections4 + ${commons.collections.version} + + + org.jasypt + jasypt + ${jasypt.version} + + + org.javatuples + javatuples + ${javatuples.version} + + + org.javassist + javassist + ${javaassist.version} + + + + org.assertj + assertj-core + ${assertj.version} + + + org.skyscreamer + jsonassert + ${jsonassert.version} + + + org.javers + javers-core + ${javers.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-logging + commons-logging + + + + + commons-io + commons-io + ${commons.io.version} + + + commons-chain + commons-chain + ${commons-chain.version} + + + commons-dbutils + commons-dbutils + ${commons.dbutils.version} + + + org.apache.flink + flink-core + ${flink.version} + + + commons-logging + commons-logging + + + + + org.apache.flink + flink-java + ${flink.version} + + + commons-logging + commons-logging + + + + + org.apache.flink + flink-test-utils_2.10 + ${flink.version} + test + + + org.apache.commons + commons-math3 + 3.6.1 + + + net.serenity-bdd + serenity-core + ${serenity.version} + test + + + net.serenity-bdd + serenity-junit + ${serenity.version} + test + + + net.serenity-bdd + serenity-jbehave + ${serenity.jbehave.version} + test + + + net.serenity-bdd + serenity-rest-assured + ${serenity.version} + test + + + net.serenity-bdd + serenity-jira-requirements-provider + ${serenity.jira.version} + test + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + org.datanucleus + javax.jdo + 3.2.0-m6 + + + org.datanucleus + datanucleus-core + 5.1.0-m1 + + + org.datanucleus + datanucleus-api-jdo + 5.1.0-m1 + + + org.datanucleus + datanucleus-rdbms + 5.1.0-m1 + + + org.datanucleus + datanucleus-maven-plugin + 5.0.2 + + + org.datanucleus + datanucleus-xml + 5.0.0-release + + + net.openhft + chronicle + 3.6.4 + + + org.springframework + spring-web + 4.3.8.RELEASE + + + net.serenity-bdd + serenity-spring + ${serenity.version} + test + + + net.serenity-bdd + serenity-screenplay + ${serenity.version} + test + + + net.serenity-bdd + serenity-screenplay-webdriver + ${serenity.version} + test + + + io.rest-assured + spring-mock-mvc + 3.0.3 + test + + + org.multiverse + multiverse-core + ${multiverse.version} + + + com.zaxxer + HikariCP + 2.6.1 + compile + + + com.h2database + h2 + ${h2.version} + + + pl.pragmatists + JUnitParams + ${jUnitParams.version} + test + + + org.quartz-scheduler + quartz + 2.3.0 + + + one.util + streamex + 0.6.5 + + + org.jooq + jool + 0.9.12 + + + org.openjdk.jmh + jmh-core + 1.19 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.19 + + + io.netty + netty-all + ${netty.version} + + + junit + junit + ${junit.version} + test + + + info.debatty + java-lsh + ${java-lsh.version} + + + au.com.dius + pact-jvm-consumer-junit_2.11 + ${pact.version} + test + + + org.codehaus.groovy + groovy-all + 2.4.10 + + + org.awaitility + awaitility + ${awaitility.version} + test + + + org.awaitility + awaitility-proxy + ${awaitility.version} + test + + + org.hamcrest + java-hamcrest + ${org.hamcrest.java-hamcrest.version} + test + + + net.agkn + hll + ${hll.version} + + + net.bytebuddy + byte-buddy + ${bytebuddy.version} + + + net.bytebuddy + byte-buddy-agent + ${bytebuddy.version} + + + org.pcollections + pcollections + ${pcollections.version} + + + + 0.7.0 + 3.2.4 + 3.5 + 1.1 + 1.9.3 + 1.2 + 1.9.2 + 1.2 + 3.21.0-GA + 3.6.2 + 1.5.0 + 3.1.0 + 9.4.3.v20170317 + 4.5.3 + 2.5 + 1.6 + 1.4.196 + 9.4.2.v20170220 + 4.5.3 + 2.5 + 1.2.0 + 2.8.5 + 2.92 + 1.4.0 + 1.24.0 + 1.1.3-rc.5 + 1.4.0 + 1.1.0 + 4.1.10.Final + 4.1 + 4.12 + 0.10 + 3.5.0 + 3.0.0 + 2.0.0.0 + 1.6.0 + 1.7.1 + 2.1.2 + diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 9d9e9838d3..deffaf41db 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -144,4 +144,4 @@ - + \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java b/spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java index 430759f3a0..d9097188b3 100644 --- a/spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java +++ b/spring-core/src/main/java/com/baeldung/streamutils/CopyStream.java @@ -9,14 +9,14 @@ import org.apache.commons.io.IOUtils; import org.springframework.util.StreamUtils; public class CopyStream { - public static String getStringFromInputStream(InputStream input) throws IOException { - StringWriter writer = new StringWriter(); - IOUtils.copy(input, writer, "UTF-8"); - return writer.toString(); - } + public static String getStringFromInputStream(InputStream input) throws IOException { + StringWriter writer = new StringWriter(); + IOUtils.copy(input, writer, "UTF-8"); + return writer.toString(); + } - public InputStream getNonClosingInputStream() throws IOException { - InputStream in = new FileInputStream("src/test/resources/input.txt"); - return StreamUtils.nonClosing(in); - } + public InputStream getNonClosingInputStream() throws IOException { + InputStream in = new FileInputStream("src/test/resources/input.txt"); + return StreamUtils.nonClosing(in); + } } diff --git a/spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java b/spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java index 6ee4a1ef3a..1ce67a075a 100644 --- a/spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java +++ b/spring-core/src/main/java/com/baeldung/streamutils/DrainStream.java @@ -5,7 +5,7 @@ import java.io.InputStream; import org.springframework.util.StreamUtils; public class DrainStream { - public InputStream getInputStream() { - return StreamUtils.emptyInput(); - } + public InputStream getInputStream() { + return StreamUtils.emptyInput(); + } } diff --git a/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java b/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java index 9a65075e5b..3ed797ccaa 100644 --- a/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java +++ b/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java @@ -18,83 +18,83 @@ import static com.baeldung.streamutils.CopyStream.getStringFromInputStream; public class CopyStreamTest { - @Test - public void whenCopyInputStreamToOutputStream_thenCorrect() throws IOException { - String inputFileName = "src/test/resources/input.txt"; - String outputFileName = "src/test/resources/output.txt"; - File outputFile = new File(outputFileName); - InputStream in = new FileInputStream(inputFileName); - OutputStream out = new FileOutputStream(outputFileName); + @Test + public void whenCopyInputStreamToOutputStream_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + InputStream in = new FileInputStream(inputFileName); + OutputStream out = new FileOutputStream(outputFileName); - StreamUtils.copy(in, out); + StreamUtils.copy(in, out); - assertTrue(outputFile.exists()); - String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(inputFileContent, outputFileContent); - } + assertTrue(outputFile.exists()); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(inputFileContent, outputFileContent); + } - @Test - public void whenCopyRangeOfInputStreamToOutputStream_thenCorrect() throws IOException { - String inputFileName = "src/test/resources/input.txt"; - String outputFileName = "src/test/resources/output.txt"; - File outputFile = new File(outputFileName); - InputStream in = new FileInputStream(inputFileName); - OutputStream out = new FileOutputStream(outputFileName); + @Test + public void whenCopyRangeOfInputStreamToOutputStream_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + InputStream in = new FileInputStream(inputFileName); + OutputStream out = new FileOutputStream(outputFileName); - StreamUtils.copyRange(in, out, 1, 10); + StreamUtils.copyRange(in, out, 1, 10); - assertTrue(outputFile.exists()); - String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(inputFileContent.substring(1, 11), outputFileContent); - } + assertTrue(outputFile.exists()); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(inputFileContent.substring(1, 11), outputFileContent); + } - @Test - public void whenCopyStringToOutputStream_thenCorrect() throws IOException { - String string = "Should be copied to OutputStream."; - String outputFileName = "src/test/resources/output.txt"; - File outputFile = new File(outputFileName); - OutputStream out = new FileOutputStream("src/test/resources/output.txt"); + @Test + public void whenCopyStringToOutputStream_thenCorrect() throws IOException { + String string = "Should be copied to OutputStream."; + String outputFileName = "src/test/resources/output.txt"; + File outputFile = new File(outputFileName); + OutputStream out = new FileOutputStream("src/test/resources/output.txt"); - StreamUtils.copy(string, StandardCharsets.UTF_8, out); + StreamUtils.copy(string, StandardCharsets.UTF_8, out); - assertTrue(outputFile.exists()); - String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(outputFileContent, string); - } + assertTrue(outputFile.exists()); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(outputFileContent, string); + } - @Test - public void whenCopyInputStreamToString_thenCorrect() throws IOException { - String inputFileName = "src/test/resources/input.txt"; - InputStream is = new FileInputStream(inputFileName); - String content = StreamUtils.copyToString(is, StandardCharsets.UTF_8); + @Test + public void whenCopyInputStreamToString_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + InputStream is = new FileInputStream(inputFileName); + String content = StreamUtils.copyToString(is, StandardCharsets.UTF_8); - String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - Assert.assertEquals(inputFileContent, content); - } + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + Assert.assertEquals(inputFileContent, content); + } - @Test - public void whenCopyByteArrayToOutputStream_thenCorrect() throws IOException { - String outputFileName = "src/test/resources/output.txt"; - String string = "Should be copied to OutputStream."; - byte[] byteArray = string.getBytes(); - OutputStream out = new FileOutputStream("src/test/resources/output.txt"); + @Test + public void whenCopyByteArrayToOutputStream_thenCorrect() throws IOException { + String outputFileName = "src/test/resources/output.txt"; + String string = "Should be copied to OutputStream."; + byte[] byteArray = string.getBytes(); + OutputStream out = new FileOutputStream("src/test/resources/output.txt"); - StreamUtils.copy(byteArray, out); - String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(outputFileContent, string); - } + StreamUtils.copy(byteArray, out); + String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); + Assert.assertEquals(outputFileContent, string); + } - @Test - public void whenCopyInputStreamToByteArray_thenCorrect() throws IOException { - String inputFileName = "src/test/resources/input.txt"; - InputStream in = new FileInputStream(inputFileName); - byte[] out = StreamUtils.copyToByteArray(in); + @Test + public void whenCopyInputStreamToByteArray_thenCorrect() throws IOException { + String inputFileName = "src/test/resources/input.txt"; + InputStream in = new FileInputStream(inputFileName); + byte[] out = StreamUtils.copyToByteArray(in); - String content = new String(out); - String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - Assert.assertEquals(inputFileContent, content); - } + String content = new String(out); + String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); + Assert.assertEquals(inputFileContent, content); + } } From af4a8eb10122eb0637abe19d0a68972d7aed8621 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 30 Jul 2017 23:09:06 +0200 Subject: [PATCH 020/836] BAEL-1033 minor refactor --- .../com/baeldung/streamutils/CopyStreamTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java b/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java index 3ed797ccaa..9fe2f00a77 100644 --- a/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java +++ b/spring-core/src/test/java/com/baeldung/streamutils/CopyStreamTest.java @@ -10,7 +10,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; -import org.junit.Assert; +import static org.junit.Assert.assertEquals; import org.junit.Test; import org.springframework.util.StreamUtils; @@ -31,7 +31,7 @@ public class CopyStreamTest { assertTrue(outputFile.exists()); String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(inputFileContent, outputFileContent); + assertEquals(inputFileContent, outputFileContent); } @Test @@ -47,7 +47,7 @@ public class CopyStreamTest { assertTrue(outputFile.exists()); String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(inputFileContent.substring(1, 11), outputFileContent); + assertEquals(inputFileContent.substring(1, 11), outputFileContent); } @Test @@ -61,7 +61,7 @@ public class CopyStreamTest { assertTrue(outputFile.exists()); String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(outputFileContent, string); + assertEquals(outputFileContent, string); } @Test @@ -71,7 +71,7 @@ public class CopyStreamTest { String content = StreamUtils.copyToString(is, StandardCharsets.UTF_8); String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - Assert.assertEquals(inputFileContent, content); + assertEquals(inputFileContent, content); } @Test @@ -83,7 +83,7 @@ public class CopyStreamTest { StreamUtils.copy(byteArray, out); String outputFileContent = getStringFromInputStream(new FileInputStream(outputFileName)); - Assert.assertEquals(outputFileContent, string); + assertEquals(outputFileContent, string); } @Test @@ -94,7 +94,7 @@ public class CopyStreamTest { String content = new String(out); String inputFileContent = getStringFromInputStream(new FileInputStream(inputFileName)); - Assert.assertEquals(inputFileContent, content); + assertEquals(inputFileContent, content); } } From 207f88b597bee2111c328c98c08771c0ba2ebb35 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Wed, 9 Aug 2017 06:42:13 +0200 Subject: [PATCH 021/836] BAEL-1035 Introduction to Eclipse Collections --- libraries/pom.xml | 7 +++ .../ConvertContainerToAnother.java | 20 +++++++ .../baeldung/eclipsecollections/Student.java | 20 +++++++ .../AllSatisfyPatternTest.java | 28 ++++++++++ .../AnySatisfyPatternTest.java | 28 ++++++++++ .../CollectPatternTest.java | 22 ++++++++ .../ConvertContainerToAnotherTest.java | 19 +++++++ .../eclipsecollections/DetectPatternTest.java | 27 ++++++++++ .../ForEachPatternTest.java | 32 +++++++++++ .../InjectIntoPatternTest.java | 23 ++++++++ .../eclipsecollections/LazyIterationTest.java | 26 +++++++++ .../eclipsecollections/RejectPatternTest.java | 32 +++++++++++ .../eclipsecollections/SelectPatternTest.java | 54 +++++++++++++++++++ 13 files changed, 338 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java create mode 100644 libraries/src/main/java/com/baeldung/eclipsecollections/Student.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 795f255f36..3d00a61cf0 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -453,6 +453,12 @@ pcollections ${pcollections.version} + + org.eclipse.collections + eclipse-collections + ${eclipse-collections.version} + + 0.7.0 @@ -493,5 +499,6 @@ 1.6.0 1.7.1 2.1.2 + 8.2.0 diff --git a/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java b/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java new file mode 100644 index 0000000000..069baeab9f --- /dev/null +++ b/libraries/src/main/java/com/baeldung/eclipsecollections/ConvertContainerToAnother.java @@ -0,0 +1,20 @@ +package com.baeldung.eclipsecollections; + +import java.util.List; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.set.mutable.UnifiedSet; + +public class ConvertContainerToAnother { + + @SuppressWarnings("rawtypes") + public static List convertToList() { + UnifiedSet cars = new UnifiedSet<>(); + + cars.add("Toyota"); + cars.add("Mercedes"); + cars.add("Volkswagen"); + + return cars.toList(); + } +} diff --git a/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java new file mode 100644 index 0000000000..2c634a28d9 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java @@ -0,0 +1,20 @@ +package com.baeldung.eclipsecollections; + +public class Student { + + private String firstName; + private String lastName; + + public Student(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return this.firstName; + } + + public String getLastName() { + return this.lastName; + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java new file mode 100644 index 0000000000..9f66fee0a8 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java @@ -0,0 +1,28 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertTrue; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Test; + +public class AllSatisfyPatternTest { + + @Test + public void whenAnySatisfiesCondition_thenCorrect() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + boolean result = list.allSatisfy(Predicates.greaterThan(0)); + + assertTrue(result); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java new file mode 100644 index 0000000000..c3ab83abdc --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java @@ -0,0 +1,28 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertTrue; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Test; + +public class AnySatisfyPatternTest { + + @Test + public void whenAnySatisfiesCondition_thenCorrect() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + boolean result = list.anySatisfy(Predicates.greaterThan(30)); + + assertTrue(result); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java new file mode 100644 index 0000000000..51591cd08c --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java @@ -0,0 +1,22 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.list.mutable.FastList; +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class CollectPatternTest { + + @Test + public void whenCollect_thenCorrect() { + Student student1 = new Student("John", "Hopkins"); + Student student2 = new Student("George", "Adams"); + + MutableList students = FastList.newListWith(student1, student2); + + MutableList lastNames = students.collect(Student::getLastName); + + assertEquals(lastNames.get(0), "Hopkins"); + assertEquals(lastNames.get(1), "Adams"); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java new file mode 100644 index 0000000000..d8cee898a2 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java @@ -0,0 +1,19 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertTrue; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.junit.Test; + +public class ConvertContainerToAnotherTest { + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Test + public void whenConvertContainerToAnother_thenCorrect() { + MutableList cars = (MutableList) ConvertContainerToAnother.convertToList(); + assertTrue(cars.anySatisfy(Predicates.equal("Toyota"))); + assertTrue(cars.anySatisfy(Predicates.equal("Mercedes"))); + assertTrue(cars.anySatisfy(Predicates.equal("Volkswagen"))); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java new file mode 100644 index 0000000000..39d77498ca --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java @@ -0,0 +1,27 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class DetectPatternTest { + + @Test + public void whenDetect_thenCorrect() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + Integer result = list.detect(Predicates.greaterThan(30)); + + assertEquals((int) result, 41); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java new file mode 100644 index 0000000000..e8d93a2af6 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java @@ -0,0 +1,32 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.block.procedure.Procedure; +import org.eclipse.collections.api.tuple.Pair; +import org.eclipse.collections.impl.map.mutable.UnifiedMap; +import org.eclipse.collections.impl.tuple.Tuples; +import static org.junit.Assert.assertEquals; + +import java.util.Map; + +import org.junit.Test; + +public class ForEachPatternTest { + + @SuppressWarnings("unchecked") + @Test + public void whenInstantiateAndChangeValues_thenCorrect() { + Pair pair1 = Tuples.pair(1, "One"); + Pair pair2 = Tuples.pair(2, "Two"); + Pair pair3 = Tuples.pair(3, "Three"); + + UnifiedMap map = UnifiedMap.newMapWith(pair1, pair2, pair3); + + for (int i = 0; i < map.size(); i++) { + map.put(i + 1, "New Value"); + } + + for (int i = 0; i < map.size(); i++) { + assertEquals("New Value", map.get(i + 1)); + } + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java new file mode 100644 index 0000000000..bcd34021b1 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java @@ -0,0 +1,23 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.eclipse.collections.impl.factory.Lists; +import org.junit.Test; + +public class InjectIntoPatternTest { + + @Test + public void whenInjectInto_thenCorrect() { + List list = Lists.mutable.of(1, 2, 3, 4); + int result = 5; + for (int i = 0; i < list.size(); i++) { + Integer v = list.get(i); + result = result + v.intValue(); + } + + assertEquals(15, result); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java new file mode 100644 index 0000000000..8fe1286d41 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.LazyIterable; +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.factory.Lists; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +public class LazyIterationTest { + + @Test + public void whenLazyIteration_thenCorrect() { + Student student1 = new Student("John", "Hopkins"); + Student student2 = new Student("George", "Adams"); + Student student3 = new Student("Jennifer", "Rodriguez"); + + MutableList students = Lists.mutable.with(student1, student2, student3); + LazyIterable lazyStudents = students.asLazy(); + LazyIterable lastNames = lazyStudents.collect(Student::getLastName); + + assertTrue(lastNames.anySatisfy(Predicates.equal("Hopkins"))); + assertTrue(lastNames.anySatisfy(Predicates.equal("Adams"))); + assertTrue(lastNames.anySatisfy(Predicates.equal("Rodriguez"))); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java new file mode 100644 index 0000000000..2cc1cdb945 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java @@ -0,0 +1,32 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Assert; +import org.junit.Test; + +public class RejectPatternTest { + + @Test + public void whenReject_thenCorrect() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + MutableList notGreaterThanThirty = list.reject(Predicates.greaterThan(30)) + .sortThis(); + + Assert.assertEquals(1, (int) notGreaterThanThirty.getFirst()); + Assert.assertEquals(5, (int) notGreaterThanThirty.get(1)); + Assert.assertEquals(8, (int) notGreaterThanThirty.get(2)); + Assert.assertEquals(17, (int) notGreaterThanThirty.get(3)); + Assert.assertEquals(23, (int) notGreaterThanThirty.getLast()); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java new file mode 100644 index 0000000000..c5e3af3a3f --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java @@ -0,0 +1,54 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Assert; +import org.junit.Test; + +public class SelectPatternTest { + + @Test + public void whenSelect_thenCorrect() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + MutableList greaterThanThirty = list.select(Predicates.greaterThan(30)) + .sortThis(); + + Assert.assertEquals(31, (int) greaterThanThirty.getFirst()); + Assert.assertEquals(38, (int) greaterThanThirty.get(1)); + Assert.assertEquals(41, (int) greaterThanThirty.getLast()); + } + + public MutableList selectUsingLambda() { + MutableList list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + + return list.select(each -> each > 30) + .sortThis(); + } + + @Test + public void whenSelectUsingLambda_thenCorrect() { + MutableList greaterThanThirty = selectUsingLambda(); + + Assert.assertEquals(31, (int) greaterThanThirty.getFirst()); + Assert.assertEquals(38, (int) greaterThanThirty.get(1)); + Assert.assertEquals(41, (int) greaterThanThirty.getLast()); + } +} From 66eea4cc80f86345273f9969c3f3b5eb2305e487 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Wed, 9 Aug 2017 06:57:59 +0200 Subject: [PATCH 022/836] format --- .../eclipsecollections/ConvertContainerToAnotherTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java index d8cee898a2..b538abfa6e 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java @@ -12,6 +12,7 @@ public class ConvertContainerToAnotherTest { @Test public void whenConvertContainerToAnother_thenCorrect() { MutableList cars = (MutableList) ConvertContainerToAnother.convertToList(); + assertTrue(cars.anySatisfy(Predicates.equal("Toyota"))); assertTrue(cars.anySatisfy(Predicates.equal("Mercedes"))); assertTrue(cars.anySatisfy(Predicates.equal("Volkswagen"))); From c8a691395673b1db52315b6008cec3c7959acfb2 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Wed, 9 Aug 2017 23:06:04 +0200 Subject: [PATCH 023/836] BAEL-1035 Introduction to Eclipse Collections --- .../AllSatisfyPatternTest.java | 12 +++- .../AnySatisfyPatternTest.java | 12 +++- .../eclipsecollections/DetectPatternTest.java | 13 +++- .../PartitionPatternTest.java | 61 +++++++++++++++++++ .../eclipsecollections/RejectPatternTest.java | 24 +++++--- .../eclipsecollections/SelectPatternTest.java | 40 ++++++------ 6 files changed, 123 insertions(+), 39 deletions(-) create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java index 9f66fee0a8..1ea10317c7 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java @@ -5,13 +5,16 @@ import static org.junit.Assert.assertTrue; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Before; import org.junit.Test; public class AllSatisfyPatternTest { - @Test - public void whenAnySatisfiesCondition_thenCorrect() { - MutableList list = new FastList<>(); + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); list.add(1); list.add(8); list.add(5); @@ -20,7 +23,10 @@ public class AllSatisfyPatternTest { list.add(17); list.add(23); list.add(38); + } + @Test + public void whenAnySatisfiesCondition_thenCorrect() { boolean result = list.allSatisfy(Predicates.greaterThan(0)); assertTrue(result); diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java index c3ab83abdc..58f8ad40af 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java @@ -5,13 +5,16 @@ import static org.junit.Assert.assertTrue; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Before; import org.junit.Test; public class AnySatisfyPatternTest { - @Test - public void whenAnySatisfiesCondition_thenCorrect() { - MutableList list = new FastList<>(); + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); list.add(1); list.add(8); list.add(5); @@ -20,7 +23,10 @@ public class AnySatisfyPatternTest { list.add(17); list.add(23); list.add(38); + } + @Test + public void whenAnySatisfiesCondition_thenCorrect() { boolean result = list.anySatisfy(Predicates.greaterThan(30)); assertTrue(result); diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java index 39d77498ca..fc643f2840 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java @@ -4,13 +4,17 @@ import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; + +import org.junit.Before; import org.junit.Test; public class DetectPatternTest { - @Test - public void whenDetect_thenCorrect() { - MutableList list = new FastList<>(); + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); list.add(1); list.add(8); list.add(5); @@ -19,7 +23,10 @@ public class DetectPatternTest { list.add(17); list.add(23); list.add(38); + } + @Test + public void whenDetect_thenCorrect() { Integer result = list.detect(Predicates.greaterThan(30)); assertEquals((int) result, 41); diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java new file mode 100644 index 0000000000..3e52829824 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java @@ -0,0 +1,61 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.eclipse.collections.api.block.predicate.Predicate; +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.api.partition.list.PartitionMutableList; +import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.junit.Before; +import org.junit.Test; + +public class PartitionPatternTest { + + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); + list.add(1); + list.add(8); + list.add(5); + list.add(41); + list.add(31); + list.add(17); + list.add(23); + list.add(38); + } + + @SuppressWarnings({ "unused" }) + @Test + public void whenAnySatisfiesCondition_thenCorrect() { + MutableList numbers = list; + PartitionMutableList partitionedFolks = numbers.partition(new Predicate() { + + /** + * + */ + private static final long serialVersionUID = -1551138743683678406L; + + public boolean accept(Integer each) { + return each > 30; + } + }); + MutableList greaterThanThirty = partitionedFolks.getSelected() + .sortThis(); + MutableList smallerThanThirty = partitionedFolks.getRejected() + .sortThis(); + + assertEquals(1, (int) smallerThanThirty.getFirst()); + assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(5))); + assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(8))); + assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(17))); + assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(23))); + + assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(31))); + assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(38))); + assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(41))); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java index 2cc1cdb945..044a8203d6 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java @@ -3,14 +3,17 @@ package com.baeldung.eclipsecollections; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; -import org.junit.Assert; +import static org.junit.Assert.assertEquals; +import org.junit.Before; import org.junit.Test; public class RejectPatternTest { - @Test - public void whenReject_thenCorrect() { - MutableList list = new FastList<>(); + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); list.add(1); list.add(8); list.add(5); @@ -19,14 +22,17 @@ public class RejectPatternTest { list.add(17); list.add(23); list.add(38); + } + @Test + public void whenReject_thenCorrect() { MutableList notGreaterThanThirty = list.reject(Predicates.greaterThan(30)) .sortThis(); - Assert.assertEquals(1, (int) notGreaterThanThirty.getFirst()); - Assert.assertEquals(5, (int) notGreaterThanThirty.get(1)); - Assert.assertEquals(8, (int) notGreaterThanThirty.get(2)); - Assert.assertEquals(17, (int) notGreaterThanThirty.get(3)); - Assert.assertEquals(23, (int) notGreaterThanThirty.getLast()); + assertEquals(1, (int) notGreaterThanThirty.getFirst()); + assertEquals(5, (int) notGreaterThanThirty.get(1)); + assertEquals(8, (int) notGreaterThanThirty.get(2)); + assertEquals(17, (int) notGreaterThanThirty.get(3)); + assertEquals(23, (int) notGreaterThanThirty.getLast()); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java index c5e3af3a3f..20c94f6028 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java @@ -3,14 +3,17 @@ package com.baeldung.eclipsecollections; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; -import org.junit.Assert; +import static org.junit.Assert.assertEquals; +import org.junit.Before; import org.junit.Test; public class SelectPatternTest { - @Test - public void whenSelect_thenCorrect() { - MutableList list = new FastList<>(); + MutableList list; + + @Before + public void getList() { + this.list = new FastList<>(); list.add(1); list.add(8); list.add(5); @@ -19,36 +22,31 @@ public class SelectPatternTest { list.add(17); list.add(23); list.add(38); + } + @Test + public void givenListwhenSelect_thenCorrect() { MutableList greaterThanThirty = list.select(Predicates.greaterThan(30)) .sortThis(); - Assert.assertEquals(31, (int) greaterThanThirty.getFirst()); - Assert.assertEquals(38, (int) greaterThanThirty.get(1)); - Assert.assertEquals(41, (int) greaterThanThirty.getLast()); + assertEquals(31, (int) greaterThanThirty.getFirst()); + assertEquals(38, (int) greaterThanThirty.get(1)); + assertEquals(41, (int) greaterThanThirty.getLast()); } + @SuppressWarnings("rawtypes") public MutableList selectUsingLambda() { - MutableList list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); - return list.select(each -> each > 30) .sortThis(); } + @SuppressWarnings("unchecked") @Test - public void whenSelectUsingLambda_thenCorrect() { + public void givenListwhenSelectUsingLambda_thenCorrect() { MutableList greaterThanThirty = selectUsingLambda(); - Assert.assertEquals(31, (int) greaterThanThirty.getFirst()); - Assert.assertEquals(38, (int) greaterThanThirty.get(1)); - Assert.assertEquals(41, (int) greaterThanThirty.getLast()); + assertEquals(31, (int) greaterThanThirty.getFirst()); + assertEquals(38, (int) greaterThanThirty.get(1)); + assertEquals(41, (int) greaterThanThirty.getLast()); } } From 4c2447ebf2eefb0e2901650e8eb879d3688999d7 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 11 Aug 2017 20:40:39 +0200 Subject: [PATCH 024/836] BAEL-1035 Introduction to Eclipse Collections --- .../baeldung/eclipsecollections/Student.java | 26 ++++++++++++ .../CollectPatternTest.java | 4 +- .../eclipsecollections/FlatCollectTest.java | 42 +++++++++++++++++++ .../ForEachPatternTest.java | 32 -------------- .../InjectIntoPatternTest.java | 23 ---------- .../PartitionPatternTest.java | 1 - .../baeldung/eclipsecollections/ZipTest.java | 22 ++++++++++ .../eclipsecollections/ZipWithIndexTest.java | 22 ++++++++++ 8 files changed, 114 insertions(+), 58 deletions(-) create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java delete mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java delete mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java create mode 100644 libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java diff --git a/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java index 2c634a28d9..cf6c06cec0 100644 --- a/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java +++ b/libraries/src/main/java/com/baeldung/eclipsecollections/Student.java @@ -1,15 +1,25 @@ package com.baeldung.eclipsecollections; +import java.util.List; + public class Student { private String firstName; private String lastName; + private List addresses; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } + public Student(String firstName, String lastName, List addresses) { + super(); + this.firstName = firstName; + this.lastName = lastName; + this.addresses = addresses; + } + public String getFirstName() { return this.firstName; } @@ -17,4 +27,20 @@ public class Student { public String getLastName() { return this.lastName; } + + public List getAddresses() { + return addresses; + } + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } } \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java index 51591cd08c..5fb63794a1 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java @@ -16,7 +16,7 @@ public class CollectPatternTest { MutableList lastNames = students.collect(Student::getLastName); - assertEquals(lastNames.get(0), "Hopkins"); - assertEquals(lastNames.get(1), "Adams"); + assertEquals("Hopkins", lastNames.get(0)); + assertEquals("Adams", lastNames.get(1)); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java new file mode 100644 index 0000000000..3d1453e557 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java @@ -0,0 +1,42 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.impl.list.mutable.FastList; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; + +public class FlatCollectTest { + + MutableList addresses1; + MutableList addresses2; + MutableList addresses3; + MutableList addresses4; + + MutableList students; + + @Before + public void setup() { + String address1 = "73 Pacific St., Forest Hills, NY 11375"; + String address2 = "93 Bayport Ave., South Richmond Hill, NY 11419"; + String address3 = "548 Market St, San Francisco, CA 94104"; + String address4 = "8605 Santa Monica Blvd, West Hollywood, CA 90069"; + + this.addresses1 = FastList.newListWith(address1, address2); + this.addresses2 = FastList.newListWith(address3, address4); + Student student1 = new Student("John", "Hopkins", addresses1); + Student student2 = new Student("George", "Adams", addresses2); + this.addresses2 = FastList.newListWith(address3, address4); + this.students = FastList.newListWith(student1, student2); + } + + @Test + public void whenFlatCollect_thenCorrect() { + MutableList addresses = students.flatCollect(Student::getAddresses); + + assertEquals("73 Pacific St., Forest Hills, NY 11375", addresses.get(0)); + assertEquals("93 Bayport Ave., South Richmond Hill, NY 11419", addresses.get(1)); + assertEquals("548 Market St, San Francisco, CA 94104", addresses.get(2)); + assertEquals("8605 Santa Monica Blvd, West Hollywood, CA 90069", addresses.get(3)); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java deleted file mode 100644 index e8d93a2af6..0000000000 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.eclipsecollections; - -import org.eclipse.collections.api.block.procedure.Procedure; -import org.eclipse.collections.api.tuple.Pair; -import org.eclipse.collections.impl.map.mutable.UnifiedMap; -import org.eclipse.collections.impl.tuple.Tuples; -import static org.junit.Assert.assertEquals; - -import java.util.Map; - -import org.junit.Test; - -public class ForEachPatternTest { - - @SuppressWarnings("unchecked") - @Test - public void whenInstantiateAndChangeValues_thenCorrect() { - Pair pair1 = Tuples.pair(1, "One"); - Pair pair2 = Tuples.pair(2, "Two"); - Pair pair3 = Tuples.pair(3, "Three"); - - UnifiedMap map = UnifiedMap.newMapWith(pair1, pair2, pair3); - - for (int i = 0; i < map.size(); i++) { - map.put(i + 1, "New Value"); - } - - for (int i = 0; i < map.size(); i++) { - assertEquals("New Value", map.get(i + 1)); - } - } -} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java deleted file mode 100644 index bcd34021b1..0000000000 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/InjectIntoPatternTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.eclipsecollections; - -import static org.junit.Assert.assertEquals; - -import java.util.List; - -import org.eclipse.collections.impl.factory.Lists; -import org.junit.Test; - -public class InjectIntoPatternTest { - - @Test - public void whenInjectInto_thenCorrect() { - List list = Lists.mutable.of(1, 2, 3, 4); - int result = 5; - for (int i = 0; i < list.size(); i++) { - Integer v = list.get(i); - result = result + v.intValue(); - } - - assertEquals(15, result); - } -} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java index 3e52829824..4d9619817b 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java @@ -28,7 +28,6 @@ public class PartitionPatternTest { list.add(38); } - @SuppressWarnings({ "unused" }) @Test public void whenAnySatisfiesCondition_thenCorrect() { MutableList numbers = list; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java new file mode 100644 index 0000000000..9dfab8f32d --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java @@ -0,0 +1,22 @@ +package com.baeldung.eclipsecollections; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.api.tuple.Pair; +import org.eclipse.collections.impl.factory.Lists; +import org.eclipse.collections.impl.tuple.Tuples; +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class ZipTest { + + @Test + public void whenZip_thenCorrect() { + MutableList numbers = Lists.mutable.with("1", "2", "3", "Ignored"); + MutableList cars = Lists.mutable.with("Porsche", "Volvo", "Toyota"); + MutableList> pairs = numbers.zip(cars); + + assertEquals(Tuples.pair("1", "Porsche"), pairs.get(0)); + assertEquals(Tuples.pair("2", "Volvo"), pairs.get(1)); + assertEquals(Tuples.pair("3", "Toyota"), pairs.get(2)); + } +} diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java new file mode 100644 index 0000000000..3e8fe9b410 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java @@ -0,0 +1,22 @@ +package com.baeldung.eclipsecollections; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.api.tuple.Pair; +import org.eclipse.collections.impl.list.mutable.FastList; +import org.eclipse.collections.impl.tuple.Tuples; +import org.junit.Test; + +public class ZipWithIndexTest { + + @Test + public void whenZip_thenCorrect() { + MutableList cars = FastList.newListWith("Porsche", "Volvo", "Toyota"); + MutableList> pairs = cars.zipWithIndex(); + + assertEquals(Tuples.pair("Porsche", 0), pairs.get(0)); + assertEquals(Tuples.pair("Volvo", 1), pairs.get(1)); + assertEquals(Tuples.pair("Toyota", 2), pairs.get(2)); + } +} From 81cdec14d771d596348a155e15e5ff5899226c1b Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 12 Aug 2017 15:33:46 +0200 Subject: [PATCH 025/836] BAEL-1035 Introduction to Eclipse Collections --- .../AllSatisfyPatternTest.java | 10 +------ .../AnySatisfyPatternTest.java | 10 +------ .../CollectPatternTest.java | 6 ++-- .../ConvertContainerToAnotherTest.java | 12 ++++---- .../eclipsecollections/DetectPatternTest.java | 14 +++------- .../eclipsecollections/FlatCollectTest.java | 17 ++++++++--- .../eclipsecollections/LazyIterationTest.java | 7 +++-- .../PartitionPatternTest.java | 28 ++++--------------- .../eclipsecollections/RejectPatternTest.java | 26 ++++++++--------- .../eclipsecollections/SelectPatternTest.java | 22 +++++---------- .../baeldung/eclipsecollections/ZipTest.java | 19 +++++++++++-- .../eclipsecollections/ZipWithIndexTest.java | 19 +++++++++++-- 12 files changed, 88 insertions(+), 102 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java index 1ea10317c7..ee369fc75b 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AllSatisfyPatternTest.java @@ -14,15 +14,7 @@ public class AllSatisfyPatternTest { @Before public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); } @Test diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java index 58f8ad40af..a3314ebee6 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/AnySatisfyPatternTest.java @@ -14,15 +14,7 @@ public class AnySatisfyPatternTest { @Before public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); } @Test diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java index 5fb63794a1..f1c665f085 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java @@ -3,6 +3,8 @@ package com.baeldung.eclipsecollections; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; + +import org.assertj.core.api.Assertions; import org.junit.Test; public class CollectPatternTest { @@ -16,7 +18,7 @@ public class CollectPatternTest { MutableList lastNames = students.collect(Student::getLastName); - assertEquals("Hopkins", lastNames.get(0)); - assertEquals("Adams", lastNames.get(1)); + Assertions.assertThat(lastNames) + .containsExactly("Hopkins", "Adams"); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java index b538abfa6e..4655431872 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ConvertContainerToAnotherTest.java @@ -1,9 +1,8 @@ package com.baeldung.eclipsecollections; -import static org.junit.Assert.assertTrue; - +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; -import org.eclipse.collections.impl.block.factory.Predicates; +import org.eclipse.collections.impl.list.mutable.FastList; import org.junit.Test; public class ConvertContainerToAnotherTest { @@ -12,9 +11,8 @@ public class ConvertContainerToAnotherTest { @Test public void whenConvertContainerToAnother_thenCorrect() { MutableList cars = (MutableList) ConvertContainerToAnother.convertToList(); - - assertTrue(cars.anySatisfy(Predicates.equal("Toyota"))); - assertTrue(cars.anySatisfy(Predicates.equal("Mercedes"))); - assertTrue(cars.anySatisfy(Predicates.equal("Volkswagen"))); + + Assertions.assertThat(cars) + .containsExactlyElementsOf(FastList.newListWith("Volkswagen", "Toyota", "Mercedes")); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java index fc643f2840..36ebf7609d 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java @@ -5,6 +5,7 @@ import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; +import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; @@ -14,21 +15,14 @@ public class DetectPatternTest { @Before public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); } @Test public void whenDetect_thenCorrect() { Integer result = list.detect(Predicates.greaterThan(30)); - assertEquals((int) result, 41); + Assertions.assertThat(result) + .isEqualTo(41); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java index 3d1453e557..9190625993 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java @@ -1,8 +1,13 @@ package com.baeldung.eclipsecollections; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + import org.junit.Before; import org.junit.Test; @@ -13,6 +18,7 @@ public class FlatCollectTest { MutableList addresses3; MutableList addresses4; + List expectedAddresses; MutableList students; @Before @@ -28,15 +34,18 @@ public class FlatCollectTest { Student student2 = new Student("George", "Adams", addresses2); this.addresses2 = FastList.newListWith(address3, address4); this.students = FastList.newListWith(student1, student2); + this.expectedAddresses = new ArrayList<>(); + this.expectedAddresses.add("73 Pacific St., Forest Hills, NY 11375"); + this.expectedAddresses.add("93 Bayport Ave., South Richmond Hill, NY 11419"); + this.expectedAddresses.add("548 Market St, San Francisco, CA 94104"); + this.expectedAddresses.add("8605 Santa Monica Blvd, West Hollywood, CA 90069"); } @Test public void whenFlatCollect_thenCorrect() { MutableList addresses = students.flatCollect(Student::getAddresses); - assertEquals("73 Pacific St., Forest Hills, NY 11375", addresses.get(0)); - assertEquals("93 Bayport Ave., South Richmond Hill, NY 11419", addresses.get(1)); - assertEquals("548 Market St, San Francisco, CA 94104", addresses.get(2)); - assertEquals("8605 Santa Monica Blvd, West Hollywood, CA 90069", addresses.get(3)); + Assertions.assertThat(addresses) + .containsExactlyElementsOf(this.expectedAddresses); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java index 8fe1286d41..25e119ddb4 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java @@ -5,6 +5,8 @@ import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.factory.Lists; import static org.junit.Assert.assertTrue; + +import org.assertj.core.api.Assertions; import org.junit.Test; public class LazyIterationTest { @@ -19,8 +21,7 @@ public class LazyIterationTest { LazyIterable lazyStudents = students.asLazy(); LazyIterable lastNames = lazyStudents.collect(Student::getLastName); - assertTrue(lastNames.anySatisfy(Predicates.equal("Hopkins"))); - assertTrue(lastNames.anySatisfy(Predicates.equal("Adams"))); - assertTrue(lastNames.anySatisfy(Predicates.equal("Rodriguez"))); + Assertions.assertThat(lastNames) + .containsAll(Lists.mutable.with("Hopkins", "Adams", "Rodriguez")); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java index 4d9619817b..c055413cd9 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/PartitionPatternTest.java @@ -1,12 +1,9 @@ package com.baeldung.eclipsecollections; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.block.predicate.Predicate; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.api.partition.list.PartitionMutableList; -import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; import org.junit.Before; import org.junit.Test; @@ -17,15 +14,7 @@ public class PartitionPatternTest { @Before public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); } @Test @@ -47,14 +36,9 @@ public class PartitionPatternTest { MutableList smallerThanThirty = partitionedFolks.getRejected() .sortThis(); - assertEquals(1, (int) smallerThanThirty.getFirst()); - assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(5))); - assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(8))); - assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(17))); - assertTrue(smallerThanThirty.anySatisfy(Predicates.equal(23))); - - assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(31))); - assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(38))); - assertTrue(greaterThanThirty.anySatisfy(Predicates.equal(41))); + Assertions.assertThat(smallerThanThirty) + .containsExactly(1, 5, 8, 17, 23); + Assertions.assertThat(greaterThanThirty) + .containsExactly(31, 38, 41); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java index 044a8203d6..0dc9942cbd 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java @@ -4,24 +4,23 @@ import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; public class RejectPatternTest { MutableList list; + MutableList expectedList; @Before - public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + public void setup() { + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); + this.expectedList = FastList.newListWith(1, 5, 8, 17, 23); } @Test @@ -29,10 +28,7 @@ public class RejectPatternTest { MutableList notGreaterThanThirty = list.reject(Predicates.greaterThan(30)) .sortThis(); - assertEquals(1, (int) notGreaterThanThirty.getFirst()); - assertEquals(5, (int) notGreaterThanThirty.get(1)); - assertEquals(8, (int) notGreaterThanThirty.get(2)); - assertEquals(17, (int) notGreaterThanThirty.get(3)); - assertEquals(23, (int) notGreaterThanThirty.getLast()); + Assertions.assertThat(notGreaterThanThirty) + .containsExactlyElementsOf(this.expectedList); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java index 20c94f6028..acd0a78840 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java @@ -4,6 +4,8 @@ import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; import static org.junit.Assert.assertEquals; + +import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; @@ -13,15 +15,7 @@ public class SelectPatternTest { @Before public void getList() { - this.list = new FastList<>(); - list.add(1); - list.add(8); - list.add(5); - list.add(41); - list.add(31); - list.add(17); - list.add(23); - list.add(38); + this.list = FastList.newListWith(1, 8, 5, 41, 31, 17, 23, 38); } @Test @@ -29,9 +23,8 @@ public class SelectPatternTest { MutableList greaterThanThirty = list.select(Predicates.greaterThan(30)) .sortThis(); - assertEquals(31, (int) greaterThanThirty.getFirst()); - assertEquals(38, (int) greaterThanThirty.get(1)); - assertEquals(41, (int) greaterThanThirty.getLast()); + Assertions.assertThat(greaterThanThirty) + .containsExactly(31, 38, 41); } @SuppressWarnings("rawtypes") @@ -45,8 +38,7 @@ public class SelectPatternTest { public void givenListwhenSelectUsingLambda_thenCorrect() { MutableList greaterThanThirty = selectUsingLambda(); - assertEquals(31, (int) greaterThanThirty.getFirst()); - assertEquals(38, (int) greaterThanThirty.get(1)); - assertEquals(41, (int) greaterThanThirty.getLast()); + Assertions.assertThat(greaterThanThirty) + .containsExactly(31, 38, 41); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java index 9dfab8f32d..56ae8d2133 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java @@ -5,18 +5,31 @@ import org.eclipse.collections.api.tuple.Pair; import org.eclipse.collections.impl.factory.Lists; import org.eclipse.collections.impl.tuple.Tuples; import static org.junit.Assert.assertEquals; + +import org.assertj.core.api.Assertions; +import org.junit.Before; import org.junit.Test; public class ZipTest { + MutableList> expectedPairs; + + @SuppressWarnings("unchecked") + @Before + public void setup() { + Pair pair1 = Tuples.pair("1", "Porsche"); + Pair pair2 = Tuples.pair("2", "Volvo"); + Pair pair3 = Tuples.pair("3", "Toyota"); + expectedPairs = Lists.mutable.of(pair1, pair2, pair3); + } + @Test public void whenZip_thenCorrect() { MutableList numbers = Lists.mutable.with("1", "2", "3", "Ignored"); MutableList cars = Lists.mutable.with("Porsche", "Volvo", "Toyota"); MutableList> pairs = numbers.zip(cars); - assertEquals(Tuples.pair("1", "Porsche"), pairs.get(0)); - assertEquals(Tuples.pair("2", "Volvo"), pairs.get(1)); - assertEquals(Tuples.pair("3", "Toyota"), pairs.get(2)); + Assertions.assertThat(pairs) + .containsExactlyElementsOf(this.expectedPairs); } } diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java index 3e8fe9b410..d6f9846fe0 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java @@ -2,21 +2,34 @@ package com.baeldung.eclipsecollections; import static org.junit.Assert.assertEquals; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.api.tuple.Pair; +import org.eclipse.collections.impl.factory.Lists; import org.eclipse.collections.impl.list.mutable.FastList; import org.eclipse.collections.impl.tuple.Tuples; +import org.junit.Before; import org.junit.Test; public class ZipWithIndexTest { + MutableList> expectedPairs; + + @SuppressWarnings("unchecked") + @Before + public void setup() { + Pair pair1 = Tuples.pair("Porsche", 0); + Pair pair2 = Tuples.pair("Volvo", 1); + Pair pair3 = Tuples.pair("Toyota", 2); + expectedPairs = Lists.mutable.of(pair1, pair2, pair3); + } + @Test public void whenZip_thenCorrect() { MutableList cars = FastList.newListWith("Porsche", "Volvo", "Toyota"); MutableList> pairs = cars.zipWithIndex(); - assertEquals(Tuples.pair("Porsche", 0), pairs.get(0)); - assertEquals(Tuples.pair("Volvo", 1), pairs.get(1)); - assertEquals(Tuples.pair("Toyota", 2), pairs.get(2)); + Assertions.assertThat(pairs) + .containsExactlyElementsOf(this.expectedPairs); } } From c5433e833be6cb10e8c93fd9915131b1a17872a9 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 12 Aug 2017 15:41:09 +0200 Subject: [PATCH 026/836] cleanup --- .../com/baeldung/eclipsecollections/CollectPatternTest.java | 1 - .../java/com/baeldung/eclipsecollections/FlatCollectTest.java | 1 - .../src/test/java/com/baeldung/eclipsecollections/ZipTest.java | 1 - .../java/com/baeldung/eclipsecollections/ZipWithIndexTest.java | 2 -- 4 files changed, 5 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java index f1c665f085..ee384c2f9d 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/CollectPatternTest.java @@ -2,7 +2,6 @@ package com.baeldung.eclipsecollections; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.list.mutable.FastList; -import static org.junit.Assert.assertEquals; import org.assertj.core.api.Assertions; import org.junit.Test; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java index 9190625993..021c72e91e 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/FlatCollectTest.java @@ -3,7 +3,6 @@ package com.baeldung.eclipsecollections; import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.list.mutable.FastList; -import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java index 56ae8d2133..29f0c23954 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipTest.java @@ -4,7 +4,6 @@ import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.api.tuple.Pair; import org.eclipse.collections.impl.factory.Lists; import org.eclipse.collections.impl.tuple.Tuples; -import static org.junit.Assert.assertEquals; import org.assertj.core.api.Assertions; import org.junit.Before; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java index d6f9846fe0..a2d8be44ec 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ZipWithIndexTest.java @@ -1,7 +1,5 @@ package com.baeldung.eclipsecollections; -import static org.junit.Assert.assertEquals; - import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.api.tuple.Pair; From a1b7c270dd41c5a5da60c1ad1995a603d30b7092 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 12 Aug 2017 15:51:43 +0200 Subject: [PATCH 027/836] cleanup --- .../com/baeldung/eclipsecollections/DetectPatternTest.java | 4 +--- .../baeldung/eclipsecollections/ForEachPatternTest.java | 7 ++----- .../com/baeldung/eclipsecollections/LazyIterationTest.java | 5 +---- .../com/baeldung/eclipsecollections/RejectPatternTest.java | 7 +------ .../com/baeldung/eclipsecollections/SelectPatternTest.java | 4 +--- 5 files changed, 6 insertions(+), 21 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java index 36ebf7609d..c5b5e1c412 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/DetectPatternTest.java @@ -1,11 +1,9 @@ package com.baeldung.eclipsecollections; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; -import static org.junit.Assert.assertEquals; - -import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java index e8d93a2af6..8cea575222 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/ForEachPatternTest.java @@ -1,13 +1,10 @@ package com.baeldung.eclipsecollections; -import org.eclipse.collections.api.block.procedure.Procedure; +import static org.junit.Assert.assertEquals; + import org.eclipse.collections.api.tuple.Pair; import org.eclipse.collections.impl.map.mutable.UnifiedMap; import org.eclipse.collections.impl.tuple.Tuples; -import static org.junit.Assert.assertEquals; - -import java.util.Map; - import org.junit.Test; public class ForEachPatternTest { diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java index 25e119ddb4..9c216ecc87 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/LazyIterationTest.java @@ -1,12 +1,9 @@ package com.baeldung.eclipsecollections; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.LazyIterable; import org.eclipse.collections.api.list.MutableList; -import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.factory.Lists; -import static org.junit.Assert.assertTrue; - -import org.assertj.core.api.Assertions; import org.junit.Test; public class LazyIterationTest { diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java index 0dc9942cbd..1666c86333 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/RejectPatternTest.java @@ -1,14 +1,9 @@ package com.baeldung.eclipsecollections; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; -import static org.junit.Assert.assertEquals; - -import java.util.ArrayList; -import java.util.List; - -import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; diff --git a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java index acd0a78840..d79c864fc5 100644 --- a/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java +++ b/libraries/src/test/java/com/baeldung/eclipsecollections/SelectPatternTest.java @@ -1,11 +1,9 @@ package com.baeldung.eclipsecollections; +import org.assertj.core.api.Assertions; import org.eclipse.collections.api.list.MutableList; import org.eclipse.collections.impl.block.factory.Predicates; import org.eclipse.collections.impl.list.mutable.FastList; -import static org.junit.Assert.assertEquals; - -import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; From 3a4cddb740638446496efc906e2d71d2b0d74c4a Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sat, 19 Aug 2017 20:41:55 +0100 Subject: [PATCH 028/836] Different types of bean injection in Spring --- pom.xml | 1 + spring-types-bean-injection/README.md | 3 + spring-types-bean-injection/pom.xml | 81 +++++++++++++++++++ .../java/com/baeldung/config/AppConfig.java | 25 ++++++ .../com/baeldung/service/MegaTestService.java | 22 +++++ .../baeldung/service/SuperTestService.java | 22 +++++ .../com/baeldung/service/TestService.java | 14 ++++ .../MegaTestServiceIntegrationTest.java | 32 ++++++++ .../SuperTestServiceIntegrationTest.java | 32 ++++++++ .../service/TestServiceIntegrationTest.java | 32 ++++++++ 10 files changed, 264 insertions(+) create mode 100644 spring-types-bean-injection/README.md create mode 100644 spring-types-bean-injection/pom.xml create mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java create mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java create mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java create mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java create mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java create mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java create mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java diff --git a/pom.xml b/pom.xml index b76c9b8ddd..eef32f884e 100644 --- a/pom.xml +++ b/pom.xml @@ -170,6 +170,7 @@ spring-social-login spring-spel spring-thymeleaf + spring-types-bean-injection spring-userservice spring-zuul spring-reactor diff --git a/spring-types-bean-injection/README.md b/spring-types-bean-injection/README.md new file mode 100644 index 0000000000..45f8216849 --- /dev/null +++ b/spring-types-bean-injection/README.md @@ -0,0 +1,3 @@ +## Relevant articles: + +- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) \ No newline at end of file diff --git a/spring-types-bean-injection/pom.xml b/spring-types-bean-injection/pom.xml new file mode 100644 index 0000000000..75fee65d80 --- /dev/null +++ b/spring-types-bean-injection/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + com.baeldung + spring-types-bean-injection + 0.0.1-SNAPSHOT + jar + + spring-types-bean-injection + Types of bean injection in spring + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-test + ${spring.version} + test + + + junit + junit + ${junit.version} + test + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + + 1.8 + 4.3.10.RELEASE + 4.12 + + + diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java b/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java new file mode 100644 index 0000000000..45be32fa06 --- /dev/null +++ b/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.config; + +import com.baeldung.service.MegaTestService; +import com.baeldung.service.SuperTestService; +import com.baeldung.service.TestService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AppConfig { + @Bean + public TestService TestService() { + return new TestService(); + } + + @Bean + public SuperTestService SuperTestService() { + return new SuperTestService(new TestService()); + } + + @Bean + public MegaTestService MegaTestService() { + return new MegaTestService(); + } +} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java new file mode 100644 index 0000000000..45deeb8592 --- /dev/null +++ b/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java @@ -0,0 +1,22 @@ +package com.baeldung.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class MegaTestService { + private TestService testService; + + @Autowired + public void setTestService(TestService testService) { + this.testService = testService; + } + + public String getMegaTestOne() { + return "Mega" + testService.getTestOne(); + } + + public String getMegaTestTwo() { + return "Mega" + testService.getTestTwo(); + } +} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java new file mode 100644 index 0000000000..edf1f2b1c5 --- /dev/null +++ b/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java @@ -0,0 +1,22 @@ +package com.baeldung.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SuperTestService { + private TestService testService; + + @Autowired + public SuperTestService(TestService testService) { + this.testService = testService; + } + + public String getSuperTestOne() { + return "Super" + testService.getTestOne(); + } + + public String getSuperTestTwo() { + return "Super" + testService.getTestTwo(); + } +} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java new file mode 100644 index 0000000000..3e7c327dbd --- /dev/null +++ b/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java @@ -0,0 +1,14 @@ +package com.baeldung.service; + +import org.springframework.stereotype.Service; + +@Service +public class TestService { + public String getTestOne() { + return "TestOne"; + } + + public String getTestTwo() { + return "TestTwo"; + } +} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java new file mode 100644 index 0000000000..ced897c70c --- /dev/null +++ b/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java @@ -0,0 +1,32 @@ +package com.baeldung.service; + +import com.baeldung.config.AppConfig; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.hamcrest.CoreMatchers.is; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {AppConfig.class}) +public class MegaTestServiceIntegrationTest { + @Autowired + MegaTestService megaTestService; + + @Test + public void whenCallingGetMegaTestOne_thenWeGetMegaTestOneString() { + String resultOne = megaTestService.getMegaTestOne(); + + Assert.assertThat(resultOne, is("MegaTestOne")); + } + + @Test + public void whenCallingGetMegaTestTwo_thenWeGetMegaTestTwoString() { + String resultTwo = megaTestService.getMegaTestTwo(); + + Assert.assertThat(resultTwo, is("MegaTestTwo")); + } +} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java new file mode 100644 index 0000000000..a037d70c40 --- /dev/null +++ b/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java @@ -0,0 +1,32 @@ +package com.baeldung.service; + +import com.baeldung.config.AppConfig; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.hamcrest.CoreMatchers.is; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {AppConfig.class}) +public class SuperTestServiceIntegrationTest { + @Autowired + SuperTestService superTestService; + + @Test + public void whenCallingGetSuperTestOne_thenWeGetSuperTestOneString() { + String resultOne = superTestService.getSuperTestOne(); + + Assert.assertThat(resultOne, is("SuperTestOne")); + } + + @Test + public void whenCallingGetSuperTestTwo_thenWeGetSuperTestTwoString() { + String resultTwo = superTestService.getSuperTestTwo(); + + Assert.assertThat(resultTwo, is("SuperTestTwo")); + } +} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java new file mode 100644 index 0000000000..2059e87e04 --- /dev/null +++ b/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java @@ -0,0 +1,32 @@ +package com.baeldung.service; + +import com.baeldung.config.AppConfig; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.hamcrest.CoreMatchers.is; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = { AppConfig.class }) +public class TestServiceIntegrationTest { + @Autowired + TestService testService; + + @Test + public void whenCallingGetTestOne_thenWeGetTestOneString() { + String resultOne = testService.getTestOne(); + + Assert.assertThat(resultOne, is("TestOne")); + } + + @Test + public void whenCallingGetTestTwo_thenWeGetTestTwoString() { + String resultTwo = testService.getTestTwo(); + + Assert.assertThat(resultTwo, is("TestTwo")); + } +} \ No newline at end of file From 28bb7fc8d3ed564e3260d339a830797d09b7bb51 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 24 Aug 2017 21:04:23 +0100 Subject: [PATCH 029/836] Difference between two dates in java --- java-difference-date/README.md | 3 + java-difference-date/pom.xml | 58 ++++++++++++++++++ .../src/main/java/com/baeldung/DateDiff.java | 30 ++++++++++ .../test/java/com/baeldung/DateDiffTest.java | 60 +++++++++++++++++++ pom.xml | 1 + 5 files changed, 152 insertions(+) create mode 100644 java-difference-date/README.md create mode 100644 java-difference-date/pom.xml create mode 100644 java-difference-date/src/main/java/com/baeldung/DateDiff.java create mode 100644 java-difference-date/src/test/java/com/baeldung/DateDiffTest.java diff --git a/java-difference-date/README.md b/java-difference-date/README.md new file mode 100644 index 0000000000..45f8216849 --- /dev/null +++ b/java-difference-date/README.md @@ -0,0 +1,3 @@ +## Relevant articles: + +- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) \ No newline at end of file diff --git a/java-difference-date/pom.xml b/java-difference-date/pom.xml new file mode 100644 index 0000000000..388753de90 --- /dev/null +++ b/java-difference-date/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + com.baeldung + java-difference-date + 0.0.1-SNAPSHOT + jar + + java-difference-date + Difference between two dates in java + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + joda-time + joda-time + ${joda-time.version} + + + com.darwinsys + hirondelle-date4j + ${hirondelle-date4j.version} + + + junit + junit + ${junit.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + 1.8 + 4.12 + 2.9.9 + 1.5.1 + + diff --git a/java-difference-date/src/main/java/com/baeldung/DateDiff.java b/java-difference-date/src/main/java/com/baeldung/DateDiff.java new file mode 100644 index 0000000000..08fc02fab7 --- /dev/null +++ b/java-difference-date/src/main/java/com/baeldung/DateDiff.java @@ -0,0 +1,30 @@ +package com.baeldung; + +import org.joda.time.DateTime; + +import java.time.Duration; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.concurrent.TimeUnit; + +public class DateDiff { + public long beforeJava8diff(Date firstDate, Date secondDate){ + long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); + return TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); + } + + public long fromJava8Diff(ZonedDateTime firstDate, ZonedDateTime secondDate){ + Duration duration = Duration.between(firstDate, secondDate); + return Math.abs(duration.toDays()); + } + + public long fromJodaTime(DateTime firstDate, DateTime secondDate){ + org.joda.time.Duration duration = new org.joda.time.Duration(firstDate, secondDate); + return Math.abs(duration.getStandardDays()); + } + + public long fromDate4j(hirondelle.date4j.DateTime firstDate, hirondelle.date4j.DateTime secondDate){ + long diff = firstDate.numDaysFrom(secondDate); + return Math.abs(diff); + } +} \ No newline at end of file diff --git a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java new file mode 100644 index 0000000000..fe2b507cf3 --- /dev/null +++ b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java @@ -0,0 +1,60 @@ +package com.baeldung; + +import org.joda.time.DateTime; +import org.junit.Test; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +import static org.junit.Assert.assertEquals; + +public class DateDiffTest { + @Test + public void givenTwoDatesBeforeJava8SeparatedBySixDays_whenCallingDiffOnThem_thenWeGetSix() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH); + Date firstDate = sdf.parse("06/24/2017"); + Date secondDate = sdf.parse("06/30/2017"); + + DateDiff dateDiff = new DateDiff(); + long diff = dateDiff.beforeJava8diff(firstDate, secondDate); + + assertEquals(diff, 6); + } + + @Test + public void givenTheCurrentDateAndSixDaysBehindInJava8_whenCallingDiffOnThem_thenWeGetSix() { + ZonedDateTime now = ZonedDateTime.now(); + ZonedDateTime sixDaysBehind = now.minusDays(6); + + DateDiff dateDiff = new DateDiff(); + long diff = dateDiff.fromJava8Diff(now, sixDaysBehind); + + assertEquals(diff, 6); + } + + @Test + public void givenTheCurrentDateAndSixDaysBehindInJodaTime_whenCallingDiffOnThem_thenWeGetSix() { + DateTime now = DateTime.now(); + DateTime sixDaysBehind = now.minusDays(6); + + DateDiff dateDiff = new DateDiff(); + long diff = dateDiff.fromJodaTime(now, sixDaysBehind); + + assertEquals(diff, 6); + } + + @Test + public void givenTheCurrentDateAndSixDaysBehindInDate4j_whenCallingDiffOnThem_thenWeGetSix() { + hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault()); + hirondelle.date4j.DateTime sixDaysBehind = now.minusDays(6); + + DateDiff dateDiff = new DateDiff(); + long diff = dateDiff.fromDate4j(now, sixDaysBehind); + + assertEquals(diff, 6); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index eef32f884e..d2d9ae3987 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ immutables jackson + java-difference-date java-cassandra javaslang javax-servlets From 348ff5d403c3ebae00ea8ef7e5a681d1cdb5cb03 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 24 Aug 2017 21:36:52 +0100 Subject: [PATCH 030/836] Update README.md --- java-difference-date/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java-difference-date/README.md b/java-difference-date/README.md index 45f8216849..2a024c27a2 100644 --- a/java-difference-date/README.md +++ b/java-difference-date/README.md @@ -1,3 +1,5 @@ ## Relevant articles: -- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) \ No newline at end of file +- [Period and Duration in Java](http://www.baeldung.com/java-period-duration) +- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) +- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) \ No newline at end of file From a663b3ccde9fdbab1c8d2f8f3e0d13d11294b0d8 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Fri, 25 Aug 2017 09:46:35 +0100 Subject: [PATCH 031/836] Simple clean of difference between dates --- core-java/README.md | 3 + core-java/pom.xml | 14 ++++- .../java/com/baeldung/DateDiffUnitTest.java | 63 +++++++++++++++++++ .../src/main/java/com/baeldung/DateDiff.java | 30 --------- .../test/java/com/baeldung/DateDiffTest.java | 25 ++++---- pom.xml | 1 - 6 files changed, 92 insertions(+), 44 deletions(-) create mode 100644 core-java/src/test/java/com/baeldung/DateDiffUnitTest.java delete mode 100644 java-difference-date/src/main/java/com/baeldung/DateDiff.java diff --git a/core-java/README.md b/core-java/README.md index dabf6f39be..a4b5127e98 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -141,3 +141,6 @@ - [Guide to UUID in Java](http://www.baeldung.com/java-uuid) - [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element) - [Guide to Escaping Characters in Java RegExps](http://www.baeldung.com/java-regexp-escape-char) +- [Period and Duration in Java](http://www.baeldung.com/java-period-duration) +- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) +- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) diff --git a/core-java/pom.xml b/core-java/pom.xml index 422965a0ed..586486027a 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -186,6 +186,16 @@ fscontext ${fscontext.version} + + joda-time + joda-time + ${joda-time.version} + + + com.darwinsys + hirondelle-date4j + ${hirondelle-date4j.version} + @@ -408,6 +418,8 @@ 1.8.7 1.16.12 4.6-b01 + 2.9.9 + 1.5.1 1.3 @@ -416,9 +428,9 @@ 3.6.1 1.7.0 + 3.6.0 2.19.1 - diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java new file mode 100644 index 0000000000..40b7fac30d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung; + +import org.joda.time.DateTime; +import org.junit.Test; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertEquals; + +public class DateDiffUnitTest { + + @Test + public void givenTwoDatesBeforeJava8_whenDifferentiating_thenWeGetSix() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH); + Date firstDate = sdf.parse("06/24/2017"); + Date secondDate = sdf.parse("06/30/2017"); + + long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); + long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { + ZonedDateTime now = ZonedDateTime.now(); + ZonedDateTime sixDaysBehind = now.minusDays(6); + + Duration duration = Duration.between(now, sixDaysBehind); + long diff = Math.abs(duration.toDays()); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { + DateTime now = DateTime.now(); + DateTime sixDaysBehind = now.minusDays(6); + + org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind); + long diff = Math.abs(duration.getStandardDays()); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDatesInDate4j_whenDifferentiating_thenWeGetSix() { + hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault()); + hirondelle.date4j.DateTime sixDaysBehind = now.minusDays(6); + + long diff = Math.abs(now.numDaysFrom(sixDaysBehind)); + + assertEquals(diff, 6); + } + +} \ No newline at end of file diff --git a/java-difference-date/src/main/java/com/baeldung/DateDiff.java b/java-difference-date/src/main/java/com/baeldung/DateDiff.java deleted file mode 100644 index 08fc02fab7..0000000000 --- a/java-difference-date/src/main/java/com/baeldung/DateDiff.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung; - -import org.joda.time.DateTime; - -import java.time.Duration; -import java.time.ZonedDateTime; -import java.util.Date; -import java.util.concurrent.TimeUnit; - -public class DateDiff { - public long beforeJava8diff(Date firstDate, Date secondDate){ - long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); - return TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); - } - - public long fromJava8Diff(ZonedDateTime firstDate, ZonedDateTime secondDate){ - Duration duration = Duration.between(firstDate, secondDate); - return Math.abs(duration.toDays()); - } - - public long fromJodaTime(DateTime firstDate, DateTime secondDate){ - org.joda.time.Duration duration = new org.joda.time.Duration(firstDate, secondDate); - return Math.abs(duration.getStandardDays()); - } - - public long fromDate4j(hirondelle.date4j.DateTime firstDate, hirondelle.date4j.DateTime secondDate){ - long diff = firstDate.numDaysFrom(secondDate); - return Math.abs(diff); - } -} \ No newline at end of file diff --git a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java index fe2b507cf3..4203f7ef38 100644 --- a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java +++ b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java @@ -5,55 +5,56 @@ import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.Duration; import java.time.ZonedDateTime; import java.util.Date; import java.util.Locale; import java.util.TimeZone; +import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; public class DateDiffTest { @Test - public void givenTwoDatesBeforeJava8SeparatedBySixDays_whenCallingDiffOnThem_thenWeGetSix() throws ParseException { + public void givenTwoDatesBeforeJava8_whenDifferentiating_thenWeGetSix() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH); Date firstDate = sdf.parse("06/24/2017"); Date secondDate = sdf.parse("06/30/2017"); - DateDiff dateDiff = new DateDiff(); - long diff = dateDiff.beforeJava8diff(firstDate, secondDate); + long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); + long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); assertEquals(diff, 6); } @Test - public void givenTheCurrentDateAndSixDaysBehindInJava8_whenCallingDiffOnThem_thenWeGetSix() { + public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { ZonedDateTime now = ZonedDateTime.now(); ZonedDateTime sixDaysBehind = now.minusDays(6); - DateDiff dateDiff = new DateDiff(); - long diff = dateDiff.fromJava8Diff(now, sixDaysBehind); + Duration duration = Duration.between(now, sixDaysBehind); + long diff = Math.abs(duration.toDays()); assertEquals(diff, 6); } @Test - public void givenTheCurrentDateAndSixDaysBehindInJodaTime_whenCallingDiffOnThem_thenWeGetSix() { + public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { DateTime now = DateTime.now(); DateTime sixDaysBehind = now.minusDays(6); - DateDiff dateDiff = new DateDiff(); - long diff = dateDiff.fromJodaTime(now, sixDaysBehind); + org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind); + long diff = Math.abs(duration.getStandardDays()); assertEquals(diff, 6); } @Test - public void givenTheCurrentDateAndSixDaysBehindInDate4j_whenCallingDiffOnThem_thenWeGetSix() { + public void givenTwoDatesInDate4j_whenDifferentiating_thenWeGetSix() { hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault()); hirondelle.date4j.DateTime sixDaysBehind = now.minusDays(6); - DateDiff dateDiff = new DateDiff(); - long diff = dateDiff.fromDate4j(now, sixDaysBehind); + long diff = Math.abs(now.numDaysFrom(sixDaysBehind)); assertEquals(diff, 6); } diff --git a/pom.xml b/pom.xml index 40e7fda4a3..b5dee350ca 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,6 @@ immutables jackson - java-difference-date vavr javax-servlets From 4f827b93ed171cfa26035d8a9e7897489111abed Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Fri, 25 Aug 2017 12:36:28 +0100 Subject: [PATCH 032/836] Clean my test article --- pom.xml | 1 - spring-types-bean-injection/README.md | 3 - spring-types-bean-injection/pom.xml | 81 ------------------- .../java/com/baeldung/config/AppConfig.java | 25 ------ .../com/baeldung/service/MegaTestService.java | 22 ----- .../baeldung/service/SuperTestService.java | 22 ----- .../com/baeldung/service/TestService.java | 14 ---- .../MegaTestServiceIntegrationTest.java | 32 -------- .../SuperTestServiceIntegrationTest.java | 32 -------- .../service/TestServiceIntegrationTest.java | 32 -------- 10 files changed, 264 deletions(-) delete mode 100644 spring-types-bean-injection/README.md delete mode 100644 spring-types-bean-injection/pom.xml delete mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java delete mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java delete mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java delete mode 100644 spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java delete mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java delete mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java delete mode 100644 spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java diff --git a/pom.xml b/pom.xml index b5dee350ca..f2dd0ae48c 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,6 @@ spring-spel spring-state-machine spring-thymeleaf - spring-types-bean-injection spring-userservice spring-zuul spring-reactor diff --git a/spring-types-bean-injection/README.md b/spring-types-bean-injection/README.md deleted file mode 100644 index 45f8216849..0000000000 --- a/spring-types-bean-injection/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Relevant articles: - -- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) \ No newline at end of file diff --git a/spring-types-bean-injection/pom.xml b/spring-types-bean-injection/pom.xml deleted file mode 100644 index 75fee65d80..0000000000 --- a/spring-types-bean-injection/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - 4.0.0 - - com.baeldung - spring-types-bean-injection - 0.0.1-SNAPSHOT - jar - - spring-types-bean-injection - Types of bean injection in spring - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - org.springframework - spring-context - ${spring.version} - - - org.springframework - spring-test - ${spring.version} - test - - - junit - junit - ${junit.version} - test - - - - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - - - - 1.8 - 4.3.10.RELEASE - 4.12 - - - diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java b/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java deleted file mode 100644 index 45be32fa06..0000000000 --- a/spring-types-bean-injection/src/main/java/com/baeldung/config/AppConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.config; - -import com.baeldung.service.MegaTestService; -import com.baeldung.service.SuperTestService; -import com.baeldung.service.TestService; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class AppConfig { - @Bean - public TestService TestService() { - return new TestService(); - } - - @Bean - public SuperTestService SuperTestService() { - return new SuperTestService(new TestService()); - } - - @Bean - public MegaTestService MegaTestService() { - return new MegaTestService(); - } -} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java deleted file mode 100644 index 45deeb8592..0000000000 --- a/spring-types-bean-injection/src/main/java/com/baeldung/service/MegaTestService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class MegaTestService { - private TestService testService; - - @Autowired - public void setTestService(TestService testService) { - this.testService = testService; - } - - public String getMegaTestOne() { - return "Mega" + testService.getTestOne(); - } - - public String getMegaTestTwo() { - return "Mega" + testService.getTestTwo(); - } -} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java deleted file mode 100644 index edf1f2b1c5..0000000000 --- a/spring-types-bean-injection/src/main/java/com/baeldung/service/SuperTestService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class SuperTestService { - private TestService testService; - - @Autowired - public SuperTestService(TestService testService) { - this.testService = testService; - } - - public String getSuperTestOne() { - return "Super" + testService.getTestOne(); - } - - public String getSuperTestTwo() { - return "Super" + testService.getTestTwo(); - } -} diff --git a/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java b/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java deleted file mode 100644 index 3e7c327dbd..0000000000 --- a/spring-types-bean-injection/src/main/java/com/baeldung/service/TestService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.service; - -import org.springframework.stereotype.Service; - -@Service -public class TestService { - public String getTestOne() { - return "TestOne"; - } - - public String getTestTwo() { - return "TestTwo"; - } -} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java deleted file mode 100644 index ced897c70c..0000000000 --- a/spring-types-bean-injection/src/test/java/com/baeldung/service/MegaTestServiceIntegrationTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.service; - -import com.baeldung.config.AppConfig; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.hamcrest.CoreMatchers.is; - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {AppConfig.class}) -public class MegaTestServiceIntegrationTest { - @Autowired - MegaTestService megaTestService; - - @Test - public void whenCallingGetMegaTestOne_thenWeGetMegaTestOneString() { - String resultOne = megaTestService.getMegaTestOne(); - - Assert.assertThat(resultOne, is("MegaTestOne")); - } - - @Test - public void whenCallingGetMegaTestTwo_thenWeGetMegaTestTwoString() { - String resultTwo = megaTestService.getMegaTestTwo(); - - Assert.assertThat(resultTwo, is("MegaTestTwo")); - } -} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java deleted file mode 100644 index a037d70c40..0000000000 --- a/spring-types-bean-injection/src/test/java/com/baeldung/service/SuperTestServiceIntegrationTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.service; - -import com.baeldung.config.AppConfig; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.hamcrest.CoreMatchers.is; - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {AppConfig.class}) -public class SuperTestServiceIntegrationTest { - @Autowired - SuperTestService superTestService; - - @Test - public void whenCallingGetSuperTestOne_thenWeGetSuperTestOneString() { - String resultOne = superTestService.getSuperTestOne(); - - Assert.assertThat(resultOne, is("SuperTestOne")); - } - - @Test - public void whenCallingGetSuperTestTwo_thenWeGetSuperTestTwoString() { - String resultTwo = superTestService.getSuperTestTwo(); - - Assert.assertThat(resultTwo, is("SuperTestTwo")); - } -} diff --git a/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java b/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java deleted file mode 100644 index 2059e87e04..0000000000 --- a/spring-types-bean-injection/src/test/java/com/baeldung/service/TestServiceIntegrationTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.service; - -import com.baeldung.config.AppConfig; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.hamcrest.CoreMatchers.is; - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = { AppConfig.class }) -public class TestServiceIntegrationTest { - @Autowired - TestService testService; - - @Test - public void whenCallingGetTestOne_thenWeGetTestOneString() { - String resultOne = testService.getTestOne(); - - Assert.assertThat(resultOne, is("TestOne")); - } - - @Test - public void whenCallingGetTestTwo_thenWeGetTestTwoString() { - String resultTwo = testService.getTestTwo(); - - Assert.assertThat(resultTwo, is("TestTwo")); - } -} \ No newline at end of file From c4fd005da4d41ea4efffecb8a0ac7b1a93d6cc8f Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Mon, 28 Aug 2017 05:23:07 +0100 Subject: [PATCH 033/836] Improve dates diff: for dates and datetimes --- .../java/com/baeldung/DateDiffUnitTest.java | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java index 40b7fac30d..ae9bae0050 100644 --- a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java +++ b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java @@ -1,12 +1,14 @@ package com.baeldung; import org.joda.time.DateTime; +import org.joda.time.Interval; import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; -import java.time.ZonedDateTime; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; import java.util.Locale; import java.util.TimeZone; @@ -30,8 +32,8 @@ public class DateDiffUnitTest { @Test public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { - ZonedDateTime now = ZonedDateTime.now(); - ZonedDateTime sixDaysBehind = now.minusDays(6); + LocalDate now = LocalDate.now(); + LocalDate sixDaysBehind = now.minusDays(6); Duration duration = Duration.between(now, sixDaysBehind); long diff = Math.abs(duration.toDays()); @@ -40,12 +42,34 @@ public class DateDiffUnitTest { } @Test - public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { - DateTime now = DateTime.now(); - DateTime sixDaysBehind = now.minusDays(6); + public void givenTwoDateTimesInJava8_whenDifferentiating_thenWeGetSix() { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime sixMinutesBehind = now.minusMinutes(6); - org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind); - long diff = Math.abs(duration.getStandardDays()); + Duration duration = Duration.between(now, sixMinutesBehind); + long diff = Math.abs(duration.toMinutes()); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { + org.joda.time.LocalDate now = org.joda.time.LocalDate.now(); + org.joda.time.LocalDate sixDaysBehind = now.minusDays(6); + + org.joda.time.Period period = new org.joda.time.Period(now, sixDaysBehind); + long diff = Math.abs(period.getDays()); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDateTimesInJodaTime_whenDifferentiating_thenWeGetSix() { + org.joda.time.LocalDateTime now = org.joda.time.LocalDateTime.now(); + org.joda.time.LocalDateTime sixMinutesBehind = now.minusMinutes(6); + + org.joda.time.Period period = new org.joda.time.Period(now, sixMinutesBehind); + long diff = Math.abs(period.getDays()); assertEquals(diff, 6); } From 89d89e6dcef7df1a291394cb501ab46cd246f57a Mon Sep 17 00:00:00 2001 From: Parth Karia Date: Fri, 11 Aug 2017 15:25:43 +0530 Subject: [PATCH 034/836] BAEL-243 Spring Batch using Partitioner --- .../CustomMultiResourcePartitioner.java | 77 ++++++++ .../SpringbatchPartitionConfig.java | 169 ++++++++++++++++++ .../SpringbatchPartitionerApp.java | 28 +++ 3 files changed, 274 insertions(+) create mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java create mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java create mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java new file mode 100644 index 0000000000..4cae69efbd --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java @@ -0,0 +1,77 @@ +/* + * Copyright 2006-2013 the original author or authors. + * + * 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 org.baeldung.spring_batch_intro.partitioner; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.batch.core.partition.support.Partitioner; +import org.springframework.batch.item.ExecutionContext; +import org.springframework.core.io.Resource; +import org.springframework.util.Assert; + +public class CustomMultiResourcePartitioner implements Partitioner { + + private static final String DEFAULT_KEY_NAME = "fileName"; + + private static final String PARTITION_KEY = "partition"; + + private Resource[] resources = new Resource[0]; + + private String keyName = DEFAULT_KEY_NAME; + + /** + * The resources to assign to each partition. In Spring configuration you + * can use a pattern to select multiple resources. + * @param resources the resources to use + */ + public void setResources(Resource[] resources) { + this.resources = resources; + } + + /** + * The name of the key for the file name in each {@link ExecutionContext}. + * Defaults to "fileName". + * @param keyName the value of the key + */ + public void setKeyName(String keyName) { + this.keyName = keyName; + } + + /** + * Assign the filename of each of the injected resources to an + * {@link ExecutionContext}. + * + * @see Partitioner#partition(int) + */ + @Override + public Map partition(int gridSize) { + Map map = new HashMap(gridSize); + int i = 0, k = 1; + for (Resource resource : resources) { + ExecutionContext context = new ExecutionContext(); + Assert.state(resource.exists(), "Resource does not exist: " + resource); + context.putString(keyName, resource.getFilename()); + context.putString("opFileName", "output" + k++ + ".xml"); + + map.put(PARTITION_KEY + i, context); + i++; + } + return map; + } + +} diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java new file mode 100644 index 0000000000..fe8339a8b4 --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java @@ -0,0 +1,169 @@ +package org.baeldung.spring_batch_intro.partitioner; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.text.ParseException; + +import javax.sql.DataSource; + +import org.baeldung.spring_batch_intro.model.Transaction; +import org.baeldung.spring_batch_intro.service.RecordFieldSetMapper; +import org.springframework.batch.core.Job; +import org.springframework.batch.core.Step; +import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; +import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; +import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; +import org.springframework.batch.core.configuration.annotation.StepScope; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.batch.core.launch.support.SimpleJobLauncher; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; +import org.springframework.batch.item.UnexpectedInputException; +import org.springframework.batch.item.file.FlatFileItemReader; +import org.springframework.batch.item.file.mapping.DefaultLineMapper; +import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; +import org.springframework.batch.item.xml.StaxEventItemWriter; +import org.springframework.batch.support.transaction.ResourcelessTransactionManager; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.core.task.TaskExecutor; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.oxm.Marshaller; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.transaction.PlatformTransactionManager; + +@Configuration +@EnableBatchProcessing +public class SpringbatchPartitionConfig { + + @Autowired + ResourcePatternResolver resoursePatternResolver; + + @Autowired + private JobBuilderFactory jobs; + + @Autowired + private StepBuilderFactory steps; + + @Bean(name = "partitionerJob") + public Job partitionerJob() throws UnexpectedInputException, MalformedURLException, ParseException { + return jobs.get("partitionerJob") + .start(partitionStep()) + .build(); + } + + @Bean + public Step partitionStep() throws UnexpectedInputException, MalformedURLException, ParseException { + return steps.get("partitionStep") + .partitioner("slaveStep", partitioner()) + .step(slaveStep()) + .taskExecutor(taskExecutor()) + .build(); + } + + @Bean + public Step slaveStep() throws UnexpectedInputException, MalformedURLException, ParseException { + return steps.get("slaveStep") + . chunk(1) + .reader(itemReader(null)) + .writer(itemWriter(marshaller(), null)) + .build(); + } + + @Bean + public CustomMultiResourcePartitioner partitioner() { + CustomMultiResourcePartitioner partitioner = new CustomMultiResourcePartitioner(); + Resource[] resources; + try { + resources = resoursePatternResolver.getResources("file:src/main/resources/input/partitioner/*.csv"); + } catch (IOException e) { + throw new RuntimeException("I/O problems when resolving the input file pattern.", e); + } + partitioner.setResources(resources); + return partitioner; + } + + @Bean + @StepScope + public FlatFileItemReader itemReader(@Value("#{stepExecutionContext[fileName]}") String filename) throws UnexpectedInputException, ParseException { + FlatFileItemReader reader = new FlatFileItemReader(); + DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); + String[] tokens = { "username", "userid", "transactiondate", "amount" }; + tokenizer.setNames(tokens); + reader.setResource(new ClassPathResource("input/partitioner/" + filename)); + DefaultLineMapper lineMapper = new DefaultLineMapper(); + lineMapper.setLineTokenizer(tokenizer); + lineMapper.setFieldSetMapper(new RecordFieldSetMapper()); + reader.setLinesToSkip(1); + reader.setLineMapper(lineMapper); + return reader; + } + + @Bean(destroyMethod = "") + @StepScope + public StaxEventItemWriter itemWriter(Marshaller marshaller, @Value("#{stepExecutionContext[opFileName]}") String filename) throws MalformedURLException { + StaxEventItemWriter itemWriter = new StaxEventItemWriter<>(); + itemWriter.setMarshaller(marshaller); + itemWriter.setRootTagName("transactionRecord"); + itemWriter.setResource(new FileSystemResource("src/main/resources/output/" + filename)); + return itemWriter; + } + + @Bean + public Marshaller marshaller() { + Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); + marshaller.setClassesToBeBound(new Class[] { Transaction.class }); + return marshaller; + } + + @Bean + public TaskExecutor taskExecutor() { + ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); + taskExecutor.setMaxPoolSize(5); + taskExecutor.setCorePoolSize(5); + taskExecutor.setQueueCapacity(5); + taskExecutor.afterPropertiesSet(); + return taskExecutor; + } + + private JobRepository getJobRepository() throws Exception { + JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); + factory.setDataSource(dataSource()); + factory.setTransactionManager(getTransactionManager()); + // JobRepositoryFactoryBean's methods Throws Generic Exception, + // it would have been better to have a specific one + factory.afterPropertiesSet(); + return (JobRepository) factory.getObject(); + } + + private DataSource dataSource() { + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); + EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL) + .addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql") + .addScript("classpath:org/springframework/batch/core/schema-h2.sql") + .build(); + return db; + } + + private PlatformTransactionManager getTransactionManager() { + return new ResourcelessTransactionManager(); + } + + public JobLauncher getJobLauncher() throws Exception { + SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); + // SimpleJobLauncher's methods Throws Generic Exception, + // it would have been better to have a specific one + jobLauncher.setJobRepository(getJobRepository()); + jobLauncher.afterPropertiesSet(); + return jobLauncher; + } +} diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java new file mode 100644 index 0000000000..1d6d922969 --- /dev/null +++ b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java @@ -0,0 +1,28 @@ +package org.baeldung.spring_batch_intro.partitioner; + +import org.springframework.batch.core.Job; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobParameters; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +public class SpringbatchPartitionerApp { + public static void main(final String[] args) { + // Spring Java config + final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + context.register(SpringbatchPartitionConfig.class); + context.refresh(); + + final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); + final Job job = (Job) context.getBean("partitionerJob"); + System.out.println("Starting the batch job"); + try { + final JobExecution execution = jobLauncher.run(job, new JobParameters()); + System.out.println("Job Status : " + execution.getStatus()); + System.out.println("Job succeeded"); + } catch (final Exception e) { + e.printStackTrace(); + System.out.println("Job failed"); + } + } +} \ No newline at end of file From 9f9fbc4523d58ce40570f20a9dd631fda3322d41 Mon Sep 17 00:00:00 2001 From: parthkaria Date: Tue, 29 Aug 2017 17:14:13 +0530 Subject: [PATCH 035/836] BAEL-1106 Introduction to javax.measure --- core-java/pom.xml | 8 +++ .../com/baeldung/javax/measure/WaterTank.java | 26 +++++++ .../javax/measure/WaterTankTests.java | 68 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java create mode 100644 core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java diff --git a/core-java/pom.xml b/core-java/pom.xml index 0f8a665fa1..5410ea54e2 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -212,6 +212,13 @@ streamex ${streamex.version} + + + javax.measure + jsr-275 + ${javax-measure.version} + + @@ -438,6 +445,7 @@ 1.5.1 1.13 0.6.5 + 0.9.1 1.3 diff --git a/core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java b/core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java new file mode 100644 index 0000000000..1ab9eee53f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java @@ -0,0 +1,26 @@ +package com.baeldung.javax.measure; + +import javax.measure.Measure; +import javax.measure.quantity.Volume; + +public class WaterTank { + + private Measure capacityMeasure; + private double capacityDouble; + + public void setCapacityMeasure(Measure capacityMeasure) { + this.capacityMeasure = capacityMeasure; + } + + public void setCapacityDouble(double capacityDouble) { + this.capacityDouble = capacityDouble; + } + + public Measure getCapacityMeasure() { + return capacityMeasure; + } + + public double getCapacityDouble() { + return capacityDouble; + } +} diff --git a/core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java b/core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java new file mode 100644 index 0000000000..ef54035353 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java @@ -0,0 +1,68 @@ +package com.baeldung.javax.measure; + +import javax.measure.Measure; +import javax.measure.converter.UnitConverter; +import javax.measure.quantity.Duration; +import javax.measure.quantity.Length; +import javax.measure.quantity.Pressure; +import javax.measure.quantity.Volume; +import static javax.measure.unit.NonSI.HOUR; +import static javax.measure.unit.NonSI.LITRE; +import static javax.measure.unit.NonSI.MILE; +import static javax.measure.unit.NonSI.MINUTE; +import javax.measure.unit.SI; +import static javax.measure.unit.SI.KILO; +import static javax.measure.unit.SI.METER; +import static javax.measure.unit.SI.NEWTON; +import static javax.measure.unit.SI.SECOND; +import javax.measure.unit.Unit; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +public class WaterTankTests { + + @Test + public void givenMeasure_whenGetUnitAndConvertValue_thenSuccess() { + WaterTank waterTank = new WaterTank(); + waterTank.setCapacityMeasure(Measure.valueOf(9.2, LITRE)); + assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit()); + + Measure waterCapacity = waterTank.getCapacityMeasure(); + double volumeInLitre = waterCapacity.getValue().doubleValue(); + assertEquals(9.2, volumeInLitre, 0.0f); + + double volumeInMilliLitre = waterCapacity.doubleValue(SI.MILLI(LITRE)); + assertEquals(9200.0, volumeInMilliLitre, 0.0f); + + Unit Kilometer = SI.KILO(METER); + Unit Centimeter = SI.CENTI(METER); + } + + @Test + public void givenMeasure_whenAlternateMeasure_ThenGetAlternateMeasure() { + Unit PASCAL = NEWTON.divide(METER.pow(2)).alternate("Pa"); + assertTrue(Unit.valueOf("Pa").equals(PASCAL)); + } + + @Test + public void givenMeasure_whenCompoundMeasure_ThenGetCompoundMeasure() { + Unit HOUR_MINUTE_SECOND = HOUR.compound(MINUTE).compound(SECOND); + Measure duration = Measure.valueOf(12345, SECOND); + assertEquals("3h25min45s", duration.to(HOUR_MINUTE_SECOND).toString()); + } + + @Test + public void givenMiles_whenConvertToKilometer_ThenConverted() { + double distanceInMiles = 50.0; + UnitConverter mileToKilometer = MILE.getConverterTo(KILO(METER)); + double distanceInKilometers = mileToKilometer.convert(distanceInMiles); + assertEquals(80.4672, distanceInKilometers, 0.00f); + } + + @Test + public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() { + assertTrue(Unit.valueOf("kW").equals(SI.KILO(SI.WATT))); + assertTrue(Unit.valueOf("ms").equals(SI.SECOND.divide(1000))); + } +} From e573e2c43b35809f5521fa47ce8d4c6dea760348 Mon Sep 17 00:00:00 2001 From: parthkaria Date: Tue, 29 Aug 2017 17:37:29 +0530 Subject: [PATCH 036/836] Unnecessary Committed --- .../CustomMultiResourcePartitioner.java | 77 -------- .../SpringbatchPartitionConfig.java | 169 ------------------ .../SpringbatchPartitionerApp.java | 28 --- 3 files changed, 274 deletions(-) delete mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java delete mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java delete mode 100644 spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java deleted file mode 100644 index 4cae69efbd..0000000000 --- a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/CustomMultiResourcePartitioner.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2006-2013 the original author or authors. - * - * 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 org.baeldung.spring_batch_intro.partitioner; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.batch.core.partition.support.Partitioner; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.core.io.Resource; -import org.springframework.util.Assert; - -public class CustomMultiResourcePartitioner implements Partitioner { - - private static final String DEFAULT_KEY_NAME = "fileName"; - - private static final String PARTITION_KEY = "partition"; - - private Resource[] resources = new Resource[0]; - - private String keyName = DEFAULT_KEY_NAME; - - /** - * The resources to assign to each partition. In Spring configuration you - * can use a pattern to select multiple resources. - * @param resources the resources to use - */ - public void setResources(Resource[] resources) { - this.resources = resources; - } - - /** - * The name of the key for the file name in each {@link ExecutionContext}. - * Defaults to "fileName". - * @param keyName the value of the key - */ - public void setKeyName(String keyName) { - this.keyName = keyName; - } - - /** - * Assign the filename of each of the injected resources to an - * {@link ExecutionContext}. - * - * @see Partitioner#partition(int) - */ - @Override - public Map partition(int gridSize) { - Map map = new HashMap(gridSize); - int i = 0, k = 1; - for (Resource resource : resources) { - ExecutionContext context = new ExecutionContext(); - Assert.state(resource.exists(), "Resource does not exist: " + resource); - context.putString(keyName, resource.getFilename()); - context.putString("opFileName", "output" + k++ + ".xml"); - - map.put(PARTITION_KEY + i, context); - i++; - } - return map; - } - -} diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java deleted file mode 100644 index fe8339a8b4..0000000000 --- a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionConfig.java +++ /dev/null @@ -1,169 +0,0 @@ -package org.baeldung.spring_batch_intro.partitioner; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.text.ParseException; - -import javax.sql.DataSource; - -import org.baeldung.spring_batch_intro.model.Transaction; -import org.baeldung.spring_batch_intro.service.RecordFieldSetMapper; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.launch.support.SimpleJobLauncher; -import org.springframework.batch.core.repository.JobRepository; -import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; -import org.springframework.batch.item.UnexpectedInputException; -import org.springframework.batch.item.file.FlatFileItemReader; -import org.springframework.batch.item.file.mapping.DefaultLineMapper; -import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; -import org.springframework.batch.item.xml.StaxEventItemWriter; -import org.springframework.batch.support.transaction.ResourcelessTransactionManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.task.TaskExecutor; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; -import org.springframework.oxm.Marshaller; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.transaction.PlatformTransactionManager; - -@Configuration -@EnableBatchProcessing -public class SpringbatchPartitionConfig { - - @Autowired - ResourcePatternResolver resoursePatternResolver; - - @Autowired - private JobBuilderFactory jobs; - - @Autowired - private StepBuilderFactory steps; - - @Bean(name = "partitionerJob") - public Job partitionerJob() throws UnexpectedInputException, MalformedURLException, ParseException { - return jobs.get("partitionerJob") - .start(partitionStep()) - .build(); - } - - @Bean - public Step partitionStep() throws UnexpectedInputException, MalformedURLException, ParseException { - return steps.get("partitionStep") - .partitioner("slaveStep", partitioner()) - .step(slaveStep()) - .taskExecutor(taskExecutor()) - .build(); - } - - @Bean - public Step slaveStep() throws UnexpectedInputException, MalformedURLException, ParseException { - return steps.get("slaveStep") - . chunk(1) - .reader(itemReader(null)) - .writer(itemWriter(marshaller(), null)) - .build(); - } - - @Bean - public CustomMultiResourcePartitioner partitioner() { - CustomMultiResourcePartitioner partitioner = new CustomMultiResourcePartitioner(); - Resource[] resources; - try { - resources = resoursePatternResolver.getResources("file:src/main/resources/input/partitioner/*.csv"); - } catch (IOException e) { - throw new RuntimeException("I/O problems when resolving the input file pattern.", e); - } - partitioner.setResources(resources); - return partitioner; - } - - @Bean - @StepScope - public FlatFileItemReader itemReader(@Value("#{stepExecutionContext[fileName]}") String filename) throws UnexpectedInputException, ParseException { - FlatFileItemReader reader = new FlatFileItemReader(); - DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); - String[] tokens = { "username", "userid", "transactiondate", "amount" }; - tokenizer.setNames(tokens); - reader.setResource(new ClassPathResource("input/partitioner/" + filename)); - DefaultLineMapper lineMapper = new DefaultLineMapper(); - lineMapper.setLineTokenizer(tokenizer); - lineMapper.setFieldSetMapper(new RecordFieldSetMapper()); - reader.setLinesToSkip(1); - reader.setLineMapper(lineMapper); - return reader; - } - - @Bean(destroyMethod = "") - @StepScope - public StaxEventItemWriter itemWriter(Marshaller marshaller, @Value("#{stepExecutionContext[opFileName]}") String filename) throws MalformedURLException { - StaxEventItemWriter itemWriter = new StaxEventItemWriter<>(); - itemWriter.setMarshaller(marshaller); - itemWriter.setRootTagName("transactionRecord"); - itemWriter.setResource(new FileSystemResource("src/main/resources/output/" + filename)); - return itemWriter; - } - - @Bean - public Marshaller marshaller() { - Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); - marshaller.setClassesToBeBound(new Class[] { Transaction.class }); - return marshaller; - } - - @Bean - public TaskExecutor taskExecutor() { - ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); - taskExecutor.setMaxPoolSize(5); - taskExecutor.setCorePoolSize(5); - taskExecutor.setQueueCapacity(5); - taskExecutor.afterPropertiesSet(); - return taskExecutor; - } - - private JobRepository getJobRepository() throws Exception { - JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); - factory.setDataSource(dataSource()); - factory.setTransactionManager(getTransactionManager()); - // JobRepositoryFactoryBean's methods Throws Generic Exception, - // it would have been better to have a specific one - factory.afterPropertiesSet(); - return (JobRepository) factory.getObject(); - } - - private DataSource dataSource() { - EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL) - .addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql") - .addScript("classpath:org/springframework/batch/core/schema-h2.sql") - .build(); - return db; - } - - private PlatformTransactionManager getTransactionManager() { - return new ResourcelessTransactionManager(); - } - - public JobLauncher getJobLauncher() throws Exception { - SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); - // SimpleJobLauncher's methods Throws Generic Exception, - // it would have been better to have a specific one - jobLauncher.setJobRepository(getJobRepository()); - jobLauncher.afterPropertiesSet(); - return jobLauncher; - } -} diff --git a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java b/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java deleted file mode 100644 index 1d6d922969..0000000000 --- a/spring-batch/src/main/java/org/baeldung/spring_batch_intro/partitioner/SpringbatchPartitionerApp.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.baeldung.spring_batch_intro.partitioner; - -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; - -public class SpringbatchPartitionerApp { - public static void main(final String[] args) { - // Spring Java config - final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - context.register(SpringbatchPartitionConfig.class); - context.refresh(); - - final JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); - final Job job = (Job) context.getBean("partitionerJob"); - System.out.println("Starting the batch job"); - try { - final JobExecution execution = jobLauncher.run(job, new JobParameters()); - System.out.println("Job Status : " + execution.getStatus()); - System.out.println("Job succeeded"); - } catch (final Exception e) { - e.printStackTrace(); - System.out.println("Job failed"); - } - } -} \ No newline at end of file From 82ed9489e51c85a7a623491c3be9d1090a2b4af0 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Wed, 30 Aug 2017 14:35:38 +0100 Subject: [PATCH 037/836] Move difference between dates from core-java to libraries --- core-java/pom.xml | 13 ------------- libraries/pom.xml | 18 ++++++++++++++++++ .../com/baeldung/date}/DateDiffUnitTest.java | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) rename {core-java/src/test/java/com/baeldung => libraries/src/test/java/com/baeldung/date}/DateDiffUnitTest.java (98%) diff --git a/core-java/pom.xml b/core-java/pom.xml index 586486027a..25029c237f 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -186,16 +186,6 @@ fscontext ${fscontext.version} - - joda-time - joda-time - ${joda-time.version} - - - com.darwinsys - hirondelle-date4j - ${hirondelle-date4j.version} - @@ -418,9 +408,6 @@ 1.8.7 1.16.12 4.6-b01 - 2.9.9 - 1.5.1 - 1.3 4.12 diff --git a/libraries/pom.xml b/libraries/pom.xml index 6d1098246e..ee92642b62 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -498,6 +498,22 @@ gt-swing ${geotools.version} + + com.darwinsys + hirondelle-date4j + RELEASE + test + + + joda-time + joda-time + ${joda-time.version} + + + com.darwinsys + hirondelle-date4j + ${hirondelle-date4j.version} + @@ -564,5 +580,7 @@ 0.6.5 0.9.0 15.2 + 2.9.9 + 1.5.1 \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/DateDiffUnitTest.java rename to libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java index 324a0d4587..6046781619 100644 --- a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java +++ b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.date; import org.junit.Test; From f6216f27549b70ea891582cab92311b554b0697d Mon Sep 17 00:00:00 2001 From: parthkaria Date: Thu, 31 Aug 2017 12:55:56 +0530 Subject: [PATCH 038/836] BAEL-1106 Move code to libraries from core-java --- core-java/pom.xml | 7 ------- libraries/pom.xml | 6 ++++++ .../main/java/com/baeldung/javax/measure/WaterTank.java | 0 .../java/com/baeldung/javax/measure/WaterTankTests.java | 0 4 files changed, 6 insertions(+), 7 deletions(-) rename {core-java => libraries}/src/main/java/com/baeldung/javax/measure/WaterTank.java (100%) rename {core-java => libraries}/src/test/java/com/baeldung/javax/measure/WaterTankTests.java (100%) diff --git a/core-java/pom.xml b/core-java/pom.xml index 5410ea54e2..c532d80bd6 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -213,12 +213,6 @@ ${streamex.version} - - javax.measure - jsr-275 - ${javax-measure.version} - - @@ -445,7 +439,6 @@ 1.5.1 1.13 0.6.5 - 0.9.1 1.3 diff --git a/libraries/pom.xml b/libraries/pom.xml index cf16f0fb79..9b8f3f0a77 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -498,6 +498,11 @@ gt-swing ${geotools.version} + + javax.measure + jsr-275 + ${javax-measure.version} + @@ -564,5 +569,6 @@ 0.6.5 0.9.0 15.2 + 0.9.1 diff --git a/core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java b/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java similarity index 100% rename from core-java/src/main/java/com/baeldung/javax/measure/WaterTank.java rename to libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java diff --git a/core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java b/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java similarity index 100% rename from core-java/src/test/java/com/baeldung/javax/measure/WaterTankTests.java rename to libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java From 99e9e2332b9d46627836b85a1ed484fec3a53120 Mon Sep 17 00:00:00 2001 From: parthkaria Date: Thu, 31 Aug 2017 12:57:54 +0530 Subject: [PATCH 039/836] BAEL-1106 Move code to libraries from core-java --- core-java/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index c532d80bd6..0f8a665fa1 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -212,7 +212,6 @@ streamex ${streamex.version} - From cccaa8c4ad6c65d7567a9ffad6f08acffb72ae89 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 7 Sep 2017 23:44:30 +0100 Subject: [PATCH 040/836] BAEL-890 - Kotlin-Allopen with Spring example --- spring-mvc-kotlin/pom.xml | 21 +++++++++++++++++-- .../kotlin/allopen/SimpleConfiguration.kt | 7 +++++++ .../kotlin/allopen/SimpleConfigurationTest.kt | 19 +++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/allopen/SimpleConfiguration.kt create mode 100644 spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/allopen/SimpleConfigurationTest.kt diff --git a/spring-mvc-kotlin/pom.xml b/spring-mvc-kotlin/pom.xml index 264cf49817..2d1dac5e29 100644 --- a/spring-mvc-kotlin/pom.xml +++ b/spring-mvc-kotlin/pom.xml @@ -45,6 +45,12 @@ thymeleaf-spring4 3.0.7.RELEASE + + org.springframework + spring-test + 4.3.10.RELEASE + test + @@ -55,7 +61,12 @@ kotlin-maven-plugin org.jetbrains.kotlin 1.1.4 - + + + spring + + 1.8 + compile @@ -64,7 +75,6 @@ compile - test-compile test-compile @@ -73,6 +83,13 @@ + + + org.jetbrains.kotlin + kotlin-maven-allopen + 1.1.4-3 + + diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/allopen/SimpleConfiguration.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/allopen/SimpleConfiguration.kt new file mode 100644 index 0000000000..5d0a3e13bf --- /dev/null +++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/allopen/SimpleConfiguration.kt @@ -0,0 +1,7 @@ +package com.baeldung.kotlin.allopen + +import org.springframework.context.annotation.Configuration + +@Configuration +class SimpleConfiguration { +} \ No newline at end of file diff --git a/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/allopen/SimpleConfigurationTest.kt b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/allopen/SimpleConfigurationTest.kt new file mode 100644 index 0000000000..65a60c7157 --- /dev/null +++ b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/allopen/SimpleConfigurationTest.kt @@ -0,0 +1,19 @@ +package com.baeldung.kotlin.allopen + +import org.junit.Test +import org.junit.runner.RunWith +import org.springframework.test.context.ContextConfiguration +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner +import org.springframework.test.context.support.AnnotationConfigContextLoader + +@RunWith(SpringJUnit4ClassRunner::class) +@ContextConfiguration( + loader = AnnotationConfigContextLoader::class, + classes = arrayOf(SimpleConfiguration::class)) +class SimpleConfigurationTest { + + @Test + fun contextLoads() { + } + +} \ No newline at end of file From 119c288942d7f3547515ec773f1e106c6cb50676 Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Fri, 8 Sep 2017 11:09:04 +0200 Subject: [PATCH 041/836] BAEL-1069: Guide to diamond operator in Java --- .../java/org/baeldung/java/diamond/Car.java | 5 +++++ .../java/diamond/DiamondOperatorTest.java | 13 +++++++++++++ .../java/org/baeldung/java/diamond/Diesel.java | 10 ++++++++++ .../java/org/baeldung/java/diamond/Engine.java | 6 ++++++ .../java/org/baeldung/java/diamond/Vehicle.java | 5 +++++ .../baeldung/java/rawtypes/RawTypesTest.java | 17 +++++++++++++++++ 6 files changed, 56 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/diamond/Car.java create mode 100644 core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java create mode 100644 core-java/src/test/java/org/baeldung/java/diamond/Diesel.java create mode 100644 core-java/src/test/java/org/baeldung/java/diamond/Engine.java create mode 100644 core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java create mode 100644 core-java/src/test/java/org/baeldung/java/rawtypes/RawTypesTest.java diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Car.java b/core-java/src/test/java/org/baeldung/java/diamond/Car.java new file mode 100644 index 0000000000..9f923e0f3b --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/diamond/Car.java @@ -0,0 +1,5 @@ +package org.baeldung.java.diamond; + +public class Car implements Vehicle { + +} diff --git a/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java b/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java new file mode 100644 index 0000000000..ceb7c87100 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java @@ -0,0 +1,13 @@ +package org.baeldung.java.diamond; + +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; + +public class DiamondOperatorTest { + @Test + public void shouldCreateCarUsingDiamondWithoutWarnings() { + Car myCar = new Car<>(); + assertNotNull(myCar); + } +} diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Diesel.java b/core-java/src/test/java/org/baeldung/java/diamond/Diesel.java new file mode 100644 index 0000000000..dc4256cdae --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/diamond/Diesel.java @@ -0,0 +1,10 @@ +package org.baeldung.java.diamond; + +public class Diesel implements Engine { + + @Override + public void start() { + System.out.println("Started Diesel..."); + } + +} diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Engine.java b/core-java/src/test/java/org/baeldung/java/diamond/Engine.java new file mode 100644 index 0000000000..c18a8f64b5 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/diamond/Engine.java @@ -0,0 +1,6 @@ +package org.baeldung.java.diamond; + +public interface Engine { + + void start(); +} diff --git a/core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java b/core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java new file mode 100644 index 0000000000..f61cf59620 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/diamond/Vehicle.java @@ -0,0 +1,5 @@ +package org.baeldung.java.diamond; + +public interface Vehicle { + +} diff --git a/core-java/src/test/java/org/baeldung/java/rawtypes/RawTypesTest.java b/core-java/src/test/java/org/baeldung/java/rawtypes/RawTypesTest.java new file mode 100644 index 0000000000..2b36786abf --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/rawtypes/RawTypesTest.java @@ -0,0 +1,17 @@ +package org.baeldung.java.rawtypes; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +public class RawTypesTest { + @Test + public void shouldCreateListUsingRawTypes() { + @SuppressWarnings("rawtypes") + List myList = new ArrayList(); + myList.add(new Object()); + myList.add("2"); + myList.add(new Integer(1)); + } +} From d56dbc081d49111f2e1f041a2ff948fdd2076ca5 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 9 Sep 2017 20:34:03 +0200 Subject: [PATCH 042/836] BAEL-1109 Introduction to JCache --- libraries/pom.xml | 33 ++++++++++++- .../com/baeldung/jcache/CacheLoaderTest.java | 35 ++++++++++++++ .../baeldung/jcache/EntryProcessorTest.java | 32 +++++++++++++ .../baeldung/jcache/EventListenerTest.java | 46 +++++++++++++++++++ .../java/com/baeldung/jcache/JCacheTest.java | 27 +++++++++++ .../jcache/SimpleCacheEntryListener.java | 34 ++++++++++++++ .../baeldung/jcache/SimpleCacheLoader.java | 24 ++++++++++ .../baeldung/jcache/SimpleEntryProcessor.java | 25 ++++++++++ 8 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/JCacheTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java diff --git a/libraries/pom.xml b/libraries/pom.xml index a16a4de59d..51c79ef0dd 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -226,6 +226,10 @@ commons-logging commons-logging + + org.slf4j + slf4j-log4j12 + @@ -237,6 +241,10 @@ commons-logging commons-logging + + org.slf4j + slf4j-log4j12 + @@ -244,6 +252,12 @@ flink-test-utils_2.10 ${flink.version} test + + + org.slf4j + slf4j-log4j12 + + org.apache.commons @@ -467,11 +481,23 @@ noexception 1.1.0 - + org.eclipse.collections eclipse-collections ${eclipse-collections.version} + + javax.cache + cache-api + ${cache.version} + + + com.hazelcast + hazelcast + ${hazelcast.version} + + + 0.7.0 @@ -513,6 +539,9 @@ 1.7.1 2.1.2 1.0 - 8.2.0 + 8.2.0 + 1.0.0 + 1.0.0 + 3.8.4 \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java new file mode 100644 index 0000000000..e2167b39ad --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java @@ -0,0 +1,35 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.FactoryBuilder; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class CacheLoaderTest { + + private Cache cache; + + @Before + public void setup() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration().setReadThrough(true) + .setCacheLoaderFactory(new FactoryBuilder.SingletonFactory<>(new SimpleCacheLoader())); + this.cache = cacheManager.createCache("SimpleCache", config); + } + + @Test + public void whenReadingFromStorage_thenCorrect() { + for (int i = 1; i < 4; i++) { + String value = cache.get(i); + assertEquals("fromCache" + i, value); + } + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java new file mode 100644 index 0000000000..fba6067885 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java @@ -0,0 +1,32 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class EntryProcessorTest { + + private Cache cache; + + @Before + public void instantiateCache() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration(); + this.cache = cacheManager.createCache("MyCache", config); + this.cache.put("key", "value"); + } + + @Test + public void whenModifyValue_thenCorrect() { + this.cache.invoke("key", new SimpleEntryProcessor()); + assertEquals("value - modified", cache.get("key")); + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java new file mode 100644 index 0000000000..5fb0b317e2 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.FactoryBuilder; +import javax.cache.configuration.MutableCacheEntryListenerConfiguration; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class EventListenerTest { + + private Cache cache; + private SimpleCacheEntryListener listener; + MutableCacheEntryListenerConfiguration listenerConfiguration; + + @Before + public void setup() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration(); + this.cache = cacheManager.createCache("MyCache", config); + this.listener = new SimpleCacheEntryListener(); + } + + @Test + public void whenRunEvent_thenCorrect() throws InterruptedException { + this.listenerConfiguration = new MutableCacheEntryListenerConfiguration(FactoryBuilder.factoryOf(this.listener), null, false, true); + this.cache.registerCacheEntryListener(this.listenerConfiguration); + + assertEquals(false, this.listener.getCreated()); + + this.cache.put("key", "value"); + assertEquals(true, this.listener.getCreated()); + assertEquals(false, this.listener.getUpdated()); + + this.cache.put("key", "newValue"); + assertEquals(true, this.listener.getUpdated()); + } + +} diff --git a/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java b/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java new file mode 100644 index 0000000000..2c86a236b4 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java @@ -0,0 +1,27 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Test; + +public class JCacheTest { + + @Test + public void instantiateCache() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration<>(); + Cache cache = cacheManager.createCache("simpleCache", config); + cache.put("key1", "value1"); + cache.put("key2", "value2"); + assertEquals("value1", cache.get("key1")); + assertEquals("value2", cache.get("key2")); + cacheManager.close(); + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java b/libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java new file mode 100644 index 0000000000..b58182eab0 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java @@ -0,0 +1,34 @@ +package com.baeldung.jcache; + +import java.io.Serializable; + +import javax.cache.event.CacheEntryCreatedListener; +import javax.cache.event.CacheEntryEvent; +import javax.cache.event.CacheEntryListenerException; +import javax.cache.event.CacheEntryUpdatedListener; + +public class SimpleCacheEntryListener implements CacheEntryCreatedListener, CacheEntryUpdatedListener, Serializable { + + /** + * + */ + private static final long serialVersionUID = -712657810462878763L; + private boolean updated; + private boolean created; + + public boolean getUpdated() { + return this.updated; + } + + public boolean getCreated() { + return this.created; + } + + public void onUpdated(Iterable> events) throws CacheEntryListenerException { + this.updated = true; + } + + public void onCreated(Iterable> events) throws CacheEntryListenerException { + this.created = true; + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java b/libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java new file mode 100644 index 0000000000..77ab8fb645 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java @@ -0,0 +1,24 @@ +package com.baeldung.jcache; + +import java.util.HashMap; +import java.util.Map; + +import javax.cache.integration.CacheLoader; +import javax.cache.integration.CacheLoaderException; + +public class SimpleCacheLoader implements CacheLoader { + + @Override + public String load(Integer key) throws CacheLoaderException { + return "fromCache" + key; + } + + @Override + public Map loadAll(Iterable keys) throws CacheLoaderException { + Map data = new HashMap<>(); + for (int key : keys) { + data.put(key, load(key)); + } + return data; + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java b/libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java new file mode 100644 index 0000000000..bb585807fb --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java @@ -0,0 +1,25 @@ +package com.baeldung.jcache; + +import java.io.Serializable; + +import javax.cache.processor.EntryProcessor; +import javax.cache.processor.EntryProcessorException; +import javax.cache.processor.MutableEntry; + +public class SimpleEntryProcessor implements EntryProcessor, Serializable { + + /** + * + */ + private static final long serialVersionUID = -5616476363722945132L; + + public String process(MutableEntry entry, Object... args) throws EntryProcessorException { + + if (entry.exists()) { + String current = entry.getValue(); + entry.setValue(current + " - modified"); + return current; + } + return null; + } +} From 1d90d18271d00d019ace4103d4199d4e71a93e1a Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 9 Sep 2017 20:47:58 +0200 Subject: [PATCH 043/836] BAEL-1109 Introduction to JCache --- libraries/pom.xml | 14 -------------- .../baeldung/jcache/SimpleCacheEntryListener.java | 0 .../com/baeldung/jcache/SimpleCacheLoader.java | 0 .../com/baeldung/jcache/SimpleEntryProcessor.java | 0 4 files changed, 14 deletions(-) rename libraries/src/{test => main}/java/com/baeldung/jcache/SimpleCacheEntryListener.java (100%) rename libraries/src/{test => main}/java/com/baeldung/jcache/SimpleCacheLoader.java (100%) rename libraries/src/{test => main}/java/com/baeldung/jcache/SimpleEntryProcessor.java (100%) diff --git a/libraries/pom.xml b/libraries/pom.xml index 51c79ef0dd..48a4ecd330 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -226,10 +226,6 @@ commons-logging commons-logging - - org.slf4j - slf4j-log4j12 - @@ -241,10 +237,6 @@ commons-logging commons-logging - - org.slf4j - slf4j-log4j12 - @@ -252,12 +244,6 @@ flink-test-utils_2.10 ${flink.version} test - - - org.slf4j - slf4j-log4j12 - - org.apache.commons diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java similarity index 100% rename from libraries/src/test/java/com/baeldung/jcache/SimpleCacheEntryListener.java rename to libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java similarity index 100% rename from libraries/src/test/java/com/baeldung/jcache/SimpleCacheLoader.java rename to libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java diff --git a/libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java b/libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java similarity index 100% rename from libraries/src/test/java/com/baeldung/jcache/SimpleEntryProcessor.java rename to libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java From 602279a7a2d645a8f42f9449e67c104eb5e556d1 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 9 Sep 2017 21:07:28 +0200 Subject: [PATCH 044/836] remove unneeded property in pom.xml --- libraries/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index 48a4ecd330..2931f7c0e7 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -527,7 +527,6 @@ 1.0 8.2.0 1.0.0 - 1.0.0 3.8.4 \ No newline at end of file From 4647e1b10e3d68376011fdcd401504d54d7251f4 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 9 Sep 2017 21:24:52 +0200 Subject: [PATCH 045/836] fix formatting --- libraries/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index d3434bfc85..fbab220a30 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -661,10 +661,9 @@ 2.3.0 2.9.9 1.5.1 - 1.14 + 1.14 1.0.3 1.0.0 - 1.0.0 - 3.8.4 + 3.8.4 \ No newline at end of file From 239da95f3d21ec25e945bda22d7e176bc3998bd6 Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Wed, 13 Sep 2017 14:36:14 +0200 Subject: [PATCH 046/836] Changes after review --- ...{DiamondOperatorTest.java => DiamondOperatorUnitTest.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename core-java/src/test/java/org/baeldung/java/diamond/{DiamondOperatorTest.java => DiamondOperatorUnitTest.java} (65%) diff --git a/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java b/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java similarity index 65% rename from core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java rename to core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java index ceb7c87100..f6c7f7162f 100644 --- a/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorTest.java +++ b/core-java/src/test/java/org/baeldung/java/diamond/DiamondOperatorUnitTest.java @@ -4,9 +4,9 @@ import static org.junit.Assert.assertNotNull; import org.junit.Test; -public class DiamondOperatorTest { +public class DiamondOperatorUnitTest { @Test - public void shouldCreateCarUsingDiamondWithoutWarnings() { + public void whenCreateCarUsingDiamondOperator_thenSuccess() { Car myCar = new Car<>(); assertNotNull(myCar); } From 58aae2a09dc3a5d321dd3b87c65a88ea873fa9d3 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 16 Sep 2017 17:43:16 +0200 Subject: [PATCH 047/836] close cache instances properly --- .../src/test/java/com/baeldung/jcache/CacheLoaderTest.java | 6 ++++++ .../test/java/com/baeldung/jcache/EntryProcessorTest.java | 6 ++++++ .../test/java/com/baeldung/jcache/EventListenerTest.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java index e2167b39ad..389aec836e 100644 --- a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java @@ -9,6 +9,7 @@ import javax.cache.configuration.FactoryBuilder; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -32,4 +33,9 @@ public class CacheLoaderTest { assertEquals("fromCache" + i, value); } } + + @After + public void closeCache() { + cache.close(); + } } diff --git a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java index fba6067885..e92687227f 100644 --- a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java @@ -8,6 +8,7 @@ import javax.cache.Caching; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -29,4 +30,9 @@ public class EntryProcessorTest { this.cache.invoke("key", new SimpleEntryProcessor()); assertEquals("value - modified", cache.get("key")); } + + @After + public void closeCache() { + cache.close(); + } } diff --git a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java index 5fb0b317e2..4bb054624f 100644 --- a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java @@ -10,6 +10,7 @@ import javax.cache.configuration.MutableCacheEntryListenerConfiguration; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -43,4 +44,9 @@ public class EventListenerTest { assertEquals(true, this.listener.getUpdated()); } + @After + public void closeCache() { + cache.close(); + } + } From 870b93df707c116a0ba8dfacc62754c8eb6f6f75 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 16 Sep 2017 20:35:15 +0200 Subject: [PATCH 048/836] remove latest commit --- .../src/test/java/com/baeldung/jcache/CacheLoaderTest.java | 6 ------ .../test/java/com/baeldung/jcache/EntryProcessorTest.java | 6 ------ .../test/java/com/baeldung/jcache/EventListenerTest.java | 7 ------- 3 files changed, 19 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java index 389aec836e..e2167b39ad 100644 --- a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java @@ -9,7 +9,6 @@ import javax.cache.configuration.FactoryBuilder; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; -import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -33,9 +32,4 @@ public class CacheLoaderTest { assertEquals("fromCache" + i, value); } } - - @After - public void closeCache() { - cache.close(); - } } diff --git a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java index e92687227f..fba6067885 100644 --- a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java @@ -8,7 +8,6 @@ import javax.cache.Caching; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; -import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -30,9 +29,4 @@ public class EntryProcessorTest { this.cache.invoke("key", new SimpleEntryProcessor()); assertEquals("value - modified", cache.get("key")); } - - @After - public void closeCache() { - cache.close(); - } } diff --git a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java index 4bb054624f..d68d63eb69 100644 --- a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java +++ b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java @@ -10,7 +10,6 @@ import javax.cache.configuration.MutableCacheEntryListenerConfiguration; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; -import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -43,10 +42,4 @@ public class EventListenerTest { this.cache.put("key", "newValue"); assertEquals(true, this.listener.getUpdated()); } - - @After - public void closeCache() { - cache.close(); - } - } From 28ad804484b59e7952566989f5284fa220595661 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Wed, 20 Sep 2017 07:01:45 +0100 Subject: [PATCH 049/836] BAEL-1107 - Introduction to Apache Cayenne Orm --- apache-cayenne/pom.xml | 59 ++++++++ .../apachecayenne/persistent/Article.java | 9 ++ .../apachecayenne/persistent/Author.java | 9 ++ .../persistent/auto/_Article.java | 47 ++++++ .../persistent/auto/_Author.java | 52 +++++++ .../src/main/resources/cayenne-project.xml | 17 +++ .../src/main/resources/datamap.map.xml | 34 +++++ .../apachecayenne/CayenneOperationTests.java | 140 ++++++++++++++++++ pom.xml | 1 + 9 files changed, 368 insertions(+) create mode 100644 apache-cayenne/pom.xml create mode 100644 apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Article.java create mode 100644 apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Author.java create mode 100644 apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Article.java create mode 100644 apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java create mode 100644 apache-cayenne/src/main/resources/cayenne-project.xml create mode 100644 apache-cayenne/src/main/resources/datamap.map.xml create mode 100644 apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java diff --git a/apache-cayenne/pom.xml b/apache-cayenne/pom.xml new file mode 100644 index 0000000000..23837d7019 --- /dev/null +++ b/apache-cayenne/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + apache-cayenne + 0.0.1-SNAPSHOT + jar + + apache-cayenne + Introduction to Apache Cayenne + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + UTF-8 + UTF-8 + 1.8 + 5.1.31 + 4.0.M5 + 4.12 + + + + + org.apache.cayenne + cayenne-server + ${cayenne.version} + + + mysql + mysql-connector-java + ${mysql.connector.version} + runtime + + + + junit + junit + ${junit.version} + test + + + + + + + org.apache.cayenne.plugins + cayenne-modeler-maven-plugin + ${cayenne.version} + + + + + diff --git a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Article.java b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Article.java new file mode 100644 index 0000000000..303c180887 --- /dev/null +++ b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Article.java @@ -0,0 +1,9 @@ +package com.baeldung.apachecayenne.persistent; + +import com.baeldung.apachecayenne.persistent.auto._Article; + +public class Article extends _Article { + + private static final long serialVersionUID = 1L; + +} diff --git a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Author.java b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Author.java new file mode 100644 index 0000000000..5a8df57c6e --- /dev/null +++ b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/Author.java @@ -0,0 +1,9 @@ +package com.baeldung.apachecayenne.persistent; + +import com.baeldung.apachecayenne.persistent.auto._Author; + +public class Author extends _Author { + + private static final long serialVersionUID = 1L; + +} diff --git a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Article.java b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Article.java new file mode 100644 index 0000000000..f6c179fcfd --- /dev/null +++ b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Article.java @@ -0,0 +1,47 @@ +package com.baeldung.apachecayenne.persistent.auto; + +import org.apache.cayenne.CayenneDataObject; +import org.apache.cayenne.exp.Property; + +import com.baeldung.apachecayenne.persistent.Author; + +/** + * Class _Article was generated by Cayenne. + * It is probably a good idea to avoid changing this class manually, + * since it may be overwritten next time code is regenerated. + * If you need to make any customizations, please use subclass. + */ +public abstract class _Article extends CayenneDataObject { + + private static final long serialVersionUID = 1L; + + public static final String ID_PK_COLUMN = "id"; + + public static final Property CONTENT = Property.create("content", String.class); + public static final Property TITLE = Property.create("title", String.class); + public static final Property AUTHOR = Property.create("author", Author.class); + + public void setContent(String content) { + writeProperty("content", content); + } + public String getContent() { + return (String)readProperty("content"); + } + + public void setTitle(String title) { + writeProperty("title", title); + } + public String getTitle() { + return (String)readProperty("title"); + } + + public void setAuthor(Author author) { + setToOneTarget("author", author, true); + } + + public Author getAuthor() { + return (Author)readProperty("author"); + } + + +} diff --git a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java new file mode 100644 index 0000000000..3d068423c8 --- /dev/null +++ b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java @@ -0,0 +1,52 @@ +package com.baeldung.apachecayenne.persistent.auto; + +import java.util.List; + +import org.apache.cayenne.CayenneDataObject; +import org.apache.cayenne.exp.Property; + +import com.baeldung.apachecayenne.persistent.Article; + +/** + * Class _Author was generated by Cayenne. + * It is probably a good idea to avoid changing this class manually, + * since it may be overwritten next time code is regenerated. + * If you need to make any customizations, please use subclass. + */ +public abstract class _Author extends CayenneDataObject { + + private static final long serialVersionUID = 1L; + + public static final String ID_PK_COLUMN = "id"; + + public static final Property FIRSTNAME = Property.create("firstname", String.class); + public static final Property LASTNAME = Property.create("lastname", String.class); + public static final Property> ARTICLES = Property.create("articles", List.class); + + public void setFirstname(String firstname) { + writeProperty("firstname", firstname); + } + public String getFirstname() { + return (String)readProperty("firstname"); + } + + public void setLastname(String lastname) { + writeProperty("lastname", lastname); + } + public String getLastname() { + return (String)readProperty("lastname"); + } + + public void addToArticles(Article obj) { + addToManyTarget("articles", obj, true); + } + public void removeFromArticles(Article obj) { + removeToManyTarget("articles", obj, true); + } + @SuppressWarnings("unchecked") + public List
getArticles() { + return (List
)readProperty("articles"); + } + + +} diff --git a/apache-cayenne/src/main/resources/cayenne-project.xml b/apache-cayenne/src/main/resources/cayenne-project.xml new file mode 100644 index 0000000000..3f3c59e0e9 --- /dev/null +++ b/apache-cayenne/src/main/resources/cayenne-project.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/apache-cayenne/src/main/resources/datamap.map.xml b/apache-cayenne/src/main/resources/datamap.map.xml new file mode 100644 index 0000000000..dc78ad4348 --- /dev/null +++ b/apache-cayenne/src/main/resources/datamap.map.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java new file mode 100644 index 0000000000..da9667b029 --- /dev/null +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java @@ -0,0 +1,140 @@ +package com.baeldung.apachecayenne; + +import com.baeldung.apachecayenne.persistent.Article; +import com.baeldung.apachecayenne.persistent.Author; +import org.apache.cayenne.ObjectContext; +import org.apache.cayenne.configuration.server.ServerRuntime; +import org.apache.cayenne.query.ObjectSelect; +import org.apache.cayenne.query.SQLTemplate; +import org.junit.After; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertNull; + + +public class CayenneOperationTests { + private static ObjectContext context = null; + + @BeforeClass + public static void setupTheCayenneContext(){ + ServerRuntime cayenneRuntime = ServerRuntime.builder() + .addConfig("cayenne-project.xml") + .build(); + context = cayenneRuntime.newContext(); + } + + @After + public void deleteAllRecords(){ + SQLTemplate deleteArticles = new SQLTemplate(Article.class, "delete from article"); + SQLTemplate deleteAuthors = new SQLTemplate(Author.class, "delete from author"); + + context.performGenericQuery(deleteArticles); + context.performGenericQuery(deleteAuthors); + } + + @Test + public void givenAuthor_whenInsert_thenWeGetOneRecordInTheDatabase(){ + Author author = context.newObject(Author.class); + author.setFirstname("Paul"); + author.setLastname("Smith"); + + context.commitChanges(); + + long records = ObjectSelect.dataRowQuery(Author.class).selectCount(context); + assertEquals(1, records); + } + + @Test + public void givenAuthor_whenInsert_andQueryByFirstName_thenWeGetTheAuthor(){ + Author author = context.newObject(Author.class); + author.setFirstname("Paul"); + author.setLastname("Smith"); + + context.commitChanges(); + + Author expectedAuthor = ObjectSelect.query(Author.class) + .where(Author.FIRSTNAME.eq("Paul")) + .selectOne(context); + + assertEquals("Paul", expectedAuthor.getFirstname()); + assertEquals("Smith", expectedAuthor.getLastname()); + } + + @Test + public void givenTwoAuthor_whenInsert_andQueryAll_thenWeGetTwoAuthors(){ + Author firstAuthor = context.newObject(Author.class); + firstAuthor.setFirstname("Paul"); + firstAuthor.setLastname("Smith"); + + Author secondAuthor = context.newObject(Author.class); + secondAuthor.setFirstname("Ludovic"); + secondAuthor.setLastname("Garcia"); + + context.commitChanges(); + + List authors = ObjectSelect.query(Author.class).select(context); + assertEquals(2, authors.size()); + } + + @Test + public void givenAuthor_whenUpdating_thenWeGetAnUpatedeAuthor(){ + Author author = context.newObject(Author.class); + author.setFirstname("Paul"); + author.setLastname("Smith"); + context.commitChanges(); + + Author expectedAuthor = ObjectSelect.query(Author.class) + .where(Author.FIRSTNAME.eq("Paul")) + .selectOne(context); + expectedAuthor.setLastname("Smith 2"); + context.commitChanges(); + + assertEquals(author.getFirstname(), expectedAuthor.getFirstname()); + assertEquals(author.getLastname(), expectedAuthor.getLastname()); + } + + @Test + public void givenAuthor_whenDeleting_thenWeLostHisDetails(){ + Author author = context.newObject(Author.class); + author.setFirstname("Paul"); + author.setLastname("Smith"); + context.commitChanges(); + + Author savedAuthor = ObjectSelect.query(Author.class) + .where(Author.FIRSTNAME.eq("Paul")).selectOne(context); + if(savedAuthor != null) { + context.deleteObjects(author); + context.commitChanges(); + } + + Author expectedAuthor = ObjectSelect.query(Author.class) + .where(Author.FIRSTNAME.eq("Paul")).selectOne(context); + assertNull(expectedAuthor); + } + + @Test + public void givenAuthor_whenAttachingToArticle_thenTheRelationIsMade(){ + Author author = context.newObject(Author.class); + author.setFirstname("Paul"); + author.setLastname("Smith"); + + Article article = context.newObject(Article.class); + article.setTitle("My post title"); + article.setContent("The content"); + article.setAuthor(author); + + context.commitChanges(); + + Author expectedAuthor = ObjectSelect.query(Author.class) + .where(Author.LASTNAME.eq("Smith")) + .selectOne(context); + + Article expectedArticle = (expectedAuthor.getArticles()).get(0); + assertEquals(article.getTitle(), expectedArticle.getTitle()); + } + +} diff --git a/pom.xml b/pom.xml index dfa7e09acc..083cee017b 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ + apache-cayenne aws akka-streams algorithms From 8b9037ff0a30d0f045a24d9173eca4b28c4085bf Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sat, 23 Sep 2017 00:24:55 +0100 Subject: [PATCH 050/836] BAEL-1107: update formating and version of libs --- apache-cayenne/pom.xml | 2 +- .../apachecayenne/CayenneOperationTests.java | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apache-cayenne/pom.xml b/apache-cayenne/pom.xml index 23837d7019..52631e8594 100644 --- a/apache-cayenne/pom.xml +++ b/apache-cayenne/pom.xml @@ -20,7 +20,7 @@ UTF-8 UTF-8 1.8 - 5.1.31 + 5.1.44 4.0.M5 4.12 diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java index da9667b029..b92096c0fa 100644 --- a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java @@ -20,7 +20,7 @@ public class CayenneOperationTests { private static ObjectContext context = null; @BeforeClass - public static void setupTheCayenneContext(){ + public static void setupTheCayenneContext() { ServerRuntime cayenneRuntime = ServerRuntime.builder() .addConfig("cayenne-project.xml") .build(); @@ -28,7 +28,7 @@ public class CayenneOperationTests { } @After - public void deleteAllRecords(){ + public void deleteAllRecords() { SQLTemplate deleteArticles = new SQLTemplate(Article.class, "delete from article"); SQLTemplate deleteAuthors = new SQLTemplate(Author.class, "delete from author"); @@ -37,7 +37,7 @@ public class CayenneOperationTests { } @Test - public void givenAuthor_whenInsert_thenWeGetOneRecordInTheDatabase(){ + public void givenAuthor_whenInsert_thenWeGetOneRecordInTheDatabase() { Author author = context.newObject(Author.class); author.setFirstname("Paul"); author.setLastname("Smith"); @@ -49,7 +49,7 @@ public class CayenneOperationTests { } @Test - public void givenAuthor_whenInsert_andQueryByFirstName_thenWeGetTheAuthor(){ + public void givenAuthor_whenInsert_andQueryByFirstName_thenWeGetTheAuthor() { Author author = context.newObject(Author.class); author.setFirstname("Paul"); author.setLastname("Smith"); @@ -65,7 +65,7 @@ public class CayenneOperationTests { } @Test - public void givenTwoAuthor_whenInsert_andQueryAll_thenWeGetTwoAuthors(){ + public void givenTwoAuthor_whenInsert_andQueryAll_thenWeGetTwoAuthors() { Author firstAuthor = context.newObject(Author.class); firstAuthor.setFirstname("Paul"); firstAuthor.setLastname("Smith"); @@ -81,7 +81,7 @@ public class CayenneOperationTests { } @Test - public void givenAuthor_whenUpdating_thenWeGetAnUpatedeAuthor(){ + public void givenAuthor_whenUpdating_thenWeGetAnUpatedeAuthor() { Author author = context.newObject(Author.class); author.setFirstname("Paul"); author.setLastname("Smith"); @@ -98,7 +98,7 @@ public class CayenneOperationTests { } @Test - public void givenAuthor_whenDeleting_thenWeLostHisDetails(){ + public void givenAuthor_whenDeleting_thenWeLostHisDetails() { Author author = context.newObject(Author.class); author.setFirstname("Paul"); author.setLastname("Smith"); @@ -117,7 +117,7 @@ public class CayenneOperationTests { } @Test - public void givenAuthor_whenAttachingToArticle_thenTheRelationIsMade(){ + public void givenAuthor_whenAttachingToArticle_thenTheRelationIsMade() { Author author = context.newObject(Author.class); author.setFirstname("Paul"); author.setLastname("Smith"); From a6befdb84eb43bbf3a45db818227b37fe8eac337 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 23 Sep 2017 04:59:49 +0200 Subject: [PATCH 051/836] BAEL-1057 Introduction to rxjava-jdbc --- rxjava/pom.xml | 19 + .../com/baeldung/rxjava/jdbc/Connector.java | 8 + .../com/baeldung/rxjava/jdbc/Employee.java | 13 + .../com/baeldung/rxjava/jdbc/Manager.java | 29 + .../java/com/baeldung/rxjava/jdbc/Utils.java | 16 + .../rxjava/jdbc/AutomapClassTest.java | 71 + .../rxjava/jdbc/AutomapInterfaceTest.java | 72 + .../rxjava/jdbc/BasicQueryTypesTest.java | 83 + .../baeldung/rxjava/jdbc/InsertBlobTest.java | 72 + .../baeldung/rxjava/jdbc/InsertClobTest.java | 68 + .../baeldung/rxjava/jdbc/ReturnKeysTest.java | 45 + .../baeldung/rxjava/jdbc/TransactionTest.java | 46 + rxjava/src/test/resources/actual_clob | 1546 +++++++++++++++++ rxjava/src/test/resources/expected_clob | 1546 +++++++++++++++++ 14 files changed, 3634 insertions(+) create mode 100644 rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java create mode 100644 rxjava/src/main/java/com/baeldung/rxjava/jdbc/Employee.java create mode 100644 rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java create mode 100644 rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java create mode 100644 rxjava/src/test/resources/actual_clob create mode 100644 rxjava/src/test/resources/expected_clob diff --git a/rxjava/pom.xml b/rxjava/pom.xml index bf5f073d8d..ac2b923068 100644 --- a/rxjava/pom.xml +++ b/rxjava/pom.xml @@ -31,10 +31,29 @@ awaitility 1.7.0 + + com.github.davidmoten + rxjava-jdbc + ${rx.java.jdbc.version} + + + com.h2database + h2 + ${h2.version} + runtime + + + org.assertj + assertj-core + ${assertj.version} + + 3.8.0 1.2.5 + 0.7.11 + 1.4.196 diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java new file mode 100644 index 0000000000..ca241d74c4 --- /dev/null +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java @@ -0,0 +1,8 @@ +package com.baeldung.rxjava.jdbc; + +public class Connector { + + public static final String DB_CONNECTION = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; + public static final String DB_USER = ""; + public static final String DB_PASSWORD = ""; +} diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Employee.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Employee.java new file mode 100644 index 0000000000..790dddeb74 --- /dev/null +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Employee.java @@ -0,0 +1,13 @@ +package com.baeldung.rxjava.jdbc; + +import com.github.davidmoten.rx.jdbc.annotations.Column; + +public interface Employee { + + @Column("id") + int id(); + + @Column("name") + String name(); + +} diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java new file mode 100644 index 0000000000..d2b87fc897 --- /dev/null +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java @@ -0,0 +1,29 @@ +package com.baeldung.rxjava.jdbc; + +public class Manager { + + private int id; + private String name; + + public Manager(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java new file mode 100644 index 0000000000..f1dbd2676b --- /dev/null +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java @@ -0,0 +1,16 @@ +package com.baeldung.rxjava.jdbc; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import org.apache.commons.io.IOUtils; + +public class Utils { + + public static String getStringFromInputStream(InputStream input) throws IOException { + StringWriter writer = new StringWriter(); + IOUtils.copy(input, writer, "UTF-8"); + return writer.toString(); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java new file mode 100644 index 0000000000..e8bca98701 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java @@ -0,0 +1,71 @@ +package com.baeldung.rxjava.jdbc; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class AutomapClassTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + ConnectionProvider cp = null; + Database db = null; + + Observable create = null; + Observable insert1, insert2 = null; + + @Before + public void setup() { + cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + db = Database.from(cp); + + create = db.update("CREATE TABLE IF NOT EXISTS MANAGER(id int primary key, name varchar(255))") + .count(); + insert1 = db.update("INSERT INTO MANAGER(id, name) VALUES(1, 'Alan')") + .dependsOn(create) + .count(); + insert2 = db.update("INSERT INTO MANAGER(id, name) VALUES(2, 'Sarah')") + .dependsOn(create) + .count(); + } + + @Test + public void whenSelectManagersAndAutomap_thenCorrect() { + List managers = db.select("select id, name from MANAGER") + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .autoMap(Manager.class) + .toList() + .toBlocking() + .single(); + + assertThat(managers.get(0) + .getId()).isEqualTo(1); + assertThat(managers.get(0) + .getName()).isEqualTo("Alan"); + assertThat(managers.get(1) + .getId()).isEqualTo(2); + assertThat(managers.get(1) + .getName()).isEqualTo("Sarah"); + } + + @After + public void close() { + db.update("DROP TABLE MANAGER") + .dependsOn(create); + cp.close(); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java new file mode 100644 index 0000000000..f636dda155 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java @@ -0,0 +1,72 @@ +package com.baeldung.rxjava.jdbc; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class AutomapInterfaceTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + ConnectionProvider cp = null; + Database db = null; + + Observable create = null; + Observable insert1, insert2 = null; + + @Before + public void setup() { + cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + db = Database.from(cp); + + create = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") + .count(); + insert1 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'Alan')") + .dependsOn(create) + .count(); + insert2 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(2, 'Sarah')") + .dependsOn(create) + .count(); + } + + @Test + public void whenSelectFromTableAndAutomap_thenCorrect() { + List employees = db.select("select id, name from EMPLOYEE") + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .autoMap(Employee.class) + .toList() + .toBlocking() + .single(); + + assertThat(employees.get(0) + .id()).isEqualTo(1); + assertThat(employees.get(0) + .name()).isEqualTo("Alan"); + assertThat(employees.get(1) + .id()).isEqualTo(2); + assertThat(employees.get(1) + .name()).isEqualTo("Sarah"); + } + + @After + public void close() { + db.update("DROP TABLE EMPLOYEE") + .dependsOn(create); + cp.close(); + } + +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java new file mode 100644 index 0000000000..6118e6f127 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java @@ -0,0 +1,83 @@ +package com.baeldung.rxjava.jdbc; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class BasicQueryTypesTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + ConnectionProvider cp = null; + Database db = null; + + Observable create, insert1, insert2, insert3, insert4, insert5, update, delete = null; + + @Before + public void setup() { + cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + db = Database.from(cp); + } + + @Test + public void whenCreateTableAndInsertRecords_thenCorrect() { + create = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") + .count(); + insert1 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") + .dependsOn(create) + .count(); + update = db.update("UPDATE EMPLOYEE SET name = 'Alan' WHERE id = 1") + .dependsOn(create) + .count(); + insert2 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(2, 'Sarah')") + .dependsOn(create) + .count(); + insert3 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(3, 'Mike')") + .dependsOn(create) + .count(); + insert4 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(4, 'Jennifer')") + .dependsOn(create) + .count(); + insert5 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(5, 'George')") + .dependsOn(create) + .count(); + delete = db.update("DELETE FROM EMPLOYEE WHERE id = 5") + .dependsOn(create) + .count(); + List names = db.select("select name from EMPLOYEE where id > ?") + .parameter(2) + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .dependsOn(insert3) + .dependsOn(insert4) + .dependsOn(insert5) + .dependsOn(update) + .dependsOn(delete) + .getAs(String.class) + .toList() + .toBlocking() + .single(); + assertEquals(Arrays.asList("Mike", "Jennifer"), names); + } + + @After + public void close() { + db.update("DROP TABLE EMPLOYEE") + .dependsOn(create); + cp.close(); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java new file mode 100644 index 0000000000..ced394eccb --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java @@ -0,0 +1,72 @@ +package com.baeldung.rxjava.jdbc; + +import static org.junit.Assert.assertEquals; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.IOUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class InsertBlobTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + Database db = Database.from(cp); + + String expectedDocument = null; + String actualDocument = null; + + Observable create, insert = null; + + @Before + public void setup() throws IOException { + create = db.update("CREATE TABLE IF NOT EXISTS SERVERLOG (id int primary key, document BLOB)") + .count(); + + InputStream actualInputStream = new FileInputStream("src/test/resources/actual_clob"); + this.actualDocument = Utils.getStringFromInputStream(actualInputStream); + byte[] bytes = this.actualDocument.getBytes(StandardCharsets.UTF_8); + + InputStream expectedInputStream = new FileInputStream("src/test/resources/expected_clob"); + this.expectedDocument = Utils.getStringFromInputStream(expectedInputStream); + this.insert = db.update("insert into SERVERLOG(id,document) values(?,?)") + .parameter(1) + .parameter(Database.toSentinelIfNull(bytes)) + .dependsOn(create) + .count(); + } + + @Test + public void whenInsertBLOB_thenCorrect() throws IOException { + db.select("select document from SERVERLOG where id = 1") + .dependsOn(create) + .dependsOn(insert) + .getAs(String.class) + .toList() + .toBlocking() + .single(); + assertEquals(expectedDocument, actualDocument); + } + + @After + public void close() { + db.update("DROP TABLE SERVERLOG") + .dependsOn(create); + cp.close(); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java new file mode 100644 index 0000000000..90f798aa43 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java @@ -0,0 +1,68 @@ +package com.baeldung.rxjava.jdbc; + +import static org.junit.Assert.assertEquals; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class InsertClobTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + Database db = Database.from(cp); + + String expectedDocument = null; + String actualDocument = null; + + Observable create, insert = null; + + @Before + public void setup() throws IOException { + create = db.update("CREATE TABLE IF NOT EXISTS SERVERLOG (id int primary key, document CLOB)") + .count(); + + InputStream actualInputStream = new FileInputStream("src/test/resources/actual_clob"); + this.actualDocument = Utils.getStringFromInputStream(actualInputStream); + + InputStream expectedInputStream = new FileInputStream("src/test/resources/expected_clob"); + this.expectedDocument = Utils.getStringFromInputStream(expectedInputStream); + this.insert = db.update("insert into SERVERLOG(id,document) values(?,?)") + .parameter(1) + .parameter(Database.toSentinelIfNull(actualDocument)) + .dependsOn(create) + .count(); + } + + @Test + public void whenSelectCLOB_thenCorrect() throws IOException { + db.select("select document from SERVERLOG where id = 1") + .dependsOn(create) + .dependsOn(insert) + .getAs(String.class) + .toList() + .toBlocking() + .single(); + assertEquals(expectedDocument, actualDocument); + } + + @After + public void close() { + db.update("DROP TABLE SERVERLOG") + .dependsOn(create); + cp.close(); + } +} \ No newline at end of file diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java new file mode 100644 index 0000000000..d67fe1d4c1 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java @@ -0,0 +1,45 @@ +package com.baeldung.rxjava.jdbc; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Before; +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class ReturnKeysTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + Observable begin, commit = null; + Observable createStatement, insertStatement, updateStatement = null; + + ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + Database db = Database.from(cp); + + @Before + public void setup() { + begin = db.beginTransaction(); + createStatement = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int auto_increment primary key, name varchar(255))") + .dependsOn(begin) + .count(); + } + + @Test + public void whenInsertAndReturnGeneratedKey_thenCorrect() { + Integer key = db.update("INSERT INTO EMPLOYEE(name) VALUES('John')") + .dependsOn(createStatement) + .returnGeneratedKeys() + .getAs(Integer.class) + .count() + .toBlocking() + .single(); + assertThat(key).isEqualTo(1); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java new file mode 100644 index 0000000000..a0076861da --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java @@ -0,0 +1,46 @@ +package com.baeldung.rxjava.jdbc; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; +import com.github.davidmoten.rx.jdbc.Database; + +import rx.Observable; + +public class TransactionTest { + + private String DB_CONNECTION = Connector.DB_CONNECTION; + private String DB_USER = Connector.DB_USER; + private String DB_PASSWORD = Connector.DB_PASSWORD; + + Observable begin, commit = null; + Observable createStatement, insertStatement, updateStatement = null; + + ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + Database db = Database.from(cp); + + @Test + public void whenCommitTransaction_thenRecordUpdated() { + begin = db.beginTransaction(); + createStatement = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") + .dependsOn(begin) + .count(); + insertStatement = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") + .dependsOn(createStatement) + .count(); + updateStatement = db.update("UPDATE EMPLOYEE SET name = 'Tom' WHERE id = 1") + .dependsOn(insertStatement) + .count(); + commit = db.commit(updateStatement); + String name = db.select("select name from EMPLOYEE WHERE id = 1") + .dependsOn(commit) + .getAs(String.class) + .toBlocking() + .single(); + + assertEquals("Tom", name); + } +} diff --git a/rxjava/src/test/resources/actual_clob b/rxjava/src/test/resources/actual_clob new file mode 100644 index 0000000000..d7bc560556 --- /dev/null +++ b/rxjava/src/test/resources/actual_clob @@ -0,0 +1,1546 @@ +64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /ops/SP/play//edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /ops/SP/play//rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523 +64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291 +64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /ops/SP/play//view/TWiki/WikiSyntax HTTP/1.1" 200 7352 +64.242.88.10 - - [07/Mar/2004:16:20:55 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +64.242.88.10 - - [07/Mar/2004:16:23:12 -0800] "GET /ops/SP/play//oops/TWiki/AppendixFileSystem?template=oopsmore¶m1=1.12¶m2=1.12 HTTP/1.1" 200 11382 +64.242.88.10 - - [07/Mar/2004:16:24:16 -0800] "GET /ops/SP/play//view/Main/PeterThoeny HTTP/1.1" 200 4924 +64.242.88.10 - - [07/Mar/2004:16:29:16 -0800] "GET /ops/SP/play//edit/Main/Header_checks?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:30:29 -0800] "GET /ops/SP/play//attach/Main/OfficeLocations HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:31:48 -0800] "GET /ops/SP/play//view/TWiki/WebTopicEditTemplate HTTP/1.1" 200 3732 +64.242.88.10 - - [07/Mar/2004:16:32:50 -0800] "GET /ops/SP/play//view/Main/WebChanges HTTP/1.1" 200 40520 +64.242.88.10 - - [07/Mar/2004:16:33:53 -0800] "GET /ops/SP/play//edit/Main/Smtpd_etrn_restrictions?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:35:19 -0800] "GET /mailman/listinfo/business HTTP/1.1" 200 6379 +64.242.88.10 - - [07/Mar/2004:16:36:22 -0800] "GET /ops/SP/play//rdiff/Main/WebIndex?rev1=1.2&rev2=1.1 HTTP/1.1" 200 46373 +64.242.88.10 - - [07/Mar/2004:16:37:27 -0800] "GET /ops/SP/play//view/TWiki/DontNotify HTTP/1.1" 200 4140 +64.242.88.10 - - [07/Mar/2004:16:39:24 -0800] "GET /ops/SP/play//view/Main/TokyoOffice HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:16:43:54 -0800] "GET /ops/SP/play//view/Main/MikeMannix HTTP/1.1" 200 3686 +64.242.88.10 - - [07/Mar/2004:16:45:56 -0800] "GET /ops/SP/play//attach/Main/PostfixCommands HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:16:47:12 -0800] "GET /robots.txt HTTP/1.1" 200 68 +64.242.88.10 - - [07/Mar/2004:16:47:46 -0800] "GET /ops/SP/play//rdiff/Know/ReadmeFirst?rev1=1.5&rev2=1.4 HTTP/1.1" 200 5724 +64.242.88.10 - - [07/Mar/2004:16:49:04 -0800] "GET /ops/SP/play//view/Main/TWikiGroups?rev=1.2 HTTP/1.1" 200 5162 +64.242.88.10 - - [07/Mar/2004:16:50:54 -0800] "GET /ops/SP/play//rdiff/Main/ConfigurationVariables HTTP/1.1" 200 59679 +64.242.88.10 - - [07/Mar/2004:16:52:35 -0800] "GET /ops/SP/play//edit/Main/Flush_service_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:53:46 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiRegistration HTTP/1.1" 200 34395 +64.242.88.10 - - [07/Mar/2004:16:54:55 -0800] "GET /ops/SP/play//rdiff/Main/NicholasLee HTTP/1.1" 200 7235 +64.242.88.10 - - [07/Mar/2004:16:56:39 -0800] "GET /ops/SP/play//view/Sandbox/WebHome?rev=1.6 HTTP/1.1" 200 8545 +64.242.88.10 - - [07/Mar/2004:16:58:54 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +lordgun.org - - [07/Mar/2004:17:01:53 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [07/Mar/2004:17:09:01 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Joris%20*Benschop[^A-Za-z] HTTP/1.1" 200 4284 +64.242.88.10 - - [07/Mar/2004:17:10:20 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingRules?template=oopsmore¶m1=1.37¶m2=1.37 HTTP/1.1" 200 11400 +64.242.88.10 - - [07/Mar/2004:17:13:50 -0800] "GET /ops/SP/play//edit/TWiki/DefaultPlugin?t=1078688936 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:16:00 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^g HTTP/1.1" 200 3675 +64.242.88.10 - - [07/Mar/2004:17:17:27 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^d HTTP/1.1" 200 5773 +lj1036.passgo.com - - [07/Mar/2004:17:18:36 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1090.passgo.com - - [07/Mar/2004:17:18:41 -0800] "GET /ops/SP/play//view/Main/LondonOffice HTTP/1.0" 200 3860 +64.242.88.10 - - [07/Mar/2004:17:21:44 -0800] "GET /ops/SP/play//attach/TWiki/TablePlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:22:49 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?rev=1.22 HTTP/1.1" 200 9310 +64.242.88.10 - - [07/Mar/2004:17:23:54 -0800] "GET /ops/SP/play//statistics/Main HTTP/1.1" 200 808 +64.242.88.10 - - [07/Mar/2004:17:26:30 -0800] "GET /ops/SP/play//view/TWiki/WikiCulture HTTP/1.1" 200 5935 +64.242.88.10 - - [07/Mar/2004:17:27:37 -0800] "GET /ops/SP/play//edit/Main/WebSearch?t=1078669682 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:28:45 -0800] "GET /ops/SP/play//oops/TWiki/ResetPassword?template=oopsmore¶m1=1.4¶m2=1.4 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:17:29:59 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?skin=print HTTP/1.1" 200 8806 +64.242.88.10 - - [07/Mar/2004:17:31:39 -0800] "GET /ops/SP/play//edit/Main/UvscanAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:35:35 -0800] "GET /ops/SP/play//view/TWiki/KlausWriessnegger HTTP/1.1" 200 3848 +64.242.88.10 - - [07/Mar/2004:17:39:39 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +64.242.88.10 - - [07/Mar/2004:17:42:15 -0800] "GET /ops/SP/play//oops/TWiki/RichardDonkin?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:17:46:17 -0800] "GET /ops/SP/play//rdiff/TWiki/AlWilliams?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4485 +64.242.88.10 - - [07/Mar/2004:17:47:43 -0800] "GET /ops/SP/play//rdiff/TWiki/AlWilliams?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5234 +64.242.88.10 - - [07/Mar/2004:17:50:44 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit HTTP/1.1" 200 3616 +64.242.88.10 - - [07/Mar/2004:17:53:45 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Office%20*Locations[^A-Za-z] HTTP/1.1" 200 7771 +64.242.88.10 - - [07/Mar/2004:17:56:54 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.31 HTTP/1.1" 200 23338 +64.242.88.10 - - [07/Mar/2004:17:58:00 -0800] "GET /ops/SP/play//edit/Main/KevinWGagel?t=1078670331 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:00:09 -0800] "GET /ops/SP/play//edit/Main/Virtual_mailbox_lock?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:02:10 -0800] "GET /ops/SP/play//view/Main/WebPreferences HTTP/1.1" 200 8820 +64.242.88.10 - - [07/Mar/2004:18:04:05 -0800] "GET /ops/SP/play//view/TWiki/WikiWord?rev=1.3 HTTP/1.1" 200 6816 +lj1125.passgo.com - - [07/Mar/2004:18:06:14 -0800] "GET /ops/SP/play//oops/Sandbox/WebChanges HTTP/1.0" 200 209 +64.242.88.10 - - [07/Mar/2004:18:09:00 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGuest HTTP/1.1" 200 11314 +64.242.88.10 - - [07/Mar/2004:18:10:09 -0800] "GET /ops/SP/play//edit/TWiki/TWikiVariables?t=1078684115 HTTP/1.1" 401 12846 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:10:18 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:10:20 -0800] "GET /pipermail/cncce/2004-January/000002.jsp HTTP/1.1" 200 3810 +64.242.88.10 - - [07/Mar/2004:18:17:26 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiWord?rev1=1.4&rev2=1.3 HTTP/1.1" 200 6948 +64.242.88.10 - - [07/Mar/2004:18:19:01 -0800] "GET /ops/SP/play//edit/Main/TWikiPreferences?topicparent=Main.WebHome HTTP/1.1" 401 12846 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:19:16 -0800] "GET /pipermail/cncce/2004-January.txt HTTP/1.1" 200 3376 +64.242.88.10 - - [07/Mar/2004:18:22:52 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Statistics[^A-Za-z] HTTP/1.1" 200 3584 +64.242.88.10 - - [07/Mar/2004:18:26:32 -0800] "GET /ops/SP/play//rdiff/TWiki/PeterFokkinga?rev1=1.4&rev2=1.3 HTTP/1.1" 200 4548 +64.242.88.10 - - [07/Mar/2004:18:32:39 -0800] "GET /mailman/listinfo/dentalstudies HTTP/1.1" 200 6345 +64.242.88.10 - - [07/Mar/2004:18:34:42 -0800] "GET /ops/SP/play//view/Main/TWikiGuest HTTP/1.1" 200 4449 +64.242.88.10 - - [07/Mar/2004:18:42:29 -0800] "GET /ops/SP/play//attach/Main/TWikiGroups HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:46:00 -0800] "GET /ops/SP/play//rdiff/TWiki/TextFormattingRules?rev1=1.36&rev2=1.35 HTTP/1.1" 200 25416 +64.242.88.10 - - [07/Mar/2004:18:47:06 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGroups?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4308 +64.242.88.10 - - [07/Mar/2004:18:48:15 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=.* HTTP/1.1" 200 3544 +64.242.88.10 - - [07/Mar/2004:18:52:30 -0800] "GET /ops/SP/play//edit/Main/Trigger_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:53:55 -0800] "GET /ops/SP/play//oops/TWiki/TWikiSite?template=oopsmore¶m1=1.21¶m2=1.21 HTTP/1.1" 200 11284 +64.242.88.10 - - [07/Mar/2004:18:57:07 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.35 HTTP/1.1" 200 27248 +64.242.88.10 - - [07/Mar/2004:18:58:52 -0800] "GET /ops/SP/play//edit/Main/Mydestination?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:59:52 -0800] "GET /mailman/listinfo/fcd HTTP/1.1" 200 5967 +64.242.88.10 - - [07/Mar/2004:19:01:48 -0800] "GET /ops/SP/play//rdiff/Main/WebHome?rev1=1.28&rev2=1.27 HTTP/1.1" 200 3596 +64.242.88.10 - - [07/Mar/2004:19:03:58 -0800] "GET /ops/SP/play//edit/Main/Message_size_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:08:55 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory HTTP/1.1" 200 138789 +64.242.88.10 - - [07/Mar/2004:19:10:13 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^y HTTP/1.1" 200 3628 +64.242.88.10 - - [07/Mar/2004:19:15:38 -0800] "GET /ops/SP/play//edit/Main/Smtpd_history_flush_threshold?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:19:16:44 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.59 HTTP/1.1" 200 52854 +64.242.88.10 - - [07/Mar/2004:19:18:05 -0800] "GET /ops/SP/play//edit/Main/Sender_canonical_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:19:19:19 -0800] "GET /mailman/listinfo/mlc HTTP/1.1" 200 6142 +64.242.88.10 - - [07/Mar/2004:19:21:01 -0800] "GET /ops/SP/play//rdiff/Main/WebChanges HTTP/1.1" 200 114241 +64.242.88.10 - - [07/Mar/2004:19:22:11 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic5?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:24:57 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.22 HTTP/1.1" 200 21162 +64.242.88.10 - - [07/Mar/2004:19:26:22 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^j HTTP/1.1" 200 4524 +64.242.88.10 - - [07/Mar/2004:19:29:46 -0800] "GET /ops/SP/play//oops/TWiki/TWikiVariables?template=oopsmore¶m1=1.62¶m2=1.62 HTTP/1.1" 200 11444 +64.242.88.10 - - [07/Mar/2004:19:31:25 -0800] "GET /ops/SP/play//edit/Main/Lmtp_connect_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:32:45 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^q HTTP/1.1" 200 2937 +64.242.88.10 - - [07/Mar/2004:19:36:14 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?rev=1.21 HTTP/1.1" 200 9310 +64.242.88.10 - - [07/Mar/2004:19:39:40 -0800] "GET /ops/SP/play//edit/Main/Qmqpd_authorized_clients?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:41:33 -0800] "GET /ops/SP/play//edit/Main/Header_address_token_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:42:45 -0800] "GET /ops/SP/play//edit/Main/Syslog_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +80-219-148-207.dclient.hispeed.ch - - [07/Mar/2004:19:47:36 -0800] "OPTIONS * HTTP/1.0" 200 - +64.242.88.10 - - [07/Mar/2004:19:49:28 -0800] "GET /ops/SP/play//oops/TWiki/TWikiHistory?template=oopsmore¶m1=1.61¶m2=1.61 HTTP/1.1" 200 11345 +64.242.88.10 - - [07/Mar/2004:19:52:28 -0800] "GET /ops/SP/play//view/TWiki/HaroldGottschalk HTTP/1.1" 200 3838 +64.242.88.10 - - [07/Mar/2004:19:54:33 -0800] "GET /ops/SP/play//view/TWiki/DefaultPlugin?rev=1.4 HTTP/1.1" 200 7298 +64.242.88.10 - - [07/Mar/2004:19:55:40 -0800] "GET /ops/SP/play//oops/TWiki/WelcomeGuest?template=oopsmore¶m1=1.20¶m2=1.20 HTTP/1.1" 200 11266 +64.242.88.10 - - [07/Mar/2004:19:56:41 -0800] "GET /ops/SP/play//rdiff/Main/WebIndex HTTP/1.1" 200 46373 +64.242.88.10 - - [07/Mar/2004:19:58:24 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiRegistration?rev1=1.10&rev2=1.9 HTTP/1.1" 200 3826 +64.242.88.10 - - [07/Mar/2004:20:00:06 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.21 HTTP/1.1" 200 20972 +64.242.88.10 - - [07/Mar/2004:20:02:13 -0800] "GET /ops/SP/play//attach/TWiki/DefaultPlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:03:29 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^p HTTP/1.1" 200 7245 +206-15-133-181.dialup.ziplink.net - - [07/Mar/2004:20:04:03 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +64.242.88.10 - - [07/Mar/2004:20:04:35 -0800] "GET /ops/SP/play//edit/Main/Smtp_pix_workaround_delay_time?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:07:12 -0800] "GET /ops/SP/play//edit/Main/Berkeley_db_create_buffer_size?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +mmscrm07-2.uah.goweb.net - - [07/Mar/2004:20:10:50 -0800] "GET /robots.txt HTTP/1.0" 200 68 +64.242.88.10 - - [07/Mar/2004:20:11:33 -0800] "GET /ops/SP/play//attach/TWiki/TWikiSite HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:12:55 -0800] "GET /ops/SP/play//edit/TWiki/TWikiSite?t=1078681794 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:23:35 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Statistics[^A-Za-z] HTTP/1.1" 200 10118 +64.242.88.10 - - [07/Mar/2004:20:25:31 -0800] "GET /ops/SP/play//edit/Main/Defer_transports?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:31:40 -0800] "GET /ops/SP/play//rdiff/TWiki/SearchDoesNotWork HTTP/1.1" 200 6738 +64.242.88.10 - - [07/Mar/2004:20:35:28 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=TWiki%20*Admin%20*Group[^A-Za-z] HTTP/1.1" 200 7311 +64.242.88.10 - - [07/Mar/2004:20:38:14 -0800] "GET /ops/SP/play//rdiff/TWiki/ChangePassword HTTP/1.1" 200 16670 +64.242.88.10 - - [07/Mar/2004:20:40:41 -0800] "GET /ops/SP/play//rdiff/TWiki/SvenDowideit HTTP/1.1" 200 5277 +64.242.88.10 - - [07/Mar/2004:20:42:09 -0800] "GET /ops/SP/play//rdiff/TWiki/KevinKinnell?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4982 +64.242.88.10 - - [07/Mar/2004:20:44:48 -0800] "GET /ops/SP/play//edit/Main/Undisclosed_recipients_header?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:55:43 -0800] "GET /mailman/listinfo/hs_support HTTP/1.1" 200 6294 +64.242.88.10 - - [07/Mar/2004:20:56:56 -0800] "GET /ops/SP/play//view/TWiki/WebTopicList HTTP/1.1" 200 14070 +64.242.88.10 - - [07/Mar/2004:20:58:27 -0800] "GET /ops/SP/play//attach/TWiki/WebPreferences HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:03:48 -0800] "GET /ops/SP/play//view/TWiki/TWikiFAQ HTTP/1.1" 200 12050 +64.242.88.10 - - [07/Mar/2004:21:06:05 -0800] "GET /ops/SP/play//oops/TWiki/DefaultPlugin?template=oopsmore¶m1=1.5¶m2=1.5 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:21:07:24 -0800] "GET /ops/SP/play//rdiff/TWiki/AppendixFileSystem?rev1=1.11&rev2=1.10 HTTP/1.1" 200 40578 +64.242.88.10 - - [07/Mar/2004:21:14:32 -0800] "GET /ops/SP/play//rdiff/TWiki/FileAttribute HTTP/1.1" 200 5846 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:17 -0800] "GET /twiki/view/Main/WebHome HTTP/1.1" 404 300 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:18 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:21 -0800] "GET /twiki/ HTTP/1.1" 200 782 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:23 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:23 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:33 -0800] "GET /ops/SP/play//view/Main/TWikiUsers HTTP/1.1" 200 6697 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:40 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +64.242.88.10 - - [07/Mar/2004:21:20:14 -0800] "GET /ops/SP/play//edit/TWiki/RichardDonkin?t=1078691832 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:21:40 -0800] "GET /ops/SP/play//oops/Main/DCC?template=oopsmore¶m1=1.1¶m2=1.1 HTTP/1.1" 200 6399 +64.242.88.10 - - [07/Mar/2004:21:23:38 -0800] "GET /ops/SP/play//view/TWiki/TWikiUpgradeTo01May2000 HTTP/1.1" 200 7463 +64.242.88.10 - - [07/Mar/2004:21:31:12 -0800] "GET /ops/SP/play//edit/Main/Mail_release_date?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:33:51 -0800] "GET /ops/SP/play//view/TWiki/TWikiPlugins?rev=1.19 HTTP/1.1" 200 26541 +bh02i525f01.au.ibm.com - - [07/Mar/2004:21:34:00 -0800] "GET /AmavisNew.jsp HTTP/1.0" 200 2300 +64.242.88.10 - - [07/Mar/2004:21:39:55 -0800] "GET /ops/SP/play//attach/Main/ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:41:04 -0800] "GET /mailman/listinfo/techcomm HTTP/1.1" 200 6155 +64.242.88.10 - - [07/Mar/2004:21:42:47 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.8 HTTP/1.1" 200 15618 +64.242.88.10 - - [07/Mar/2004:21:44:10 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic7?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:50:22 -0800] "GET /ops/SP/play//rdiff/TWiki/WebSearch HTTP/1.1" 200 55862 +64.242.88.10 - - [07/Mar/2004:21:52:05 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiTopics HTTP/1.1" 200 101445 +64.242.88.10 - - [07/Mar/2004:22:03:19 -0800] "GET /ops/SP/play//rdiff/Main/VishaalGolam HTTP/1.1" 200 5055 +64.242.88.10 - - [07/Mar/2004:22:04:44 -0800] "GET /ops/SP/play//view/Main/TWikiUsers?rev=1.21 HTTP/1.1" 200 6522 +64.242.88.10 - - [07/Mar/2004:22:06:16 -0800] "GET /ops/SP/play//edit/Main/Delay_notice_recipient?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:07:33 -0800] "GET /ops/SP/play//view/TWiki/WikiNotation HTTP/1.1" 200 3617 +64.242.88.10 - - [07/Mar/2004:22:08:43 -0800] "GET /ops/SP/play//edit/Main/Forward_expansion_filter?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:09:44 -0800] "GET /ops/SP/play//edit/Main/TestArea?topicparent=Main.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:10:55 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=1.2 HTTP/1.1" 200 4366 +64.242.88.10 - - [07/Mar/2004:22:12:28 -0800] "GET /ops/SP/play//attach/TWiki/WebSearch HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:15:57 -0800] "GET /mailman/listinfo/hs_rcafaculty HTTP/1.1" 200 6345 +64.242.88.10 - - [07/Mar/2004:22:17:40 -0800] "GET /ops/SP/play//view/TWiki/TWikiSkins?skin=print HTTP/1.1" 200 9563 +64.242.88.10 - - [07/Mar/2004:22:27:18 -0800] "GET /ops/SP/play//edit/Main/OfficeLocations?t=1078691049 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:29:10 -0800] "GET /ops/SP/play//view/Main/ThanadonSomdee HTTP/1.1" 200 4611 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:12 -0800] "GET /mailman/options/cnc_notice/arobin%40shaw.c HTTP/1.1" 200 3382 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:41 -0800] "POST /mailman/options/cnc_notice HTTP/1.1" 200 3533 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:30:08 -0800] "POST /mailman/options/cnc_notice HTTP/1.1" 200 13973 +64.242.88.10 - - [07/Mar/2004:22:31:25 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.16 HTTP/1.1" 200 17361 +64.242.88.10 - - [07/Mar/2004:22:35:53 -0800] "GET /ops/SP/play//edit/Main/Default_delivery_slot_discount?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:22:36:58 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.10&rev2=1.9 HTTP/1.1" 200 5336 +64.242.88.10 - - [07/Mar/2004:22:39:00 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Al%20*Williams[^A-Za-z] HTTP/1.1" 200 4364 +64.242.88.10 - - [07/Mar/2004:22:45:46 -0800] "GET /ops/SP/play//edit/Main/Smtpd_banner?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:47:19 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.9 HTTP/1.1" 200 9133 +64.242.88.10 - - [07/Mar/2004:22:48:55 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSkins?rev1=1.10&rev2=1.9 HTTP/1.1" 200 5989 +64.242.88.10 - - [07/Mar/2004:22:51:55 -0800] "GET /ops/SP/play//attach/TWiki/AndreaSterbini HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:22:53:36 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPlugins?rev1=1.20&rev2=1.19 HTTP/1.1" 200 5140 +64.242.88.10 - - [07/Mar/2004:22:54:43 -0800] "GET /ops/SP/play//view/Know/ReadmeFirst?rev=1.4 HTTP/1.1" 200 6736 +64.242.88.10 - - [07/Mar/2004:22:58:24 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=r1.3 HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:23:09:07 -0800] "GET /ops/SP/play//view/TWiki/AlWilliams?rev=1.1 HTTP/1.1" 200 3697 +calcite.rhyolite.com - - [07/Mar/2004:23:10:27 -0800] "GET /clients.jsp HTTP/1.1" 200 18753 +64.242.88.10 - - [07/Mar/2004:23:10:44 -0800] "GET /ops/SP/play//view/TWiki/JohnTalintyre HTTP/1.1" 200 3766 +64.242.88.10 - - [07/Mar/2004:23:13:51 -0800] "GET /ops/SP/play//view/TWiki/TWikiDocGraphics HTTP/1.1" 200 14492 +64.242.88.10 - - [07/Mar/2004:23:15:51 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.24 HTTP/1.1" 200 20981 +64.242.88.10 - - [07/Mar/2004:23:16:57 -0800] "GET /ops/SP/play//rdiff/Main/SanJoseOffice HTTP/1.1" 200 9524 +64.242.88.10 - - [07/Mar/2004:23:19:01 -0800] "GET /ops/SP/play//rdiff/Main/WebNotify HTTP/1.1" 200 16853 +64.242.88.10 - - [07/Mar/2004:23:20:26 -0800] "GET /ops/SP/play//view/TWiki/TWikiSiteTools HTTP/1.1" 200 14435 +64.242.88.10 - - [07/Mar/2004:23:23:00 -0800] "GET /ops/SP/play//rdiff/TWiki/RichardDonkin?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5891 +64.242.88.10 - - [07/Mar/2004:23:27:26 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Preferences[^A-Za-z] HTTP/1.1" 200 20030 +64.242.88.10 - - [07/Mar/2004:23:30:23 -0800] "GET /ops/SP/play//rdiff/TWiki/WebHome HTTP/1.1" 200 108162 +64.242.88.10 - - [07/Mar/2004:23:34:31 -0800] "GET /ops/SP/play//edit/Main/Lmtp_quit_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:23:36:48 -0800] "GET /ops/SP/play//view/TWiki/WebSiteTools HTTP/1.1" 200 5208 +lj1036.passgo.com - - [07/Mar/2004:23:36:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1088.passgo.com - - [07/Mar/2004:23:36:59 -0800] "GET /ops/SP/play//oops/TWiki/JohnAltstadt HTTP/1.0" 200 209 +64.242.88.10 - - [07/Mar/2004:23:37:48 -0800] "GET /ops/SP/play//oops/Main/FileAttachment?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 6612 +64.242.88.10 - - [07/Mar/2004:23:42:44 -0800] "GET /ops/SP/play//edit/Main/Cleanup_service_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:23:47:58 -0800] "GET /ops/SP/play//view/TWiki/WikiReferences?skin=print HTTP/1.1" 200 5596 +64.242.88.10 - - [07/Mar/2004:23:50:03 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=1.3 HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:23:51:38 -0800] "GET /ops/SP/play//view/Main/PostSuper?rev=r1.1 HTTP/1.1" 200 3629 +64.242.88.10 - - [07/Mar/2004:23:56:30 -0800] "GET /ops/SP/play//rdiff/Main/PostQueue HTTP/1.1" 200 4662 +64.242.88.10 - - [07/Mar/2004:23:58:53 -0800] "GET /ops/SP/play//edit/TWiki/TablePlugin?t=1078681446 HTTP/1.1" 401 12851 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:05:30 -0800] "GET / HTTP/1.1" 200 3169 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:05:35 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:06:32 -0800] "GET /DCC.jsp HTTP/1.1" 200 2878 +64.242.88.10 - - [08/Mar/2004:00:08:58 -0800] "GET /ops/SP/play//oops/Sandbox/WebHome?template=oopsmore¶m1=1.7¶m2=1.7 HTTP/1.1" 200 4226 +64.242.88.10 - - [08/Mar/2004:00:11:22 -0800] "GET /ops/SP/play//edit/Main/WelcomeGuest?topicparent=Main.WebHome HTTP/1.1" 401 12846 +lj1125.passgo.com - - [08/Mar/2004:00:17:00 -0800] "GET /ops/SP/play//oops/Main/TWiki HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:00:17:22 -0800] "GET /ops/SP/play//view/TWiki/RichardDonkin?skin=print HTTP/1.1" 200 1729 +64.242.88.10 - - [08/Mar/2004:00:19:51 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.4 HTTP/1.1" 200 7049 +64.242.88.10 - - [08/Mar/2004:00:21:54 -0800] "GET /ops/SP/play//view/TWiki/TWikiRegistration?rev=r1.7 HTTP/1.1" 200 12737 +64.242.88.10 - - [08/Mar/2004:00:25:11 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.26 HTTP/1.1" 200 22710 +64.242.88.10 - - [08/Mar/2004:00:27:53 -0800] "GET /ops/SP/play//view/TWiki/GoBox HTTP/1.1" 200 3762 +64.242.88.10 - - [08/Mar/2004:00:29:13 -0800] "GET /ops/SP/play//view/Main/FileAttachment?rev=1.1 HTTP/1.1" 200 17757 +64.242.88.10 - - [08/Mar/2004:00:32:45 -0800] "GET /ops/SP/play//attach/TWiki/KevinKinnell HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:00:36:21 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiWikiClones HTTP/1.1" 200 9259 +64.242.88.10 - - [08/Mar/2004:00:37:23 -0800] "GET /ops/SP/play//oops/Main/NicholasLee?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6558 +64.242.88.10 - - [08/Mar/2004:00:40:10 -0800] "GET /ops/SP/play//edit/Main/TWikiForms?topicparent=Main.TWikiVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:00:43:43 -0800] "GET /ops/SP/play//rdiff/TWiki/DefaultPlugin HTTP/1.1" 200 20376 +64.242.88.10 - - [08/Mar/2004:00:50:59 -0800] "GET /mailman/admin/educationadmin HTTP/1.1" 200 2150 +64.242.88.10 - - [08/Mar/2004:00:52:12 -0800] "GET /mailman/private/hsdivision/ HTTP/1.1" 200 1549 +64.242.88.10 - - [08/Mar/2004:00:54:26 -0800] "GET /mailman/listinfo/artsscience HTTP/1.1" 200 6248 +64.242.88.10 - - [08/Mar/2004:00:55:38 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^i HTTP/1.1" 200 7226 +64.242.88.10 - - [08/Mar/2004:01:00:08 -0800] "GET /ops/SP/play//rdiff/TWiki/AdrianLynch HTTP/1.1" 200 4011 +64.242.88.10 - - [08/Mar/2004:01:01:15 -0800] "GET /ops/SP/play//view/Main/WelcomeGuest HTTP/1.1" 200 4723 +64.242.88.10 - - [08/Mar/2004:01:02:16 -0800] "GET /ops/SP/play//view/Main/MikeMannix?rev=1.3 HTTP/1.1" 200 4721 +64.242.88.10 - - [08/Mar/2004:01:04:05 -0800] "GET /ops/SP/play//edit/TWiki/WikiStyleWord?topicparent=TWiki.TextFormattingFAQ HTTP/1.1" 401 12846 +lj1089.passgo.com - - [08/Mar/2004:01:04:54 -0800] "GET /ops/SP/play//oops/TWiki/InterWikis HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:01:10:43 -0800] "GET /ops/SP/play//view/TWiki/FormattedSearch?rev=1.8 HTTP/1.1" 200 20434 +64.242.88.10 - - [08/Mar/2004:01:12:20 -0800] "GET /ops/SP/play//view/TWiki/TWikiEnhancementRequests?rev=1.3 HTTP/1.1" 200 4379 +64.242.88.10 - - [08/Mar/2004:01:16:37 -0800] "GET /ops/SP/play//view/Main/FileAttachment?rev=1.2 HTTP/1.1" 200 17919 +64.242.88.10 - - [08/Mar/2004:01:19:18 -0800] "GET /ops/SP/play//edit/TWiki/AppendixFileSystem?t=1078674582 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:24:13 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.33 HTTP/1.1" 200 26294 +64.242.88.10 - - [08/Mar/2004:01:25:15 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^t HTTP/1.1" 200 8306 +64.242.88.10 - - [08/Mar/2004:01:29:17 -0800] "GET /ops/SP/play//oops/TWiki/TWikiPlugins?template=oopsmore¶m1=1.21¶m2=1.21 HTTP/1.1" 200 11341 +64.242.88.10 - - [08/Mar/2004:01:30:39 -0800] "GET /mailman/private/sswk/ HTTP/1.1" 200 1531 +64.242.88.10 - - [08/Mar/2004:01:33:14 -0800] "GET /mailman/private/business/ HTTP/1.1" 200 1543 +64.242.88.10 - - [08/Mar/2004:01:35:13 -0800] "GET /ops/SP/play//edit/TWiki/InterWikis?t=1078696998 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:41:14 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.18 HTTP/1.1" 200 14001 +64.242.88.10 - - [08/Mar/2004:01:46:05 -0800] "GET /ops/SP/play//search/TWiki/?search=\\.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on&limit=200 HTTP/1.1" 200 101279 +64.242.88.10 - - [08/Mar/2004:01:47:06 -0800] "GET /ops/SP/play//edit/TWiki/TWikiPages?topicparent=TWiki.WelcomeGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:48:06 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.16 HTTP/1.1" 200 9342 +64.242.88.10 - - [08/Mar/2004:01:50:37 -0800] "GET /ops/SP/play//rdiff/TWiki/RyanFreebern?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5243 +64.242.88.10 - - [08/Mar/2004:01:59:13 -0800] "GET /ops/SP/play//edit/Main/Smtp_line_length_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:00:30 -0800] "GET /ops/SP/play//view/Main/WebStatistics?skin=print HTTP/1.1" 200 6194 +64.242.88.10 - - [08/Mar/2004:02:01:34 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +64.242.88.10 - - [08/Mar/2004:02:03:12 -0800] "GET /mailman/admin/mlc HTTP/1.1" 200 2060 +64.242.88.10 - - [08/Mar/2004:02:05:15 -0800] "GET /mailman/listinfo/jjec HTTP/1.1" 200 6297 +64.242.88.10 - - [08/Mar/2004:02:06:17 -0800] "GET /mailman/listinfo/deans HTTP/1.1" 200 6102 +64.242.88.10 - - [08/Mar/2004:02:07:21 -0800] "GET /mailman/listinfo/gisgrad HTTP/1.1" 200 6024 +64.242.88.10 - - [08/Mar/2004:02:09:08 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.1" 200 4468 +64.242.88.10 - - [08/Mar/2004:02:12:24 -0800] "GET /ops/SP/play//edit/Main/Setgid_group?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:16:24 -0800] "GET /ops/SP/play//view/Main/WebChanges?skin=print HTTP/1.1" 200 38580 +lj1016.passgo.com - - [08/Mar/2004:02:17:10 -0800] "GET /ops/SP/play//oops/TWiki/FileAttachment HTTP/1.0" 200 209 +lj1036.passgo.com - - [08/Mar/2004:02:22:19 -0800] "GET /ops/SP/play//view/Main/TWi HTTP/1.0" 200 4866 +64.242.88.10 - - [08/Mar/2004:02:23:45 -0800] "GET /ops/SP/play//rdiff/TWiki/IncludeTopicsAndWebPages HTTP/1.1" 200 20972 +64.242.88.10 - - [08/Mar/2004:02:26:44 -0800] "GET /ops/SP/play//oops/Main/WebChanges?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6540 +64.242.88.10 - - [08/Mar/2004:02:27:51 -0800] "GET /ops/SP/play//rdiff/TWiki/InstantEnhancements HTTP/1.1" 200 25123 +64.242.88.10 - - [08/Mar/2004:02:33:28 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPreferences?rev1=1.47&rev2=1.46 HTTP/1.1" 200 4313 +64.242.88.10 - - [08/Mar/2004:02:34:40 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.24 HTTP/1.1" 200 9769 +64.242.88.10 - - [08/Mar/2004:02:42:36 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +64.242.88.10 - - [08/Mar/2004:02:45:03 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&bookview=on&search=.* HTTP/1.1" 200 102399 +64.242.88.10 - - [08/Mar/2004:02:46:12 -0800] "GET /ops/SP/play//edit/Main/Local_recipient_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:02:47:58 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +lj1025.passgo.com - - [08/Mar/2004:02:48:05 -0800] "GET /ops/SP/play//oops/Main/KevinWGage HTTP/1.0" 200 209 +prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:53 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:02:52:39 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +prxint-sxb2.e-i.net - - [08/Mar/2004:02:54:29 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.0" 200 4022 +64.242.88.10 - - [08/Mar/2004:02:54:54 -0800] "GET /ops/SP/play//edit/TWiki/NewTopic?topicparent=TWiki.WikiSyntax HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:59:03 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSite HTTP/1.1" 200 71941 +64.242.88.10 - - [08/Mar/2004:03:01:12 -0800] "GET /ops/SP/play//rdiff/TWiki/SimultaneousEdits HTTP/1.1" 200 6180 +64.242.88.10 - - [08/Mar/2004:03:06:31 -0800] "GET /ops/SP/play//view/Main/NicholasLee?rev=1.2 HTTP/1.1" 200 3570 +64.242.88.10 - - [08/Mar/2004:03:07:59 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.9 HTTP/1.1" 200 15756 +64.242.88.10 - - [08/Mar/2004:03:09:20 -0800] "GET /mailman/listinfo/ncbnpfaculty HTTP/1.1" 200 6331 +64.242.88.10 - - [08/Mar/2004:03:11:28 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Inter%20*Wikis[^A-Za-z] HTTP/1.1" 200 5113 +64.242.88.10 - - [08/Mar/2004:03:16:22 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingFAQ?template=oopsmore¶m1=1.14¶m2=1.14 HTTP/1.1" 200 11364 +64.242.88.10 - - [08/Mar/2004:03:17:50 -0800] "GET /ops/SP/play//rdiff/Main/WebTopicList HTTP/1.1" 200 8004 +64.242.88.10 - - [08/Mar/2004:03:21:16 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +64.242.88.10 - - [08/Mar/2004:03:26:06 -0800] "GET /mailman/private/mlc/ HTTP/1.1" 200 1528 +64.242.88.10 - - [08/Mar/2004:03:28:02 -0800] "GET /ops/SP/play//view/TWiki/WikiName HTTP/1.1" 200 4811 +64.242.88.10 - - [08/Mar/2004:03:33:52 -0800] "GET /ops/SP/play//rdiff/Main/WebRss HTTP/1.1" 200 20726 +64.242.88.10 - - [08/Mar/2004:03:35:42 -0800] "GET /ops/SP/play//rdiff/TWiki/SvenDowideit?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5277 +rouble.cc.strath.ac.uk - - [08/Mar/2004:03:40:51 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +213.181.81.4 - - [08/Mar/2004:03:42:20 -0800] "GET /LateEmail.jsp HTTP/1.0" 200 7649 +64.242.88.10 - - [08/Mar/2004:03:46:27 -0800] "GET /ops/SP/play//edit/Main/Deliver_lock_attempts?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:03:48:18 -0800] "GET /ops/SP/play//edit/Main/Daemon_directory?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:03:49:24 -0800] "GET /ops/SP/play//rdiff/TWiki/KlausWriessnegger?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5421 +64.242.88.10 - - [08/Mar/2004:03:51:05 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=1.4 HTTP/1.1" 200 4719 +64.242.88.10 - - [08/Mar/2004:03:52:17 -0800] "GET /ops/SP/play//edit/Main/Relayhost?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +lj1036.passgo.com - - [08/Mar/2004:03:53:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1159.passgo.com - - [08/Mar/2004:03:54:03 -0800] "GET /ops/SP/play//oops/Main/TWi HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:03:55:09 -0800] "GET /ops/SP/play//edit/Main/BookView?topicparent=Main.TWikiVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:16:08 -0800] "GET /ops/SP/play//rdiff/TWiki/DeleteOrRenameATopic HTTP/1.1" 200 10254 +64.242.88.10 - - [08/Mar/2004:04:18:28 -0800] "GET /ops/SP/play//view/TWiki/DavidWarman HTTP/1.1" 200 3739 +64.242.88.10 - - [08/Mar/2004:04:20:48 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.28 HTTP/1.1" 200 22777 +64.242.88.10 - - [08/Mar/2004:04:21:53 -0800] "GET /ops/SP/play//rdiff/Main/PeterThoeny HTTP/1.1" 200 18927 +64.242.88.10 - - [08/Mar/2004:04:22:55 -0800] "GET /ops/SP/play//edit/TWiki/SvenDowideit?t=1078710644 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:24:47 -0800] "GET /ops/SP/play//edit/Main/RBLsHowTo?t=1078668449 HTTP/1.1" 401 12846 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:25:38 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 5672 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:25:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:26:02 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.0" 200 3960 +64.242.88.10 - - [08/Mar/2004:04:26:02 -0800] "GET /ops/SP/play//rdiff/TWiki/DefaultPlugin?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4911 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:26:11 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.0" 200 4515 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:34 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.0" 200 4213 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:38 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:41 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.0" 200 4154 +64.242.88.10 - - [08/Mar/2004:04:28:42 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.61&rev2=1.60 HTTP/1.1" 200 4898 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:52 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.0" 200 3617 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:00 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:11 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.0" 200 58169 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:21 -0800] "GET /ops/SP/play//edit/Main/Propagate_unmatched_extensions?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:30 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.0" 200 130 +64.242.88.10 - - [08/Mar/2004:04:33:25 -0800] "GET /mailman/admin/hs_support HTTP/1.1" 200 2120 +64.242.88.10 - - [08/Mar/2004:04:40:32 -0800] "GET /ops/SP/play//edit/Main/Always_bcc?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:43:52 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.5 HTTP/1.1" 200 9492 +64.242.88.10 - - [08/Mar/2004:04:52:13 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGuest?rev1=1.5&rev2=1.4 HTTP/1.1" 200 6233 +64.242.88.10 - - [08/Mar/2004:04:55:40 -0800] "GET /ops/SP/play//edit/Main/Delay_warning_time?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:59:13 -0800] "GET /ops/SP/play//edit/TWiki/KlausWriessnegger?t=1078709735 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:05:00:42 -0800] "GET /ops/SP/play//rdiff/TWiki/StanleyKnutson HTTP/1.1" 200 5327 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:45 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:46 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:52 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:01:02 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:01:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:05:01:58 -0800] "GET /ops/SP/play//view/TWiki/WhatIsWikiWiki HTTP/1.1" 200 4234 +200.160.249.68.bmf.com.br - - [08/Mar/2004:05:02:06 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +200.160.249.68.bmf.com.br - - [08/Mar/2004:05:02:07 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:05:03:13 -0800] "GET /ops/SP/play//view/Main/WebIndex?rev=1.1 HTTP/1.1" 200 44960 +64.242.88.10 - - [08/Mar/2004:05:13:35 -0800] "GET /mailman/private/hs_support/ HTTP/1.1" 200 1549 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:16:15 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:16:20 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +64.242.88.10 - - [08/Mar/2004:05:22:57 -0800] "GET /ops/SP/play//attach/Sandbox/WebHome HTTP/1.1" 401 12846 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:23:37 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +66-194-6-70.gen.twtelecom.net - - [08/Mar/2004:05:24:18 -0800] "GET / HTTP/1.1" 200 3169 +64.242.88.10 - - [08/Mar/2004:05:24:29 -0800] "GET /ops/SP/play//edit/TWiki/UnchangeableTopicBug?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12846 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:24:50 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:25:46 -0800] "GET /ops/SP/play//view/Main/Postfix HTTP/1.1" 200 3699 +64.242.88.10 - - [08/Mar/2004:05:26:02 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?skin=print HTTP/1.1" 200 2372 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:06 -0800] "GET /ops/SP/play//edit/Main/UvscanAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12851 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:08 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:16 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +64.242.88.10 - - [08/Mar/2004:05:30:07 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit?rev=1.1 HTTP/1.1" 200 3564 +64.242.88.10 - - [08/Mar/2004:05:31:47 -0800] "GET /ops/SP/play//edit/Main/Maps_rbl_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +lj1027.passgo.com - - [08/Mar/2004:05:32:01 -0800] "GET /ops/SP/play//view/TWiki/2fa HTTP/1.0" 200 4615 +64.242.88.10 - - [08/Mar/2004:05:34:33 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Changes[^A-Za-z] HTTP/1.1" 200 4829 +64.242.88.10 - - [08/Mar/2004:05:36:56 -0800] "GET /ops/SP/play//edit/Main/WebStatistics?t=1078690975 HTTP/1.1" 401 12851 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:38:57 -0800] "GET /razor.jsp HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:05:42:06 -0800] "GET /ops/SP/play//view/Main/RelayGateway?rev=1.3 HTTP/1.1" 200 4232 +64.242.88.10 - - [08/Mar/2004:05:47:38 -0800] "GET /robots.txt HTTP/1.1" 200 68 +64.242.88.10 - - [08/Mar/2004:05:48:48 -0800] "GET /ops/SP/play//rdiff/TWiki/KevinKinnell?rev1=1.4&rev2=1.3 HTTP/1.1" 200 4369 +64.242.88.10 - - [08/Mar/2004:05:51:45 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.11 HTTP/1.1" 200 13102 +64.242.88.10 - - [08/Mar/2004:05:56:08 -0800] "GET /ops/SP/play//view/TWiki/TWikiRegistration?rev=r1.4 HTTP/1.1" 200 12113 +64.242.88.10 - - [08/Mar/2004:05:57:15 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevTWikiEnhancementRequests?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:05:58:39 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Peter%20*Fokkinga[^A-Za-z] HTTP/1.1" 200 4388 +64.242.88.10 - - [08/Mar/2004:06:01:51 -0800] "GET /ops/SP/play//attach/Main/WebPreferences HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:06:09:37 -0800] "GET /mailman/admin/hs_rcafaculty HTTP/1.1" 200 2144 +64.242.88.10 - - [08/Mar/2004:06:17:13 -0800] "GET /ops/SP/play//rdiff/TWiki/WebChanges HTTP/1.1" 200 114167 +64.242.88.10 - - [08/Mar/2004:06:20:36 -0800] "GET /ops/SP/play//view/Main/JorisBenschop?skin=print HTTP/1.1" 200 2717 +64.242.88.10 - - [08/Mar/2004:06:23:52 -0800] "GET /ops/SP/play//edit/TWiki/TestArea?topicparent=TWiki.WelcomeGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:06:32:14 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.6 HTTP/1.1" 200 12620 +64.242.88.10 - - [08/Mar/2004:06:37:19 -0800] "GET /ops/SP/play//rdiff/TWiki/HaroldGottschalk?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5389 +64.242.88.10 - - [08/Mar/2004:06:41:22 -0800] "GET /pipermail/techcomm/ HTTP/1.1" 200 1176 +64.242.88.10 - - [08/Mar/2004:06:42:29 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.19 HTTP/1.1" 200 20488 +64.242.88.10 - - [08/Mar/2004:06:43:32 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic2?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:06:47:41 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:06:47:41 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:06:49:27 -0800] "GET /ops/SP/play//attach/TWiki/InterWikis HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:06:54:30 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSkins?rev1=1.11&rev2=1.10 HTTP/1.1" 200 5711 +64.242.88.10 - - [08/Mar/2004:06:57:09 -0800] "GET /ops/SP/play//rdiff/TWiki/WebNotify HTTP/1.1" 200 11780 +128.227.88.79 - - [08/Mar/2004:06:57:46 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:06:57:46 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:07:00:15 -0800] "GET /ops/SP/play//view/TWiki/DontNotify?rev=1.1 HTTP/1.1" 200 3965 +64.242.88.10 - - [08/Mar/2004:07:07:13 -0800] "GET /ops/SP/play//edit/Main/Masquerade_classes?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:07:09:12 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +64.242.88.10 - - [08/Mar/2004:07:09:21 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.10 HTTP/1.1" 200 8312 +64.242.88.10 - - [08/Mar/2004:07:10:26 -0800] "GET /ops/SP/play//view/TWiki/HaroldGottschalk?rev=1.2 HTTP/1.1" 200 3774 +64.242.88.10 - - [08/Mar/2004:07:11:37 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevTWikiPlannedFeatures?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:07:12:39 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.44 HTTP/1.1" 200 41434 +64.242.88.10 - - [08/Mar/2004:07:22:13 -0800] "GET /ops/SP/play//view/TWiki/PeterFokkinga?rev=1.2 HTTP/1.1" 200 3748 +64.242.88.10 - - [08/Mar/2004:07:23:38 -0800] "GET /ops/SP/play//edit/TWiki/TWikiPlugins?t=1078696313 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:24:43 -0800] "GET /mailman/listinfo/webct HTTP/1.1" 200 6377 +64.242.88.10 - - [08/Mar/2004:07:25:56 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [08/Mar/2004:07:27:01 -0800] "GET /mailman/listinfo/faculty HTTP/1.1" 200 6054 +61.9.4.61 - - [08/Mar/2004:07:27:36 -0800] "GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPREQ=0 HTTP/1.0" 404 284 +61.9.4.61 - - [08/Mar/2004:07:27:36 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +61.9.4.61 - - [08/Mar/2004:07:27:37 -0800] "GET /MSOffice/cltreq.asp?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPREQ=0 HTTP/1.0" 404 284 +64.242.88.10 - - [08/Mar/2004:07:28:29 -0800] "GET /mailman/admin/sswk HTTP/1.1" 200 2072 +64.242.88.10 - - [08/Mar/2004:07:29:56 -0800] "GET /mailman/listinfo/purchasing HTTP/1.1" 200 6050 +64.242.88.10 - - [08/Mar/2004:07:35:50 -0800] "GET /ops/SP/play//edit/Main/Invalid_hostname_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:39:31 -0800] "GET /ops/SP/play//rdiff/Main/WebPreferences?rev1=1.14&rev2=1.13 HTTP/1.1" 200 7207 +64.242.88.10 - - [08/Mar/2004:07:40:54 -0800] "GET /ops/SP/play//rename/TWiki/TWikiHistory HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:43:21 -0800] "GET /ops/SP/play//view/TWiki/SearchDoesNotWork?rev=r1.2 HTTP/1.1" 200 4072 +64.242.88.10 - - [08/Mar/2004:07:44:53 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.50 HTTP/1.1" 200 42285 +64.242.88.10 - - [08/Mar/2004:07:49:56 -0800] "GET /ops/SP/play//edit/TWiki/RyanFreebern?t=1078701457 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:51:39 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.2 HTTP/1.1" 200 6061 +64.242.88.10 - - [08/Mar/2004:07:53:19 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicEditTemplate HTTP/1.1" 200 7895 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:37 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +64.242.88.10 - - [08/Mar/2004:07:54:30 -0800] "GET /ops/SP/play//edit/Main/Unknown_local_recipient_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:56:34 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Index[^A-Za-z] HTTP/1.1" 200 4163 +64.242.88.10 - - [08/Mar/2004:08:04:46 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +p5083cd5d.dip0.t-ipconnect.de - - [08/Mar/2004:08:09:32 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +64.242.88.10 - - [08/Mar/2004:08:12:50 -0800] "GET /ops/SP/play//view/TWiki/ChangePassword?rev=r1.6 HTTP/1.1" 200 5181 +64.242.88.10 - - [08/Mar/2004:08:14:15 -0800] "GET /ops/SP/play//edit/TWiki/HaroldGottschalk?t=1078717948 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:08:15:21 -0800] "GET /ops/SP/play//edit/Main/Expand_owner_alias?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:08:17:09 -0800] "GET /ops/SP/play//view/Main/WebIndex?rev=r1.2 HTTP/1.1" 200 45059 +64.242.88.10 - - [08/Mar/2004:08:18:52 -0800] "GET /rfc.jsp HTTP/1.1" 200 3103 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:08:21:00 -0800] "GET / HTTP/1.1" 200 3169 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:08:21:00 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +64.242.88.10 - - [08/Mar/2004:08:21:47 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=RBLs%20*How%20*To[^A-Za-z] HTTP/1.1" 200 3575 +64.242.88.10 - - [08/Mar/2004:08:25:37 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicEditTemplate?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4212 +212.92.37.62 - - [08/Mar/2004:08:26:41 -0800] "GET / HTTP/1.1" 200 3169 +212.92.37.62 - - [08/Mar/2004:08:27:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +212.92.37.62 - - [08/Mar/2004:08:27:08 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:08:27:14 -0800] "GET /ops/SP/play//rdiff/Main/SpamAssassin HTTP/1.1" 200 4445 +212.92.37.62 - - [08/Mar/2004:08:27:23 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +212.92.37.62 - - [08/Mar/2004:08:27:28 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:08:28:23 -0800] "GET /ops/SP/play//rdiff/Main/TokyoOffice?rev1=1.2&rev2=1.1 HTTP/1.1" 200 7316 +64.242.88.10 - - [08/Mar/2004:08:29:36 -0800] "GET /ops/SP/play//view/TWiki/TWikiCategoryTable HTTP/1.1" 200 3729 +219.95.17.51 - - [08/Mar/2004:08:29:57 -0800] "GET / HTTP/1.1" 200 3169 +212.92.37.62 - - [08/Mar/2004:08:30:25 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +212.92.37.62 - - [08/Mar/2004:08:31:37 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +10.0.0.176 - - [08/Mar/2004:08:32:24 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:08:32:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [08/Mar/2004:08:32:27 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +212.92.37.62 - - [08/Mar/2004:08:32:34 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +212.92.37.62 - - [08/Mar/2004:08:33:27 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +212.92.37.62 - - [08/Mar/2004:08:33:30 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +212.92.37.62 - - [08/Mar/2004:08:33:39 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +64.242.88.10 - - [08/Mar/2004:08:33:51 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.14 HTTP/1.1" 200 8820 +212.92.37.62 - - [08/Mar/2004:08:33:52 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +212.92.37.62 - - [08/Mar/2004:08:33:57 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +212.92.37.62 - - [08/Mar/2004:08:34:09 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +64.242.88.10 - - [08/Mar/2004:08:34:53 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.8&rev2=1.7 HTTP/1.1" 200 4972 +64.242.88.10 - - [08/Mar/2004:08:36:05 -0800] "GET /ops/SP/play//view/TWiki/ChangePassword?rev=r1.3 HTTP/1.1" 200 5229 +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:17 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:08:37:23 -0800] "GET /ops/SP/play//attach/TWiki/HaroldGottschalk HTTP/1.1" 401 12846 +66.213.206.2 - - [08/Mar/2004:08:37:53 -0800] "GET / HTTP/1.1" 200 3169 +64.242.88.10 - - [08/Mar/2004:08:40:15 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +64.242.88.10 - - [08/Mar/2004:08:52:13 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.15 HTTP/1.1" 200 16746 +64.242.88.10 - - [08/Mar/2004:08:53:17 -0800] "GET /ops/SP/play//view/TWiki/TWikiTutorial HTTP/1.1" 200 14485 +64.242.88.10 - - [08/Mar/2004:08:55:12 -0800] "GET /mailman/private/dentalstudies/ HTTP/1.1" 200 1558 +spot.nnacorp.com - - [08/Mar/2004:09:02:14 -0800] "GET / HTTP/1.1" 200 3169 +spot.nnacorp.com - - [08/Mar/2004:09:02:21 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +spot.nnacorp.com - - [08/Mar/2004:09:02:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +10.0.0.176 - - [08/Mar/2004:09:02:29 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:02:31 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7326 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7927 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7182 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8866 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9307 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6805 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +spot.nnacorp.com - - [08/Mar/2004:09:02:54 -0800] "GET /ops/SP/play//view/Main/TWikiUsers HTTP/1.1" 200 6697 +spot.nnacorp.com - - [08/Mar/2004:09:02:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:09:03:18 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +64.242.88.10 - - [08/Mar/2004:09:05:54 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic6?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:09:55 -0800] "GET /ops/SP/play//view/TWiki/TablePlugin?skin=print HTTP/1.1" 200 1572 +64.242.88.10 - - [08/Mar/2004:09:12:54 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Spam%20*Assassin[^A-Za-z] HTTP/1.1" 200 8782 +lhr003a.dhl.com - - [08/Mar/2004:09:16:26 -0800] "GET / HTTP/1.0" 200 3169 +lhr003a.dhl.com - - [08/Mar/2004:09:17:16 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3040 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2341 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2271 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3302 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1663 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2521 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1918 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1580 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2202 +lhr003a.dhl.com - - [08/Mar/2004:09:17:18 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1822 +lhr003a.dhl.com - - [08/Mar/2004:09:17:18 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1526 +10.0.0.176 - - [08/Mar/2004:09:18:53 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:18:56 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3040 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2271 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2341 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3302 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1580 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1918 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1663 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2202 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2521 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1822 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1526 +64.242.88.10 - - [08/Mar/2004:09:23:03 -0800] "GET /ops/SP/play//view/TWiki/SearchDoesNotWork?rev=r1.1 HTTP/1.1" 200 3981 +64.242.88.10 - - [08/Mar/2004:09:25:42 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=TWiki%20*FAQ[^A-Za-z] HTTP/1.1" 200 12083 +lj1036.passgo.com - - [08/Mar/2004:09:29:35 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1027.passgo.com - - [08/Mar/2004:09:29:36 -0800] "GET /ops/SP/play//oops/Know/WinDoze95Crash HTTP/1.0" 200 209 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:10 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:11 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:09:30:40 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=r1.10 HTTP/1.1" 200 9419 +64.242.88.10 - - [08/Mar/2004:09:32:32 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiDownload HTTP/1.1" 200 5933 +64.242.88.10 - - [08/Mar/2004:09:33:46 -0800] "GET /ops/SP/play//view/Main/SideBar?rev=1.1 HTTP/1.1" 200 3564 +lj1156.passgo.com - - [08/Mar/2004:09:33:53 -0800] "GET /ops/SP/play//oops/TWiki/TWikiAccessControl HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:09:34:58 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiFAQ HTTP/1.1" 200 43115 +64.242.88.10 - - [08/Mar/2004:09:36:35 -0800] "GET /ops/SP/play//edit/TWiki/WebNotification?topicparent=TWiki.TWikiUpgradeTo01May2000 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:38:11 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=r1.3 HTTP/1.1" 200 4604 +lj1156.passgo.com - - [08/Mar/2004:09:40:30 -0800] "GET /ops/SP/play//view/TWiki/d43 HTTP/1.0" 200 4619 +64.242.88.10 - - [08/Mar/2004:09:41:15 -0800] "GET /ops/SP/play//edit/Main/Export_environment?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:42:27 -0800] "GET /ops/SP/play//rdiff/Know/ReadmeFirst?rev1=1.6&rev2=1.5 HTTP/1.1" 200 4187 +64.242.88.10 - - [08/Mar/2004:09:45:15 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Change%20*Password[^A-Za-z] HTTP/1.1" 200 7226 +64.242.88.10 - - [08/Mar/2004:10:01:06 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.4 HTTP/1.1" 200 5171 +64.242.88.10 - - [08/Mar/2004:10:05:40 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=r1.9 HTTP/1.1" 200 9469 +lj1164.passgo.com - - [08/Mar/2004:10:06:28 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.0" 200 5383 +64.242.88.10 - - [08/Mar/2004:10:08:02 -0800] "GET /ops/SP/play//rename/TWiki/DefaultPlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:10:09:52 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=r1.1 HTTP/1.1" 200 3763 +64.242.88.10 - - [08/Mar/2004:10:14:46 -0800] "GET /ops/SP/play//edit/TWiki/TWikiRegistration?t=1078670224 HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:10:16:52 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup?rev=1.6 HTTP/1.1" 200 4462 +64.242.88.10 - - [08/Mar/2004:10:18:21 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiSyntax HTTP/1.1" 200 59454 +64.242.88.10 - - [08/Mar/2004:10:21:21 -0800] "GET /ops/SP/play//oops/TWiki/WikiCulture?template=oopsmore¶m1=1.8¶m2=1.8 HTTP/1.1" 200 11245 +64.242.88.10 - - [08/Mar/2004:10:30:56 -0800] "GET /ops/SP/play//view/TWiki/WikiTopic HTTP/1.1" 200 4646 +64.242.88.10 - - [08/Mar/2004:10:32:18 -0800] "GET /ops/SP/play//rdiff/TWiki/WebPreferences HTTP/1.1" 200 36410 +64.242.88.10 - - [08/Mar/2004:10:34:55 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?skin=print HTTP/1.1" 200 7196 +64.242.88.10 - - [08/Mar/2004:10:40:09 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.7 HTTP/1.1" 200 8540 +64.242.88.10 - - [08/Mar/2004:10:45:25 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Thanadon%20*Somdee[^A-Za-z] HTTP/1.1" 200 4287 +64.242.88.10 - - [08/Mar/2004:10:46:34 -0800] "GET /ops/SP/play//view/TWiki/TWikiUpgradeTo01May2000?rev=1.3 HTTP/1.1" 200 7441 +10.0.0.176 - - [08/Mar/2004:10:48:02 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:10:48:05 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7213 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7970 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7254 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8821 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:10:48:19 -0800] "GET /ops/SP/play//edit/Main/Max_use?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3080 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2224 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3299 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2481 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1667 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2346 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1872 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1585 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2202 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1833 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1521 +64.242.88.10 - - [08/Mar/2004:10:50:05 -0800] "GET /ops/SP/play//rdiff/TWiki/WebRss HTTP/1.1" 200 21483 +64.242.88.10 - - [08/Mar/2004:11:03:34 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiCulture?rev1=1.8&rev2=1.7 HTTP/1.1" 200 5326 +128.227.88.79 - - [08/Mar/2004:11:06:20 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +128.227.88.79 - - [08/Mar/2004:11:06:20 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +128.227.88.79 - - [08/Mar/2004:11:06:28 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:11:09:24 -0800] "GET /ops/SP/play//edit/Main/Lmtp_mail_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:11:10:09 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:11:10:24 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +128.227.88.79 - - [08/Mar/2004:11:11:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:11:11:10 -0800] "GET /ops/SP/play//view/Main/TWikiGroups HTTP/1.1" 200 4816 +128.227.88.79 - - [08/Mar/2004:11:11:15 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.1" 200 4175 +128.227.88.79 - - [08/Mar/2004:11:11:26 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +64.242.88.10 - - [08/Mar/2004:11:11:51 -0800] "GET /ops/SP/play//edit/Main/TWikiGuest?t=1078713282 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:15:51 -0800] "GET /ops/SP/play//rdiff/TWiki/AdminSkillsAssumptions HTTP/1.1" 200 10368 +64.242.88.10 - - [08/Mar/2004:11:17:49 -0800] "GET /ops/SP/play//view/Sandbox/WebHome?rev=r1.3 HTTP/1.1" 200 8708 +64.242.88.10 - - [08/Mar/2004:11:19:43 -0800] "GET /ops/SP/play//edit/TWiki/WikiNotation?t=1078726052 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:24:12 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Wiki%20*Notation[^A-Za-z] HTTP/1.1" 200 6558 +64.242.88.10 - - [08/Mar/2004:11:25:16 -0800] "GET /ops/SP/play//oops/TWiki/WikiNotation?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 11263 +10.0.0.176 - - [08/Mar/2004:11:40:41 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7226 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8055 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8787 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7088 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:11:41:14 -0800] "GET /mailman/admin/artsscience HTTP/1.1" 200 2125 +64.242.88.10 - - [08/Mar/2004:11:43:17 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^d HTTP/1.1" 200 5036 +64.242.88.10 - - [08/Mar/2004:11:45:08 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevFeatureToDo?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:47:52 -0800] "GET /ops/SP/play//rename/TWiki/ResetPassword HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:11:49:23 -0800] "GET /ops/SP/play//edit/Main/Fast_flush_domains?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:51:20 -0800] "GET /ops/SP/play//edit/Main/SpamAssassin?t=1078709979 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:56:19 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.10 HTTP/1.1" 200 14650 +64.242.88.10 - - [08/Mar/2004:11:57:28 -0800] "GET /ops/SP/play//view/TWiki/FileAttribute?rev=r1.2 HTTP/1.1" 200 3949 +64.242.88.10 - - [08/Mar/2004:12:00:26 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiEnhancementRequests HTTP/1.1" 200 10417 +64.242.88.10 - - [08/Mar/2004:12:06:03 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Kevin%20*Kinnell[^A-Za-z] HTTP/1.1" 200 4536 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7192 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8081 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 9065 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7206 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:12:07:13 -0800] "GET /ops/SP/play//view/TWiki/FileAttribute?rev=1.2 HTTP/1.1" 200 3949 +64.242.88.10 - - [08/Mar/2004:12:08:32 -0800] "GET /ops/SP/play//view/TWiki/WikiNotation?skin=print HTTP/1.1" 200 1435 +64.242.88.10 - - [08/Mar/2004:12:10:39 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPlannedFeatures HTTP/1.1" 200 10577 +64.242.88.10 - - [08/Mar/2004:12:12:50 -0800] "GET /mailman/admin/deans HTTP/1.1" 200 2080 +64.242.88.10 - - [08/Mar/2004:12:15:36 -0800] "GET /pipermail/webber/ HTTP/1.1" 200 1161 +64.242.88.10 - - [08/Mar/2004:12:20:18 -0800] "GET /ops/SP/play//view/Main/PostSuper?rev=1.1 HTTP/1.1" 200 3629 +64.242.88.10 - - [08/Mar/2004:12:25:47 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=1.13 HTTP/1.1" 200 8770 +64.242.88.10 - - [08/Mar/2004:12:28:09 -0800] "GET /ops/SP/play//edit/Main/Mailq_path?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:12:31:32 -0800] "GET /ops/SP/play//view/TWiki/WebHome?rev=r1.49 HTTP/1.1" 200 12993 +64.242.88.10 - - [08/Mar/2004:12:33:09 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.49 HTTP/1.1" 200 42243 +64.242.88.10 - - [08/Mar/2004:12:39:34 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiDocGraphics?rev1=1.11&rev2=1.10 HTTP/1.1" 200 6551 +64.242.88.10 - - [08/Mar/2004:12:40:36 -0800] "GET /ops/SP/play//view/TWiki/WebHome?rev=r1.47 HTTP/1.1" 200 12819 +64.242.88.10 - - [08/Mar/2004:12:42:04 -0800] "GET /ops/SP/play//view/Sandbox/WebStatistics HTTP/1.1" 200 6063 +64.242.88.10 - - [08/Mar/2004:12:43:08 -0800] "GET /pipermail/gisgrad/ HTTP/1.1" 200 1118 +64.242.88.10 - - [08/Mar/2004:12:45:13 -0800] "GET /mailman/admin/webber HTTP/1.1" 200 2089 +64.242.88.10 - - [08/Mar/2004:12:47:42 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=1.14 HTTP/1.1" 200 8820 +64.242.88.10 - - [08/Mar/2004:12:55:18 -0800] "GET /ops/SP/play//view/TWiki/KevinKinnell?rev=1.4 HTTP/1.1" 200 3730 +64.242.88.10 - - [08/Mar/2004:12:58:39 -0800] "GET /ops/SP/play//search/Main/?search=\\.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on&limit=800 HTTP/1.1" 200 43915 +market-mail.panduit.com - - [08/Mar/2004:12:58:50 -0800] "GET / HTTP/1.0" 200 3169 +market-mail.panduit.com - - [08/Mar/2004:12:58:50 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +market-mail.panduit.com - - [08/Mar/2004:12:59:18 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +market-mail.panduit.com - - [08/Mar/2004:12:59:34 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3095 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2272 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3279 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2349 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1659 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2542 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1927 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1580 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2201 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1829 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1524 +market-mail.panduit.com - - [08/Mar/2004:12:59:55 -0800] "GET /DCC.jsp HTTP/1.0" 200 2878 +market-mail.panduit.com - - [08/Mar/2004:13:00:12 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +market-mail.panduit.com - - [08/Mar/2004:13:00:12 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +market-mail.panduit.com - - [08/Mar/2004:13:00:13 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +market-mail.panduit.com - - [08/Mar/2004:13:00:20 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.0" 200 4377 +market-mail.panduit.com - - [08/Mar/2004:13:00:27 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +64.242.88.10 - - [08/Mar/2004:13:00:40 -0800] "GET /ops/SP/play//oops/TWiki/HaroldGottschalk?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 11335 +market-mail.panduit.com - - [08/Mar/2004:13:01:27 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +market-mail.panduit.com - - [08/Mar/2004:13:01:29 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.0" 200 4154 +market-mail.panduit.com - - [08/Mar/2004:13:01:35 -0800] "GET /ops/SP/play//edit/Main/PostConf?topicparent=Main.PostfixCommands HTTP/1.0" 401 12816 +market-mail.panduit.com - - [08/Mar/2004:13:01:38 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.0" 200 130 +64.242.88.10 - - [08/Mar/2004:13:01:42 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=John%20*Talintyre[^A-Za-z] HTTP/1.1" 200 8066 +market-mail.panduit.com - - [08/Mar/2004:13:01:42 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.0" 200 3617 +market-mail.panduit.com - - [08/Mar/2004:13:01:55 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.0" 200 4213 +market-mail.panduit.com - - [08/Mar/2004:13:02:03 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.0" 200 4731 +market-mail.panduit.com - - [08/Mar/2004:13:02:16 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.0" 200 4564 +64.242.88.10 - - [08/Mar/2004:13:04:14 -0800] "GET /ops/SP/play//attach/Main/TWikiGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:07:16 -0800] "GET /ops/SP/play//view/Main/NicholasLee?rev=1.1 HTTP/1.1" 200 4456 +64.242.88.10 - - [08/Mar/2004:13:08:17 -0800] "GET /ops/SP/play//attach/TWiki/TWikiDocGraphics?filename=pencil.gif&revInfo=1 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:12:54 -0800] "GET /ops/SP/play//rdiff/TWiki/WebSiteTools?rev1=1.2&rev2=1.1 HTTP/1.1" 200 6640 +64.242.88.10 - - [08/Mar/2004:13:15:03 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.55 HTTP/1.1" 200 44652 +64.242.88.10 - - [08/Mar/2004:13:16:11 -0800] "GET /ops/SP/play//attach/Main/SpamAssassinAndPostFix HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:17:23 -0800] "GET /mailman/private/artsscience/ HTTP/1.1" 200 1552 +64.242.88.10 - - [08/Mar/2004:13:18:57 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^l HTTP/1.1" 200 2937 +64.242.88.10 - - [08/Mar/2004:13:24:49 -0800] "GET /ops/SP/play//rdiff/Main/RelayGateway?rev1=1.3&rev2=1.2 HTTP/1.1" 200 5181 +64.242.88.10 - - [08/Mar/2004:13:29:37 -0800] "GET /ops/SP/play//rdiff/Main/RelayGateway?rev1=1.2&rev2=1.1 HTTP/1.1" 200 6029 +64.242.88.10 - - [08/Mar/2004:13:31:16 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiReferences?rev1=1.2&rev2=1.1 HTTP/1.1" 200 10024 +64.242.88.10 - - [08/Mar/2004:13:32:35 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.9 HTTP/1.1" 200 7511 +64.242.88.10 - - [08/Mar/2004:13:35:02 -0800] "GET /ops/SP/play//edit/TWiki/WebSiteTools?t=1078731408 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:36:06 -0800] "GET /ops/SP/play//attach/TWiki/TWikiDocGraphics?filename=viewtopic.gif&revInfo=1 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:38:39 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit?rev=r1.1 HTTP/1.1" 200 3564 +64.242.88.10 - - [08/Mar/2004:13:45:46 -0800] "GET /ops/SP/play//edit/Main/Ignore_mx_lookup_error?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:48:06 -0800] "GET /ops/SP/play//oops/Main/DCCAndPostFix?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6602 +64.242.88.10 - - [08/Mar/2004:13:49:47 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.54 HTTP/1.1" 200 44644 +64.242.88.10 - - [08/Mar/2004:13:55:51 -0800] "GET /ops/SP/play//edit/Main/Allow_min_user?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:56:52 -0800] "GET /ops/SP/play//edit/TWiki/KevinKinnell?t=1078692967 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:57:52 -0800] "GET /pipermail/fcd/ HTTP/1.1" 200 468 +64.242.88.10 - - [08/Mar/2004:13:58:55 -0800] "GET /mailman/listinfo/mgt-157 HTTP/1.1" 200 6189 +64.242.88.10 - - [08/Mar/2004:14:00:08 -0800] "GET /mailman/admin/fcd HTTP/1.1" 200 2060 +64.242.88.10 - - [08/Mar/2004:14:01:36 -0800] "GET /mailman/listinfo/cnc_forestry HTTP/1.1" 200 6159 +64.242.88.10 - - [08/Mar/2004:14:07:26 -0800] "GET /ops/SP/play//edit/Main/Strict_8bitmime?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:11:28 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.19 HTTP/1.1" 200 13997 +64.242.88.10 - - [08/Mar/2004:14:12:49 -0800] "GET /ops/SP/play//view/TWiki/TWikiFAQ?rev=1.11 HTTP/1.1" 200 11950 +64.242.88.10 - - [08/Mar/2004:14:13:51 -0800] "GET /mailman/admin/gisgrad HTTP/1.1" 200 2093 +64.242.88.10 - - [08/Mar/2004:14:15:01 -0800] "GET /mailman/admin/jjec HTTP/1.1" 200 2088 +fw.aub.dk - - [08/Mar/2004:14:16:38 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +fw.aub.dk - - [08/Mar/2004:14:16:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:14:23:54 -0800] "GET /ops/SP/play//oops/TWiki/RyanFreebern?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 11263 +64.242.88.10 - - [08/Mar/2004:14:25:33 -0800] "GET /ops/SP/play//rdiff/TWiki/WebChangesAlert HTTP/1.1" 200 27035 +64.242.88.10 - - [08/Mar/2004:14:26:45 -0800] "GET /ops/SP/play//rdiff/Sandbox/WebTopicList HTTP/1.1" 200 4319 +64.242.88.10 - - [08/Mar/2004:14:27:46 -0800] "GET /ops/SP/play//edit/Main/Virtual_gid_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:28:46 -0800] "GET /ops/SP/play//view/TWiki/NewUserTemplate?skin=print HTTP/1.1" 200 2449 +64.242.88.10 - - [08/Mar/2004:14:33:56 -0800] "GET /mailman/admin HTTP/1.1" 200 6872 +64.242.88.10 - - [08/Mar/2004:14:40:18 -0800] "GET /mailman/admin/ncbnpfaculty HTTP/1.1" 200 2136 +64.242.88.10 - - [08/Mar/2004:14:41:22 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Topic%20*List[^A-Za-z] HTTP/1.1" 200 10700 +64.242.88.10 - - [08/Mar/2004:14:42:44 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=1.11 HTTP/1.1" 200 9419 +64.242.88.10 - - [08/Mar/2004:14:43:45 -0800] "GET /ops/SP/play//view/TWiki/MartinCleaver HTTP/1.1" 200 3634 +64.242.88.10 - - [08/Mar/2004:14:52:51 -0800] "GET /ops/SP/play//view/TWiki/WebIndex HTTP/1.1" 200 102154 +64.242.88.10 - - [08/Mar/2004:14:54:56 -0800] "GET /ops/SP/play//edit/Main/TokyoOffice?t=1078706364 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:57:19 -0800] "GET /ops/SP/play//rdiff/Main/SpamAssassinAndPostFix?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5794 +64.242.88.10 - - [08/Mar/2004:14:58:58 -0800] "GET /ops/SP/play//rdiff/TWiki/WhatIsWikiWiki HTTP/1.1" 200 9412 +64.242.88.10 - - [08/Mar/2004:15:00:07 -0800] "GET /ops/SP/play//rdiff/Main/WebChanges?rev1=1.2&rev2=1.1 HTTP/1.1" 200 114220 +64.242.88.10 - - [08/Mar/2004:15:01:12 -0800] "GET /ops/SP/play//rdiff/TWiki/EditDoesNotIncreaseTheRevision HTTP/1.1" 200 6310 +64.242.88.10 - - [08/Mar/2004:15:02:29 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicList HTTP/1.1" 200 14591 +64.242.88.10 - - [08/Mar/2004:15:03:49 -0800] "GET /antivirus.jsp HTTP/1.1" 200 3548 +64.242.88.10 - - [08/Mar/2004:15:07:41 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Harold%20*Gottschalk[^A-Za-z] HTTP/1.1" 200 4412 +ip-200-56-225-61-mty.marcatel.net.mx - - [08/Mar/2004:15:15:17 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [08/Mar/2004:15:16:14 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.37 HTTP/1.1" 200 28922 +64.242.88.10 - - [08/Mar/2004:15:17:18 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^f HTTP/1.1" 200 3438 +64.242.88.10 - - [08/Mar/2004:15:19:35 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +c-24-11-14-147.client.comcast.net - - [08/Mar/2004:16:54:47 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +c-24-11-14-147.client.comcast.net - - [08/Mar/2004:16:54:47 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +lj1036.passgo.com - - [08/Mar/2004:17:39:00 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1168.passgo.com - - [08/Mar/2004:17:39:01 -0800] "GET /ops/SP/play//oops/TWiki/TWikiVariables HTTP/1.0" 200 209 +calcite.rhyolite.com - - [08/Mar/2004:18:14:44 -0800] "GET /clients.jsp HTTP/1.1" 200 18767 +acbf6930.ipt.aol.com - - [08/Mar/2004:18:20:44 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +acbf6930.ipt.aol.com - - [08/Mar/2004:18:20:44 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +lj1018.passgo.com - - [08/Mar/2004:18:23:43 -0800] "GET /ops/SP/play//oops/Know/PublicSupported HTTP/1.0" 200 209 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:33 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:35 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:35 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:36 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +px7wh.vc.shawcable.net - - [08/Mar/2004:18:41:16 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:39 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:52 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:10:06 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.1" 200 4583 +lj1053.passgo.com - - [08/Mar/2004:19:24:42 -0800] "GET /ops/SP/play//oops/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 209 +64.246.94.152 - - [08/Mar/2004:20:09:57 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:18 -0800] "GET / HTTP/1.0" 200 3169 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:18 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:25 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3049 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2160 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2386 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3271 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1687 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2482 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1914 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1536 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2250 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1883 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1493 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:48 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:49 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:49 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:53 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:50:59 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.0" 200 4022 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:51:01 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 5672 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:51:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.0" 200 4062 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:52:01 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.0" 200 4062 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:04 -0800] "GET / HTTP/1.0" 200 3169 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:28 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3238 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3032 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2160 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2369 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1671 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2485 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1533 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1906 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2251 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1875 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1483 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:44 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:52 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:09 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:10 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:24 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.0" 200 4515 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:35 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +alille-251-1-2-197.w82-124.abo.wanadoo.fr - - [08/Mar/2004:22:30:01 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +a213-84-36-192.adsl.xs4all.nl - - [08/Mar/2004:23:42:55 -0800] "GET / HTTP/1.1" 200 3169 +195.246.13.119 - - [09/Mar/2004:01:48:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +195.246.13.119 - - [09/Mar/2004:01:48:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +195.246.13.119 - - [09/Mar/2004:01:48:28 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +195.246.13.119 - - [09/Mar/2004:01:49:53 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +195.246.13.119 - - [09/Mar/2004:01:49:57 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +195.246.13.119 - - [09/Mar/2004:01:50:35 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +195.246.13.119 - - [09/Mar/2004:01:50:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +195.246.13.119 - - [09/Mar/2004:01:51:17 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +195.246.13.119 - - [09/Mar/2004:01:51:41 -0800] "GET /ops/SP/play//edit/Main/RazorAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12851 +195.246.13.119 - - [09/Mar/2004:01:51:45 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +195.246.13.119 - - [09/Mar/2004:01:51:54 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +195.246.13.119 - - [09/Mar/2004:01:52:12 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:10 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3068 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2187 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3277 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2379 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1687 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2592 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1983 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1545 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2222 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1866 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1494 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +lj1052.passgo.com - - [09/Mar/2004:02:39:17 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1162.passgo.com - - [09/Mar/2004:02:39:18 -0800] "GET /ops/SP/play//view/Main/SanJoseOffice HTTP/1.0" 200 3884 +lj1162.passgo.com - - [09/Mar/2004:03:10:39 -0800] "GET /ops/SP/play//view/Main/SanJoseOffice HTTP/1.0" 200 3884 +mail.geovariances.fr - - [09/Mar/2004:05:01:53 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +mail.geovariances.fr - - [09/Mar/2004:05:01:53 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +mail.geovariances.fr - - [09/Mar/2004:05:02:11 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +mail.geovariances.fr - - [09/Mar/2004:05:02:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mail.geovariances.fr - - [09/Mar/2004:05:02:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:19 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +mail.geovariances.fr - - [09/Mar/2004:05:02:19 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:27 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +mail.geovariances.fr - - [09/Mar/2004:05:02:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:04:09 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +mail.geovariances.fr - - [09/Mar/2004:05:04:09 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:09:30 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +mail.geovariances.fr - - [09/Mar/2004:05:09:31 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:12:45 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:12:45 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /ops/SP/play//view/TWiki/WebHome HTTP/1.1" 200 15182 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot131x64.gif HTTP/1.1" 200 7218 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiDocGraphics/tip.gif HTTP/1.1" 200 123 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot88x31.gif HTTP/1.1" 200 3501 +mail.geovariances.fr - - [09/Mar/2004:05:14:13 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.1" 200 8632 +mail.geovariances.fr - - [09/Mar/2004:05:14:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +66-194-6-70.gen.twtelecom.net - - [09/Mar/2004:05:20:20 -0800] "GET / HTTP/1.1" 200 3169 +195.230.181.122 - - [09/Mar/2004:06:29:03 -0800] "GET /AmavisNew.jsp HTTP/1.0" 200 2300 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:33:21 -0800] "GET / HTTP/1.1" 200 3169 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:51 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:53 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3027 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:53 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2148 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:54 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3200 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:54 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2341 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:55 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1686 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:55 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2534 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:56 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1948 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:56 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1549 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:57 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2214 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:57 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1873 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:58 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1500 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:04 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6708 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8232 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:09 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8857 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:10 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7175 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:13 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9391 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:13 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6922 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6618 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5615 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:42 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:28 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:29 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:37:00 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:37:40 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:10 -0800] "GET / HTTP/1.1" 200 3169 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:10 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:59 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:28:05 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:28:12 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +207.195.59.160 - - [09/Mar/2004:08:08:35 -0800] "GET / HTTP/1.1" 200 3169 +207.195.59.160 - - [09/Mar/2004:08:08:37 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +207.195.59.160 - - [09/Mar/2004:08:08:38 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +207.195.59.160 - - [09/Mar/2004:08:08:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +207.195.59.160 - - [09/Mar/2004:08:08:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:08:57 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +207.195.59.160 - - [09/Mar/2004:08:09:39 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +207.195.59.160 - - [09/Mar/2004:08:09:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:09:58 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +207.195.59.160 - - [09/Mar/2004:08:09:58 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:10:04 -0800] "GET /ops/SP/play//edit/Main/PostConf?topicparent=Main.PostfixCommands HTTP/1.1" 401 12851 +207.195.59.160 - - [09/Mar/2004:08:10:06 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +207.195.59.160 - - [09/Mar/2004:08:10:12 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +207.195.59.160 - - [09/Mar/2004:08:10:12 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:10:20 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.1" 200 4583 +fw1.millardref.com - - [09/Mar/2004:08:17:27 -0800] "GET / HTTP/1.1" 200 3169 +207.195.59.160 - - [09/Mar/2004:08:17:34 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +fw1.millardref.com - - [09/Mar/2004:08:17:50 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +207.195.59.160 - - [09/Mar/2004:08:18:17 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +207.195.59.160 - - [09/Mar/2004:08:18:17 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +fw1.millardref.com - - [09/Mar/2004:08:18:19 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +fw1.millardref.com - - [09/Mar/2004:08:18:25 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +fw1.millardref.com - - [09/Mar/2004:08:18:26 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +fw1.millardref.com - - [09/Mar/2004:08:18:27 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +fw1.millardref.com - - [09/Mar/2004:08:18:27 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +207.195.59.160 - - [09/Mar/2004:08:18:50 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +207.195.59.160 - - [09/Mar/2004:08:19:04 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +lj1007.passgo.com - - [09/Mar/2004:09:55:44 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1125.passgo.com - - [09/Mar/2004:09:55:53 -0800] "GET /ops/SP/play//oops/TWiki/WebChangesAlert HTTP/1.0" 200 209 +80.58.35.111.proxycache.rima-tde.net - - [09/Mar/2004:10:08:07 -0800] "GET /RBL.jsp HTTP/1.0" 200 4114 +10.0.0.176 - - [09/Mar/2004:10:29:38 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [09/Mar/2004:10:29:40 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8830 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7255 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6703 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7127 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6856 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6618 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5615 +200.222.33.33 - - [09/Mar/2004:11:21:36 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:54 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +l07v-1-17.d1.club-internet.fr - - [09/Mar/2004:11:57:20 -0800] "GET / HTTP/1.1" 200 3169 +wwwcache.lanl.gov - - [09/Mar/2004:12:16:06 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:08 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:09 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:09 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:10 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +fw.kcm.org - - [09/Mar/2004:12:21:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +fw.kcm.org - - [09/Mar/2004:12:21:49 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1048.passgo.com - - [09/Mar/2004:12:52:21 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1031.passgo.com - - [09/Mar/2004:12:52:58 -0800] "GET /ops/SP/play//oops/TWiki/InterwikiPlugin HTTP/1.0" 200 209 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:14:53 -0800] "GET / HTTP/1.1" 200 3169 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:15 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:15 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:23 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:33 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:16:00 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +h194n2fls308o1033.telia.com - - [09/Mar/2004:13:49:05 -0800] "-" 408 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:02 -0800] "GET /mailman HTTP/1.1" 302 301 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:03 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:04 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:05 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:05 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:12 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:15 -0800] "GET / HTTP/1.1" 200 3169 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:23 -0800] "GET /mailman HTTP/1.1" 302 301 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:23 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:28 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:56:15 -0800] "GET / HTTP/1.1" 304 - +home.yeungs.net - - [09/Mar/2004:15:03:55 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +203.147.138.233 - - [09/Mar/2004:15:25:03 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +203.147.138.233 - - [09/Mar/2004:15:25:05 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +203.147.138.233 - - [09/Mar/2004:15:25:14 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3041 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1695 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2577 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3203 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1970 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2181 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1550 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2314 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1850 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2213 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1509 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:35 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:52 -0800] "GET / HTTP/1.1" 200 3169 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:52 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:57 -0800] "GET /rejected.jsp HTTP/1.1" 200 3998 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:51:10 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:51:24 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 2182 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:52:09 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 2182 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:52:15 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:40 -0800] "GET /mailman/admin/ppwc/logout HTTP/1.1" 200 2103 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:49 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:56 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1123.passgo.com - - [09/Mar/2004:16:23:55 -0800] "GET /ops/SP/play//oops/TWiki/RegularExp HTTP/1.0" 200 209 +206-15-133-153.dialup.ziplink.net - - [09/Mar/2004:16:27:48 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +lj1048.passgo.com - - [09/Mar/2004:17:10:26 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1061.passgo.com - - [09/Mar/2004:17:10:28 -0800] "GET /ops/SP/play//oops/TWiki/TablePlugin HTTP/1.0" 200 209 +korell2.cc.gatech.edu - - [09/Mar/2004:17:33:58 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:41 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:42 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:43:54 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:45:02 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.1" 200 8632 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:43 -0800] "GET /mailman/admin HTTP/1.1" 200 6872 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:11 -0800] "GET /mailman/admin/webct HTTP/1.1" 200 2080 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:24 -0800] "GET /mailman HTTP/1.1" 302 301 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:25 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:28 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:45 -0800] "GET /mailman/listinfo/cnc_notice HTTP/1.1" 200 6337 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:02:07 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +grandpa.mmlc.northwestern.edu - - [09/Mar/2004:18:06:27 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +grandpa.mmlc.northwestern.edu - - [09/Mar/2004:18:06:27 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:23:32 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:23:32 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:25:15 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:25:18 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +calcite.rhyolite.com - - [09/Mar/2004:20:34:55 -0800] "GET /clients.jsp HTTP/1.1" 200 18892 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:43 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:48 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +2-238.tnr.on.ca - - [09/Mar/2004:21:33:22 -0800] "GET / HTTP/1.1" 200 3169 +lj1048.passgo.com - - [09/Mar/2004:21:51:09 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1153.passgo.com - - [09/Mar/2004:21:51:16 -0800] "GET /ops/SP/play//oops/Main/ThanadonSomdee HTTP/1.0" 200 209 +mmscrm07-2.uah.goweb.net - - [09/Mar/2004:22:23:39 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1036.passgo.com - - [09/Mar/2004:22:31:21 -0800] "GET /ops/SP/play//oops/Know/TopicClassification HTTP/1.0" 200 209 +adsl-157-26-153.msy.bellsouth.net - - [09/Mar/2004:22:40:32 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +adsl-157-26-153.msy.bellsouth.net - - [09/Mar/2004:22:40:33 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1164.passgo.com - - [09/Mar/2004:22:44:31 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingRules HTTP/1.0" 200 209 +66-194-6-79.gen.twtelecom.net - - [09/Mar/2004:23:36:11 -0800] "GET / HTTP/1.1" 200 3169 +lj1231.passgo.com - - [10/Mar/2004:00:21:51 -0800] "GET /ops/SP/play//oops/Main/TWikiUsers HTTP/1.0" 200 209 +212.21.228.26 - - [10/Mar/2004:00:24:58 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /mailman/listinfo/cncce HTTP/1.1" 200 6208 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:45 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +pd9e761cf.dip.t-dialin.net - - [10/Mar/2004:02:07:27 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +lj1048.passgo.com - - [10/Mar/2004:02:31:33 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1160.passgo.com - - [10/Mar/2004:02:31:44 -0800] "GET /razor.jsp HTTP/1.0" 304 - +nb-bolz.cremona.polimi.it - - [10/Mar/2004:02:52:49 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +pc-030-040.eco.rug.nl - - [10/Mar/2004:02:55:00 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:40 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:50 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:53 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:07 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:20 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:33 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:45 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:48 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:56 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:14:40 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:14:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:15:28 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:15:33 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:49 -0800] "GET /mailman/listinfo/fnac HTTP/1.0" 200 5969 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:51 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:51 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:52 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +66-194-6-70.gen.twtelecom.net - - [10/Mar/2004:05:21:38 -0800] "GET / HTTP/1.1" 200 3169 +pd9e50809.dip.t-dialin.net - - [10/Mar/2004:07:36:56 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +10.0.0.176 - - [10/Mar/2004:08:36:28 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:08:36:30 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7783 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8845 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6274 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7071 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9328 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6976 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +10.0.0.176 - - [10/Mar/2004:08:36:57 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3020 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2287 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2332 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1673 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2583 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1976 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3364 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2220 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1627 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1837 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1528 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:51:31 -0800] "GET / HTTP/1.1" 304 - +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:13 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:16 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:25 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:52 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:12 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:19 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:33 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:54:15 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:54:37 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:03 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:17 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:40 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:49 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:56:10 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:56:13 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +lj1048.passgo.com - - [10/Mar/2004:09:05:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1145.passgo.com - - [10/Mar/2004:09:05:59 -0800] "GET /ops/SP/play//oops/TWiki/MoveTopic HTTP/1.0" 200 209 +cacher2-ext.wise.edt.ericsson.se - - [10/Mar/2004:09:41:56 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +adsl-64-173-42-65.dsl.snfc21.pacbell.net - - [10/Mar/2004:10:37:53 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +ic8234.upco.es - - [10/Mar/2004:10:38:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ic8234.upco.es - - [10/Mar/2004:10:38:05 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ic8234.upco.es - - [10/Mar/2004:10:38:23 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ic8234.upco.es - - [10/Mar/2004:10:38:27 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ns.mou.cz - - [10/Mar/2004:10:59:06 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:12:51 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1117.passgo.com - - [10/Mar/2004:11:13:21 -0800] "GET /ops/SP/play//view/Know/WebStatistics HTTP/1.0" 200 6394 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:18:59 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:32 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:52 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:43:26 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:13 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:27 -0800] "GET /mailman/admin/ppwc/members?letter=n HTTP/1.1" 200 15131 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:44 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24507 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:22 -0800] "GET /mailman/admin/ppwc/passwords HTTP/1.1" 200 6217 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:51 -0800] "GET /mailman/admin/ppwc/gateway HTTP/1.1" 200 0 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:51 -0800] "GET /mailman/admin/ppwc/gateway HTTP/1.1" 200 8692 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:46:42 -0800] "GET /mailman/admin/ppwc/general HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:47:37 -0800] "GET /mailman/admin/ppwc/?VARHELP=general/owner HTTP/1.1" 200 3505 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:50:28 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:50:35 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:52:14 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:52:42 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +10.0.0.176 - - [10/Mar/2004:12:02:38 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:43 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [10/Mar/2004:12:02:43 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:45 -0800] "GET /mailman HTTP/1.1" 302 301 +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:59 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:03 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24507 +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /mailman/options/ppwc/ppwctwentynine--at--shaw.com HTTP/1.1" 200 14296 +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "POST /mailman/options/ppwc/ppwctwentynine@shaw.com HTTP/1.1" 200 14579 +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24525 +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "POST /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 23169 +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /mailman/admin/ppwc/general HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /mailman/admin/ppwc/members/add HTTP/1.1" 200 6681 +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "POST /mailman/admin/ppwc/members/add HTTP/1.1" 200 6762 +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:08 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /mailman/admin/ppwc/members/list HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:13 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24585 +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "POST /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24577 +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /mailman/admin/ppwc/logout HTTP/1.1" 200 2103 +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:02 -0800] "GET / HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:05 -0800] "GET /mailman HTTP/1.1" 302 301 +142.27.64.35 - - [10/Mar/2004:12:19:05 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:08 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1216.passgo.com - - [10/Mar/2004:12:22:32 -0800] "GET /ops/SP/play//oops/TWiki/WikiTopic HTTP/1.0" 200 209 +10.0.0.176 - - [10/Mar/2004:12:25:25 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:25:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8663 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6392 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7133 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 9449 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6895 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9403 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +c-411472d5.04-138-73746f22.cust.bredbandsbolaget.se - - [10/Mar/2004:13:13:23 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +3_343_lt_someone - - [10/Mar/2004:13:15:44 -0800] "GET / HTTP/1.1" 200 3169 +3_343_lt_someone - - [10/Mar/2004:13:15:53 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7142 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5882 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6485 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8673 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6895 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9403 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +watchguard.cgmatane.qc.ca - - [10/Mar/2004:13:41:37 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +watchguard.cgmatane.qc.ca - - [10/Mar/2004:13:42:23 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:20:51 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:21:36 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:22:13 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +10.0.0.176 - - [10/Mar/2004:15:06:20 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5871 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6484 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7014 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8821 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9306 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6937 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +lj1024.passgo.com - - [10/Mar/2004:15:10:10 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1028.passgo.com - - [10/Mar/2004:15:10:13 -0800] "GET /ops/SP/play//oops/Main/T HTTP/1.0" 200 209 +lj1145.passgo.com - - [10/Mar/2004:15:49:55 -0800] "GET /ops/SP/play//oops/TWiki/NicholasLee HTTP/1.0" 200 209 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:29:30 -0800] "GET /pipermail/cnc_notice/2004-February.txt HTTP/1.1" 200 6712 +64.246.94.141 - - [10/Mar/2004:16:31:19 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +pntn02m05-129.bctel.ca - - [10/Mar/2004:16:33:04 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +calcite.rhyolite.com - - [10/Mar/2004:16:47:44 -0800] "GET /clients.jsp HTTP/1.1" 200 18971 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:52:44 -0800] "GET /pipermail/cnc_notice/2003-December.txt HTTP/1.1" 200 6570 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:54:36 -0800] "GET /pipermail/cnc_notice/2003-December/000002.jsp HTTP/1.1" 200 7074 +lj1117.passgo.com - - [10/Mar/2004:18:13:54 -0800] "GET /ops/SP/play//view/Main/VishaalGolam HTTP/1.0" 200 4577 +lj1073.passgo.com - - [10/Mar/2004:18:17:24 -0800] "GET /ops/SP/play//oops/TWiki/Wik HTTP/1.0" 200 209 +lj1024.passgo.com - - [10/Mar/2004:19:55:54 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1000.passgo.com - - [10/Mar/2004:19:55:56 -0800] "GET /ops/SP/play//view/Know/WebHome HTTP/1.0" 200 7529 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:22:41 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:22:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:11 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:41 -0800] "GET /ops/SP/play//view/Main/TWikiGroups HTTP/1.1" 200 4816 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:52 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.1" 200 4175 +lj1145.passgo.com - - [10/Mar/2004:21:56:34 -0800] "GET /ops/SP/play//oops/Main/WebStatistics HTTP/1.0" 200 209 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:58:46 -0800] "GET / HTTP/1.1" 200 3169 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:58:46 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:16 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5664 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6403 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8837 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6980 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6970 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:03 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:04 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3093 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2255 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3419 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2381 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1658 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2657 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2008 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1598 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2223 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1924 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1550 +lj1220.passgo.com - - [10/Mar/2004:22:16:58 -0800] "GET /ops/SP/play//oops/TWiki/SvenDowideit HTTP/1.0" 200 209 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5805 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6445 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8809 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6882 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6970 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +lj1024.passgo.com - - [11/Mar/2004:00:07:57 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1117.passgo.com - - [11/Mar/2004:00:07:58 -0800] "GET /ops/SP/play//oops/Know/WebStatistics HTTP/1.0" 200 209 +lj1120.passgo.com - - [11/Mar/2004:00:42:01 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +ns3.vonroll.ch - - [11/Mar/2004:00:43:57 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +ns3.vonroll.ch - - [11/Mar/2004:00:43:59 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +ns3.vonroll.ch - - [11/Mar/2004:00:44:08 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +lj1145.passgo.com - - [11/Mar/2004:01:39:53 -0800] "GET /ops/SP/play//view/Main/SimonMudd HTTP/1.0" 200 4612 +1513.cps.virtua.com.br - - [11/Mar/2004:02:27:39 -0800] "GET /pipermail/cipg/2003-november.txt HTTP/1.1" 404 309 +194.151.73.43 - - [11/Mar/2004:03:35:49 -0800] "GET /ie.htm HTTP/1.0" 200 3518 +194.151.73.43 - - [11/Mar/2004:03:35:57 -0800] "GET /images/image004.jpg HTTP/1.0" 200 10936 +194.151.73.43 - - [11/Mar/2004:03:35:57 -0800] "GET /images/image005.jpg HTTP/1.0" 200 21125 +194.151.73.43 - - [11/Mar/2004:03:35:58 -0800] "GET /images/msgops.JPG HTTP/1.0" 200 7939 +spica.ukc.ac.uk - - [11/Mar/2004:03:50:09 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +spica.ukc.ac.uk - - [11/Mar/2004:03:50:09 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ogw.netinfo.nl - - [11/Mar/2004:06:11:19 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ogw.netinfo.nl - - [11/Mar/2004:06:11:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ogw.netinfo.nl - - [11/Mar/2004:06:11:38 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ogw.netinfo.nl - - [11/Mar/2004:06:11:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:11:46 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +ogw.netinfo.nl - - [11/Mar/2004:06:11:47 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:12:41 -0800] "GET /ops/SP/play//view/Main/PostQueue HTTP/1.1" 200 4280 +ogw.netinfo.nl - - [11/Mar/2004:06:12:43 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:13:07 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ogw.netinfo.nl - - [11/Mar/2004:06:13:08 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:14:03 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +ogw.netinfo.nl - - [11/Mar/2004:06:14:04 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:16:40 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +ogw.netinfo.nl - - [11/Mar/2004:06:17:06 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +ogw.netinfo.nl - - [11/Mar/2004:06:17:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +lj1024.passgo.com - - [11/Mar/2004:06:27:31 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1153.passgo.com - - [11/Mar/2004:06:27:36 -0800] "GET /ops/SP/play//oops/Sandbox/WebStatistics HTTP/1.0" 200 209 +208-186-146-13.nrp3.brv.mn.frontiernet.net - - [11/Mar/2004:06:48:05 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +208-186-146-13.nrp3.brv.mn.frontiernet.net - - [11/Mar/2004:06:48:05 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ladybug.cns.vt.edu - - [11/Mar/2004:07:15:10 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ladybug.cns.vt.edu - - [11/Mar/2004:07:15:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ladybug.cns.vt.edu - - [11/Mar/2004:07:19:57 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ladybug.cns.vt.edu - - [11/Mar/2004:07:20:05 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ladybug.cns.vt.edu - - [11/Mar/2004:07:20:09 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +osdlab.eic.nctu.edu.tw - - [11/Mar/2004:07:39:30 -0800] "GET /M83A HTTP/1.0" 404 269 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /mailman/listinfo/ppwc HTTP/1.0" 200 6252 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/mailman.jpg HTTP/1.0" 200 2022 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/PythonPowered.png HTTP/1.0" 200 945 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.0" 200 3049 +ogw.netinfo.nl - - [11/Mar/2004:08:45:41 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ogw.netinfo.nl - - [11/Mar/2004:08:45:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:08:45:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +ogw.netinfo.nl - - [11/Mar/2004:08:45:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:55:40 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:58:16 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:58:27 -0800] "GET /razor.jsp HTTP/1.1" 304 - +64-93-34-186.client.dsl.net - - [11/Mar/2004:11:12:40 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +d207-6-50-215.bchsia.telus.net - - [11/Mar/2004:11:33:35 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +10.0.0.176 - - [11/Mar/2004:11:49:51 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:11:49:53 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5622 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6357 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8728 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6791 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9561 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7087 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6427 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5598 +1-729.tnr.on.ca - - [11/Mar/2004:11:54:59 -0800] "GET / HTTP/1.1" 200 3169 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /mailman HTTP/1.1" 302 301 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:23 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:23 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:26 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:50 -0800] "GET /mailman/admindb/ppwc HTTP/1.1" 200 2072 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:50 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:51 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:51 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:29:03 -0800] "POST /mailman/admindb/ppwc HTTP/1.1" 200 3407 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:29:27 -0800] "POST /mailman/admindb/ppwc HTTP/1.1" 200 1134 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:56:35 -0800] "GET /robots.txt HTTP/1.0" 200 68 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:56:58 -0800] "GET /ops/SP/play//view/TWiki/WebStatistics HTTP/1.0" 200 8193 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:18 -0800] "GET /ops/SP/play//view/Main/TWikiGuest HTTP/1.0" 200 4430 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:24 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=1.25 HTTP/1.0" 200 9812 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:45 -0800] "GET /ops/SP/play//view/Main/WebNotify?rev=r1.6 HTTP/1.0" 200 4300 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:03 -0800] "GET /ops/SP/play//rdiff/TWiki/ManagingTopics?rev1=1.16&rev2=1.15 HTTP/1.0" 200 7912 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:37 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.8 HTTP/1.0" 200 8986 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:50 -0800] "GET /ops/SP/play//edit/Main/Max_idle?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:07 -0800] "GET /ops/SP/play//view/Main/WebChanges HTTP/1.0" 200 40430 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:33 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Appendix%20*File%20*System%5B%5EA-Za-z%5D HTTP/1.0" 200 5794 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:52 -0800] "GET /ops/SP/play//oops/TWiki/AppendixFileSystem?template=oopsmore¶m1=1.12¶m2=1.12 HTTP/1.0" 200 11355 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:12 -0800] "GET /ops/SP/play//view/TWiki/WebTopicViewTemplate HTTP/1.0" 200 5420 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:47 -0800] "GET /ops/SP/play//rdiff/Main/WebHome HTTP/1.0" 200 69197 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:57 -0800] "GET /ops/SP/play//view/TWiki/WebPreferences?rev=r1.9 HTTP/1.0" 200 7875 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:21 -0800] "GET /ops/SP/play//rdiff/Main/ConfigurationVariables?rev1=1.2&rev2=1.1 HTTP/1.0" 200 59549 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:37 -0800] "GET /ops/SP/play//view/Main/AndreaSterbini HTTP/1.0" 200 3891 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:58 -0800] "GET /ops/SP/play//rdiff/Main/AndreaSterbini HTTP/1.0" 200 5567 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:02:22 -0800] "GET /ops/SP/play//rdiff/TWiki/WebNotify HTTP/1.0" 200 11733 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:02:42 -0800] "GET /ops/SP/play//rdiff/Main/WebHome?rev1=1.28&rev2=1.27 HTTP/1.0" 200 3577 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:06 -0800] "GET /ops/SP/play//view/Main/WebHome?skin=print HTTP/1.0" 200 8347 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:23 -0800] "GET /ops/SP/play//search/Main/SearchResult?search=%5C.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on HTTP/1.0" 200 43816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:48 -0800] "GET /ops/SP/play//view/TWiki/FormattedSearch HTTP/1.0" 200 20420 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:09 -0800] "GET /ops/SP/play//oops/Main/WebHome?template=oopsmore¶m1=1.28¶m2=1.8 HTTP/1.0" 200 7410 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:30 -0800] "GET /ops/SP/play//edit/TWiki/TextFormattingFAQ?t=1075982736 HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:52 -0800] "GET /ops/SP/play//edit/Main/Allow_untrusted_routing?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:13 -0800] "GET /ops/SP/play//edit/Main/Smtp_data_init_timeout?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:33 -0800] "GET /ops/SP/play//view/TWiki/AppendixFileSystem?rev=1.10 HTTP/1.0" 200 34910 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:54 -0800] "GET /ops/SP/play//view/Main/AndreaSterbini?rev=r1.1 HTTP/1.0" 200 3732 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:06:17 -0800] "GET /ops/SP/play//view/Know/WebNotify HTTP/1.0" 200 4472 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:06:39 -0800] "GET /ops/SP/play//rdiff/Main/PeterThoeny HTTP/1.0" 200 18859 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:02 -0800] "GET /ops/SP/play//view/Main/WebHome?skin=print&rev=1.25 HTTP/1.0" 200 7762 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:20 -0800] "GET /ops/SP/play//edit/Main/Relayhost?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:40 -0800] "GET /ops/SP/play//edit/Main/Unknown_virtual_mailbox_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:08:03 -0800] "GET /ops/SP/play//view/TWiki/WebPreferences HTTP/1.0" 200 9109 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:08:44 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.0" 200 4377 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:04 -0800] "GET /ops/SP/play//view/Know/WebHome HTTP/1.0" 200 7529 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:21 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.0" 200 4449 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:24 -0800] "GET /ops/SP/play//oops/Main/WebHome?template=oopsmore¶m1=1.28¶m2=1.28 HTTP/1.0" 200 7411 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:52 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:11 -0800] "GET /ops/SP/play//view/TWiki/WebHome HTTP/1.0" 200 15147 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:27 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:52 -0800] "GET /ops/SP/play//view/Main/WebTopicList HTTP/1.0" 200 7461 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:11:09 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=1.27 HTTP/1.0" 200 10313 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:11:41 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.0" 200 58169 +4.37.97.186 - - [11/Mar/2004:13:12:54 -0800] "GET /pipermail/webber/2004-January/000000.jsp HTTP/1.1" 200 2446 +12.22.207.235 - - [11/Mar/2004:13:18:15 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +archserve.id.ucsb.edu - - [11/Mar/2004:13:22:32 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +archserve.id.ucsb.edu - - [11/Mar/2004:13:22:32 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:03 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/image005.jpg HTTP/1.1" 304 - +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/image004.jpg HTTP/1.1" 304 - +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/msgops.JPG HTTP/1.1" 304 - +lj1024.passgo.com - - [11/Mar/2004:13:27:05 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1212.passgo.com - - [11/Mar/2004:13:27:05 -0800] "GET / HTTP/1.0" 200 3169 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:44 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:47 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:47 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:50 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +favr.go.de - - [11/Mar/2004:14:22:08 -0800] "GET /robots.txt HTTP/1.0" 200 68 +favr.go.de - - [11/Mar/2004:14:22:09 -0800] "GET /ops/SP/play//view/Main/WebSearch HTTP/1.0" 200 9263 +favr.go.de - - [11/Mar/2004:14:26:26 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.0" 200 8605 +favr.go.de - - [11/Mar/2004:14:28:53 -0800] "GET /ops/SP/play//view/Sandbox/WebChanges HTTP/1.0" 200 9622 +favr.go.de - - [11/Mar/2004:14:29:44 -0800] "GET /ops/SP/play//view/Sandbox/WebPreferences HTTP/1.0" 200 8380 +favr.go.de - - [11/Mar/2004:14:29:52 -0800] "GET /ops/SP/play//view/Main/WebStatistics HTTP/1.0" 200 8331 +favr.go.de - - [11/Mar/2004:14:30:51 -0800] "GET /ops/SP/play//view/Main/WebTopicList HTTP/1.0" 200 7461 +favr.go.de - - [11/Mar/2004:14:31:43 -0800] "GET /ops/SP/play//view/Main/WebPreferences HTTP/1.0" 200 8793 +lj1008.passgo.com - - [11/Mar/2004:14:31:48 -0800] "GET /ops/SP/play//oops/TWiki/WikiWikiClones HTTP/1.0" 200 209 +favr.go.de - - [11/Mar/2004:14:33:01 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.0" 200 4449 +64-249-27-114.client.dsl.net - - [11/Mar/2004:14:53:12 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +pd9eb1396.dip.t-dialin.net - - [11/Mar/2004:15:17:08 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +10.0.0.176 - - [11/Mar/2004:15:51:49 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:07 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [11/Mar/2004:15:52:07 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:12 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [11/Mar/2004:15:52:12 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:18 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6329 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8771 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6340 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6846 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9523 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6996 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6427 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5598 +10.0.0.176 - - [11/Mar/2004:15:52:37 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3241 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3327 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2434 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1676 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2029 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1604 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2640 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2251 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1899 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1556 +10.0.0.176 - - [11/Mar/2004:15:52:39 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2243 +lj1105.passgo.com - - [11/Mar/2004:16:02:37 -0800] "GET /ops/SP/play//oops/TWiki/1000 HTTP/1.0" 200 209 +wc01.piwa.pow.fr - - [11/Mar/2004:16:12:59 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +wc01.piwa.pow.fr - - [11/Mar/2004:16:13:02 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +wc01.piwa.pow.fr - - [11/Mar/2004:16:13:02 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +wc03.mtnk.rnc.net.cable.rogers.com - - [11/Mar/2004:16:13:03 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +206-15-133-154.dialup.ziplink.net - - [11/Mar/2004:16:33:23 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +lj1024.passgo.com - - [11/Mar/2004:18:11:39 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1008.passgo.com - - [11/Mar/2004:18:11:40 -0800] "GET /ops/SP/play//oops/Main/Smtpd_recipient_limit HTTP/1.0" 200 209 +ipcorp-c8b07af1.terraempresas.com.br - - [11/Mar/2004:18:31:35 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +66-194-6-79.gen.twtelecom.net - - [11/Mar/2004:18:57:52 -0800] "GET / HTTP/1.1" 200 3169 +lj1223.passgo.com - - [11/Mar/2004:20:12:24 -0800] "GET /ops/SP/play//view/Main/MikeMannix HTTP/1.0" 200 3674 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:32 -0800] "GET /ststats/ HTTP/1.1" 200 2955 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3091 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2230 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2388 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3440 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1659 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2662 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2064 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1624 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2243 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1879 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1575 +lj1073.passgo.com - - [11/Mar/2004:20:59:05 -0800] "GET /ops/SP/play//oops/TWiki/TWikiPlannedFeatures HTTP/1.0" 200 209 +mmscrm07-2.uah.goweb.net - - [11/Mar/2004:23:56:31 -0800] "GET /robots.txt HTTP/1.0" 200 68 +66-194-6-71.gen.twtelecom.net - - [12/Mar/2004:01:30:44 -0800] "GET / HTTP/1.1" 200 3169 +lj1024.passgo.com - - [12/Mar/2004:02:27:29 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1123.passgo.com - - [12/Mar/2004:02:27:32 -0800] "GET /ops/SP/play//view/Sandbox/WebIndex HTTP/1.0" 200 8667 +195.11.231.210 - - [12/Mar/2004:03:32:56 -0800] "GET /mailman/listinfo/webber HTTP/1.0" 200 6032 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:20 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:56 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +200.100.10.5 - - [12/Mar/2004:04:59:21 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +200.100.10.5 - - [12/Mar/2004:04:59:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1115.passgo.com - - [12/Mar/2004:05:03:19 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.0" 200 4156 +lj1008.passgo.com - - [12/Mar/2004:05:19:31 -0800] "GET /ops/SP/play//oops/TWiki/Mana HTTP/1.0" 200 209 +71.134.70.5 - - [12/Mar/2004:05:25:20 -0800] "GET /mailman/listinfo/cncce HTTP/1.1" 200 6208 +71.134.70.5 - - [12/Mar/2004:05:25:24 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +71.134.70.5 - - [12/Mar/2004:05:25:24 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +71.134.70.5 - - [12/Mar/2004:05:25:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +200.100.10.5 - - [12/Mar/2004:05:44:35 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +200.100.10.5 - - [12/Mar/2004:05:44:35 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +200.100.10.5 - - [12/Mar/2004:05:44:50 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.1" 200 4396 +200.100.10.5 - - [12/Mar/2004:05:44:51 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +200.100.10.5 - - [12/Mar/2004:05:51:36 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +vlp181.vlp.fi - - [12/Mar/2004:08:33:32 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +lj1024.passgo.com - - [12/Mar/2004:09:12:01 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1223.passgo.com - - [12/Mar/2004:09:12:02 -0800] "GET /ops/SP/play//oops/Main/Mi HTTP/1.0" 200 209 +10.0.0.176 - - [12/Mar/2004:11:01:26 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:11:01:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6405 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6413 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6952 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8715 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7001 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9514 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6644 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5554 +fassys.org - - [12/Mar/2004:11:16:36 -0800] "GET /ststats/ HTTP/1.0" 200 2955 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 2925 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2347 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3431 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2380 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1658 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2685 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 2082 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1637 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2211 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1853 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1572 +67.131.107.5 - - [12/Mar/2004:11:39:14 -0800] "GET / HTTP/1.1" 200 3169 +67.131.107.5 - - [12/Mar/2004:11:39:25 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +67.131.107.5 - - [12/Mar/2004:11:39:31 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +10.0.0.176 - - [12/Mar/2004:12:23:11 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:12:23:17 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6324 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8964 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6225 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7001 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9514 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6949 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6644 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5554 +10.0.0.176 - - [12/Mar/2004:12:23:40 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 2964 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2341 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2346 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3438 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1670 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2651 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2023 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1636 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2262 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1906 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1582 +216.139.185.45 - - [12/Mar/2004:13:04:01 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +pd95f99f2.dip.t-dialin.net - - [12/Mar/2004:13:18:57 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +d97082.upc-d.chello.nl - - [12/Mar/2004:13:25:45 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 diff --git a/rxjava/src/test/resources/expected_clob b/rxjava/src/test/resources/expected_clob new file mode 100644 index 0000000000..d7bc560556 --- /dev/null +++ b/rxjava/src/test/resources/expected_clob @@ -0,0 +1,1546 @@ +64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /ops/SP/play//edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /ops/SP/play//rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523 +64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291 +64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /ops/SP/play//view/TWiki/WikiSyntax HTTP/1.1" 200 7352 +64.242.88.10 - - [07/Mar/2004:16:20:55 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +64.242.88.10 - - [07/Mar/2004:16:23:12 -0800] "GET /ops/SP/play//oops/TWiki/AppendixFileSystem?template=oopsmore¶m1=1.12¶m2=1.12 HTTP/1.1" 200 11382 +64.242.88.10 - - [07/Mar/2004:16:24:16 -0800] "GET /ops/SP/play//view/Main/PeterThoeny HTTP/1.1" 200 4924 +64.242.88.10 - - [07/Mar/2004:16:29:16 -0800] "GET /ops/SP/play//edit/Main/Header_checks?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:30:29 -0800] "GET /ops/SP/play//attach/Main/OfficeLocations HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:31:48 -0800] "GET /ops/SP/play//view/TWiki/WebTopicEditTemplate HTTP/1.1" 200 3732 +64.242.88.10 - - [07/Mar/2004:16:32:50 -0800] "GET /ops/SP/play//view/Main/WebChanges HTTP/1.1" 200 40520 +64.242.88.10 - - [07/Mar/2004:16:33:53 -0800] "GET /ops/SP/play//edit/Main/Smtpd_etrn_restrictions?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:35:19 -0800] "GET /mailman/listinfo/business HTTP/1.1" 200 6379 +64.242.88.10 - - [07/Mar/2004:16:36:22 -0800] "GET /ops/SP/play//rdiff/Main/WebIndex?rev1=1.2&rev2=1.1 HTTP/1.1" 200 46373 +64.242.88.10 - - [07/Mar/2004:16:37:27 -0800] "GET /ops/SP/play//view/TWiki/DontNotify HTTP/1.1" 200 4140 +64.242.88.10 - - [07/Mar/2004:16:39:24 -0800] "GET /ops/SP/play//view/Main/TokyoOffice HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:16:43:54 -0800] "GET /ops/SP/play//view/Main/MikeMannix HTTP/1.1" 200 3686 +64.242.88.10 - - [07/Mar/2004:16:45:56 -0800] "GET /ops/SP/play//attach/Main/PostfixCommands HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:16:47:12 -0800] "GET /robots.txt HTTP/1.1" 200 68 +64.242.88.10 - - [07/Mar/2004:16:47:46 -0800] "GET /ops/SP/play//rdiff/Know/ReadmeFirst?rev1=1.5&rev2=1.4 HTTP/1.1" 200 5724 +64.242.88.10 - - [07/Mar/2004:16:49:04 -0800] "GET /ops/SP/play//view/Main/TWikiGroups?rev=1.2 HTTP/1.1" 200 5162 +64.242.88.10 - - [07/Mar/2004:16:50:54 -0800] "GET /ops/SP/play//rdiff/Main/ConfigurationVariables HTTP/1.1" 200 59679 +64.242.88.10 - - [07/Mar/2004:16:52:35 -0800] "GET /ops/SP/play//edit/Main/Flush_service_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:16:53:46 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiRegistration HTTP/1.1" 200 34395 +64.242.88.10 - - [07/Mar/2004:16:54:55 -0800] "GET /ops/SP/play//rdiff/Main/NicholasLee HTTP/1.1" 200 7235 +64.242.88.10 - - [07/Mar/2004:16:56:39 -0800] "GET /ops/SP/play//view/Sandbox/WebHome?rev=1.6 HTTP/1.1" 200 8545 +64.242.88.10 - - [07/Mar/2004:16:58:54 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +lordgun.org - - [07/Mar/2004:17:01:53 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [07/Mar/2004:17:09:01 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Joris%20*Benschop[^A-Za-z] HTTP/1.1" 200 4284 +64.242.88.10 - - [07/Mar/2004:17:10:20 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingRules?template=oopsmore¶m1=1.37¶m2=1.37 HTTP/1.1" 200 11400 +64.242.88.10 - - [07/Mar/2004:17:13:50 -0800] "GET /ops/SP/play//edit/TWiki/DefaultPlugin?t=1078688936 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:16:00 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^g HTTP/1.1" 200 3675 +64.242.88.10 - - [07/Mar/2004:17:17:27 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^d HTTP/1.1" 200 5773 +lj1036.passgo.com - - [07/Mar/2004:17:18:36 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1090.passgo.com - - [07/Mar/2004:17:18:41 -0800] "GET /ops/SP/play//view/Main/LondonOffice HTTP/1.0" 200 3860 +64.242.88.10 - - [07/Mar/2004:17:21:44 -0800] "GET /ops/SP/play//attach/TWiki/TablePlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:22:49 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?rev=1.22 HTTP/1.1" 200 9310 +64.242.88.10 - - [07/Mar/2004:17:23:54 -0800] "GET /ops/SP/play//statistics/Main HTTP/1.1" 200 808 +64.242.88.10 - - [07/Mar/2004:17:26:30 -0800] "GET /ops/SP/play//view/TWiki/WikiCulture HTTP/1.1" 200 5935 +64.242.88.10 - - [07/Mar/2004:17:27:37 -0800] "GET /ops/SP/play//edit/Main/WebSearch?t=1078669682 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:28:45 -0800] "GET /ops/SP/play//oops/TWiki/ResetPassword?template=oopsmore¶m1=1.4¶m2=1.4 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:17:29:59 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?skin=print HTTP/1.1" 200 8806 +64.242.88.10 - - [07/Mar/2004:17:31:39 -0800] "GET /ops/SP/play//edit/Main/UvscanAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:17:35:35 -0800] "GET /ops/SP/play//view/TWiki/KlausWriessnegger HTTP/1.1" 200 3848 +64.242.88.10 - - [07/Mar/2004:17:39:39 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +64.242.88.10 - - [07/Mar/2004:17:42:15 -0800] "GET /ops/SP/play//oops/TWiki/RichardDonkin?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:17:46:17 -0800] "GET /ops/SP/play//rdiff/TWiki/AlWilliams?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4485 +64.242.88.10 - - [07/Mar/2004:17:47:43 -0800] "GET /ops/SP/play//rdiff/TWiki/AlWilliams?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5234 +64.242.88.10 - - [07/Mar/2004:17:50:44 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit HTTP/1.1" 200 3616 +64.242.88.10 - - [07/Mar/2004:17:53:45 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Office%20*Locations[^A-Za-z] HTTP/1.1" 200 7771 +64.242.88.10 - - [07/Mar/2004:17:56:54 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.31 HTTP/1.1" 200 23338 +64.242.88.10 - - [07/Mar/2004:17:58:00 -0800] "GET /ops/SP/play//edit/Main/KevinWGagel?t=1078670331 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:00:09 -0800] "GET /ops/SP/play//edit/Main/Virtual_mailbox_lock?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:02:10 -0800] "GET /ops/SP/play//view/Main/WebPreferences HTTP/1.1" 200 8820 +64.242.88.10 - - [07/Mar/2004:18:04:05 -0800] "GET /ops/SP/play//view/TWiki/WikiWord?rev=1.3 HTTP/1.1" 200 6816 +lj1125.passgo.com - - [07/Mar/2004:18:06:14 -0800] "GET /ops/SP/play//oops/Sandbox/WebChanges HTTP/1.0" 200 209 +64.242.88.10 - - [07/Mar/2004:18:09:00 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGuest HTTP/1.1" 200 11314 +64.242.88.10 - - [07/Mar/2004:18:10:09 -0800] "GET /ops/SP/play//edit/TWiki/TWikiVariables?t=1078684115 HTTP/1.1" 401 12846 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:10:18 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:10:20 -0800] "GET /pipermail/cncce/2004-January/000002.jsp HTTP/1.1" 200 3810 +64.242.88.10 - - [07/Mar/2004:18:17:26 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiWord?rev1=1.4&rev2=1.3 HTTP/1.1" 200 6948 +64.242.88.10 - - [07/Mar/2004:18:19:01 -0800] "GET /ops/SP/play//edit/Main/TWikiPreferences?topicparent=Main.WebHome HTTP/1.1" 401 12846 +d207-6-9-183.bchsia.telus.net - - [07/Mar/2004:18:19:16 -0800] "GET /pipermail/cncce/2004-January.txt HTTP/1.1" 200 3376 +64.242.88.10 - - [07/Mar/2004:18:22:52 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Statistics[^A-Za-z] HTTP/1.1" 200 3584 +64.242.88.10 - - [07/Mar/2004:18:26:32 -0800] "GET /ops/SP/play//rdiff/TWiki/PeterFokkinga?rev1=1.4&rev2=1.3 HTTP/1.1" 200 4548 +64.242.88.10 - - [07/Mar/2004:18:32:39 -0800] "GET /mailman/listinfo/dentalstudies HTTP/1.1" 200 6345 +64.242.88.10 - - [07/Mar/2004:18:34:42 -0800] "GET /ops/SP/play//view/Main/TWikiGuest HTTP/1.1" 200 4449 +64.242.88.10 - - [07/Mar/2004:18:42:29 -0800] "GET /ops/SP/play//attach/Main/TWikiGroups HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:46:00 -0800] "GET /ops/SP/play//rdiff/TWiki/TextFormattingRules?rev1=1.36&rev2=1.35 HTTP/1.1" 200 25416 +64.242.88.10 - - [07/Mar/2004:18:47:06 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGroups?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4308 +64.242.88.10 - - [07/Mar/2004:18:48:15 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=.* HTTP/1.1" 200 3544 +64.242.88.10 - - [07/Mar/2004:18:52:30 -0800] "GET /ops/SP/play//edit/Main/Trigger_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:53:55 -0800] "GET /ops/SP/play//oops/TWiki/TWikiSite?template=oopsmore¶m1=1.21¶m2=1.21 HTTP/1.1" 200 11284 +64.242.88.10 - - [07/Mar/2004:18:57:07 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.35 HTTP/1.1" 200 27248 +64.242.88.10 - - [07/Mar/2004:18:58:52 -0800] "GET /ops/SP/play//edit/Main/Mydestination?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:18:59:52 -0800] "GET /mailman/listinfo/fcd HTTP/1.1" 200 5967 +64.242.88.10 - - [07/Mar/2004:19:01:48 -0800] "GET /ops/SP/play//rdiff/Main/WebHome?rev1=1.28&rev2=1.27 HTTP/1.1" 200 3596 +64.242.88.10 - - [07/Mar/2004:19:03:58 -0800] "GET /ops/SP/play//edit/Main/Message_size_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:08:55 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory HTTP/1.1" 200 138789 +64.242.88.10 - - [07/Mar/2004:19:10:13 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^y HTTP/1.1" 200 3628 +64.242.88.10 - - [07/Mar/2004:19:15:38 -0800] "GET /ops/SP/play//edit/Main/Smtpd_history_flush_threshold?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:19:16:44 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.59 HTTP/1.1" 200 52854 +64.242.88.10 - - [07/Mar/2004:19:18:05 -0800] "GET /ops/SP/play//edit/Main/Sender_canonical_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:19:19:19 -0800] "GET /mailman/listinfo/mlc HTTP/1.1" 200 6142 +64.242.88.10 - - [07/Mar/2004:19:21:01 -0800] "GET /ops/SP/play//rdiff/Main/WebChanges HTTP/1.1" 200 114241 +64.242.88.10 - - [07/Mar/2004:19:22:11 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic5?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:24:57 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.22 HTTP/1.1" 200 21162 +64.242.88.10 - - [07/Mar/2004:19:26:22 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^j HTTP/1.1" 200 4524 +64.242.88.10 - - [07/Mar/2004:19:29:46 -0800] "GET /ops/SP/play//oops/TWiki/TWikiVariables?template=oopsmore¶m1=1.62¶m2=1.62 HTTP/1.1" 200 11444 +64.242.88.10 - - [07/Mar/2004:19:31:25 -0800] "GET /ops/SP/play//edit/Main/Lmtp_connect_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:32:45 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^q HTTP/1.1" 200 2937 +64.242.88.10 - - [07/Mar/2004:19:36:14 -0800] "GET /ops/SP/play//view/TWiki/ManagingWebs?rev=1.21 HTTP/1.1" 200 9310 +64.242.88.10 - - [07/Mar/2004:19:39:40 -0800] "GET /ops/SP/play//edit/Main/Qmqpd_authorized_clients?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:41:33 -0800] "GET /ops/SP/play//edit/Main/Header_address_token_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:19:42:45 -0800] "GET /ops/SP/play//edit/Main/Syslog_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +80-219-148-207.dclient.hispeed.ch - - [07/Mar/2004:19:47:36 -0800] "OPTIONS * HTTP/1.0" 200 - +64.242.88.10 - - [07/Mar/2004:19:49:28 -0800] "GET /ops/SP/play//oops/TWiki/TWikiHistory?template=oopsmore¶m1=1.61¶m2=1.61 HTTP/1.1" 200 11345 +64.242.88.10 - - [07/Mar/2004:19:52:28 -0800] "GET /ops/SP/play//view/TWiki/HaroldGottschalk HTTP/1.1" 200 3838 +64.242.88.10 - - [07/Mar/2004:19:54:33 -0800] "GET /ops/SP/play//view/TWiki/DefaultPlugin?rev=1.4 HTTP/1.1" 200 7298 +64.242.88.10 - - [07/Mar/2004:19:55:40 -0800] "GET /ops/SP/play//oops/TWiki/WelcomeGuest?template=oopsmore¶m1=1.20¶m2=1.20 HTTP/1.1" 200 11266 +64.242.88.10 - - [07/Mar/2004:19:56:41 -0800] "GET /ops/SP/play//rdiff/Main/WebIndex HTTP/1.1" 200 46373 +64.242.88.10 - - [07/Mar/2004:19:58:24 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiRegistration?rev1=1.10&rev2=1.9 HTTP/1.1" 200 3826 +64.242.88.10 - - [07/Mar/2004:20:00:06 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.21 HTTP/1.1" 200 20972 +64.242.88.10 - - [07/Mar/2004:20:02:13 -0800] "GET /ops/SP/play//attach/TWiki/DefaultPlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:03:29 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^p HTTP/1.1" 200 7245 +206-15-133-181.dialup.ziplink.net - - [07/Mar/2004:20:04:03 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +64.242.88.10 - - [07/Mar/2004:20:04:35 -0800] "GET /ops/SP/play//edit/Main/Smtp_pix_workaround_delay_time?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:07:12 -0800] "GET /ops/SP/play//edit/Main/Berkeley_db_create_buffer_size?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +mmscrm07-2.uah.goweb.net - - [07/Mar/2004:20:10:50 -0800] "GET /robots.txt HTTP/1.0" 200 68 +64.242.88.10 - - [07/Mar/2004:20:11:33 -0800] "GET /ops/SP/play//attach/TWiki/TWikiSite HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:12:55 -0800] "GET /ops/SP/play//edit/TWiki/TWikiSite?t=1078681794 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:23:35 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Statistics[^A-Za-z] HTTP/1.1" 200 10118 +64.242.88.10 - - [07/Mar/2004:20:25:31 -0800] "GET /ops/SP/play//edit/Main/Defer_transports?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:31:40 -0800] "GET /ops/SP/play//rdiff/TWiki/SearchDoesNotWork HTTP/1.1" 200 6738 +64.242.88.10 - - [07/Mar/2004:20:35:28 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=TWiki%20*Admin%20*Group[^A-Za-z] HTTP/1.1" 200 7311 +64.242.88.10 - - [07/Mar/2004:20:38:14 -0800] "GET /ops/SP/play//rdiff/TWiki/ChangePassword HTTP/1.1" 200 16670 +64.242.88.10 - - [07/Mar/2004:20:40:41 -0800] "GET /ops/SP/play//rdiff/TWiki/SvenDowideit HTTP/1.1" 200 5277 +64.242.88.10 - - [07/Mar/2004:20:42:09 -0800] "GET /ops/SP/play//rdiff/TWiki/KevinKinnell?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4982 +64.242.88.10 - - [07/Mar/2004:20:44:48 -0800] "GET /ops/SP/play//edit/Main/Undisclosed_recipients_header?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:20:55:43 -0800] "GET /mailman/listinfo/hs_support HTTP/1.1" 200 6294 +64.242.88.10 - - [07/Mar/2004:20:56:56 -0800] "GET /ops/SP/play//view/TWiki/WebTopicList HTTP/1.1" 200 14070 +64.242.88.10 - - [07/Mar/2004:20:58:27 -0800] "GET /ops/SP/play//attach/TWiki/WebPreferences HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:03:48 -0800] "GET /ops/SP/play//view/TWiki/TWikiFAQ HTTP/1.1" 200 12050 +64.242.88.10 - - [07/Mar/2004:21:06:05 -0800] "GET /ops/SP/play//oops/TWiki/DefaultPlugin?template=oopsmore¶m1=1.5¶m2=1.5 HTTP/1.1" 200 11281 +64.242.88.10 - - [07/Mar/2004:21:07:24 -0800] "GET /ops/SP/play//rdiff/TWiki/AppendixFileSystem?rev1=1.11&rev2=1.10 HTTP/1.1" 200 40578 +64.242.88.10 - - [07/Mar/2004:21:14:32 -0800] "GET /ops/SP/play//rdiff/TWiki/FileAttribute HTTP/1.1" 200 5846 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:17 -0800] "GET /twiki/view/Main/WebHome HTTP/1.1" 404 300 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:18 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:21 -0800] "GET /twiki/ HTTP/1.1" 200 782 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:23 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:23 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:33 -0800] "GET /ops/SP/play//view/Main/TWikiUsers HTTP/1.1" 200 6697 +h24-70-56-49.ca.clawio.org - - [07/Mar/2004:21:16:40 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +64.242.88.10 - - [07/Mar/2004:21:20:14 -0800] "GET /ops/SP/play//edit/TWiki/RichardDonkin?t=1078691832 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:21:40 -0800] "GET /ops/SP/play//oops/Main/DCC?template=oopsmore¶m1=1.1¶m2=1.1 HTTP/1.1" 200 6399 +64.242.88.10 - - [07/Mar/2004:21:23:38 -0800] "GET /ops/SP/play//view/TWiki/TWikiUpgradeTo01May2000 HTTP/1.1" 200 7463 +64.242.88.10 - - [07/Mar/2004:21:31:12 -0800] "GET /ops/SP/play//edit/Main/Mail_release_date?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:33:51 -0800] "GET /ops/SP/play//view/TWiki/TWikiPlugins?rev=1.19 HTTP/1.1" 200 26541 +bh02i525f01.au.ibm.com - - [07/Mar/2004:21:34:00 -0800] "GET /AmavisNew.jsp HTTP/1.0" 200 2300 +64.242.88.10 - - [07/Mar/2004:21:39:55 -0800] "GET /ops/SP/play//attach/Main/ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:41:04 -0800] "GET /mailman/listinfo/techcomm HTTP/1.1" 200 6155 +64.242.88.10 - - [07/Mar/2004:21:42:47 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.8 HTTP/1.1" 200 15618 +64.242.88.10 - - [07/Mar/2004:21:44:10 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic7?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:21:50:22 -0800] "GET /ops/SP/play//rdiff/TWiki/WebSearch HTTP/1.1" 200 55862 +64.242.88.10 - - [07/Mar/2004:21:52:05 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiTopics HTTP/1.1" 200 101445 +64.242.88.10 - - [07/Mar/2004:22:03:19 -0800] "GET /ops/SP/play//rdiff/Main/VishaalGolam HTTP/1.1" 200 5055 +64.242.88.10 - - [07/Mar/2004:22:04:44 -0800] "GET /ops/SP/play//view/Main/TWikiUsers?rev=1.21 HTTP/1.1" 200 6522 +64.242.88.10 - - [07/Mar/2004:22:06:16 -0800] "GET /ops/SP/play//edit/Main/Delay_notice_recipient?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:07:33 -0800] "GET /ops/SP/play//view/TWiki/WikiNotation HTTP/1.1" 200 3617 +64.242.88.10 - - [07/Mar/2004:22:08:43 -0800] "GET /ops/SP/play//edit/Main/Forward_expansion_filter?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:09:44 -0800] "GET /ops/SP/play//edit/Main/TestArea?topicparent=Main.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:10:55 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=1.2 HTTP/1.1" 200 4366 +64.242.88.10 - - [07/Mar/2004:22:12:28 -0800] "GET /ops/SP/play//attach/TWiki/WebSearch HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:15:57 -0800] "GET /mailman/listinfo/hs_rcafaculty HTTP/1.1" 200 6345 +64.242.88.10 - - [07/Mar/2004:22:17:40 -0800] "GET /ops/SP/play//view/TWiki/TWikiSkins?skin=print HTTP/1.1" 200 9563 +64.242.88.10 - - [07/Mar/2004:22:27:18 -0800] "GET /ops/SP/play//edit/Main/OfficeLocations?t=1078691049 HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:29:10 -0800] "GET /ops/SP/play//view/Main/ThanadonSomdee HTTP/1.1" 200 4611 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:12 -0800] "GET /mailman/options/cnc_notice/arobin%40shaw.c HTTP/1.1" 200 3382 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:13 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:29:41 -0800] "POST /mailman/options/cnc_notice HTTP/1.1" 200 3533 +h24-71-249-14.ca.clawio.org - - [07/Mar/2004:22:30:08 -0800] "POST /mailman/options/cnc_notice HTTP/1.1" 200 13973 +64.242.88.10 - - [07/Mar/2004:22:31:25 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.16 HTTP/1.1" 200 17361 +64.242.88.10 - - [07/Mar/2004:22:35:53 -0800] "GET /ops/SP/play//edit/Main/Default_delivery_slot_discount?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:22:36:58 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.10&rev2=1.9 HTTP/1.1" 200 5336 +64.242.88.10 - - [07/Mar/2004:22:39:00 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Al%20*Williams[^A-Za-z] HTTP/1.1" 200 4364 +64.242.88.10 - - [07/Mar/2004:22:45:46 -0800] "GET /ops/SP/play//edit/Main/Smtpd_banner?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:22:47:19 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.9 HTTP/1.1" 200 9133 +64.242.88.10 - - [07/Mar/2004:22:48:55 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSkins?rev1=1.10&rev2=1.9 HTTP/1.1" 200 5989 +64.242.88.10 - - [07/Mar/2004:22:51:55 -0800] "GET /ops/SP/play//attach/TWiki/AndreaSterbini HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:22:53:36 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPlugins?rev1=1.20&rev2=1.19 HTTP/1.1" 200 5140 +64.242.88.10 - - [07/Mar/2004:22:54:43 -0800] "GET /ops/SP/play//view/Know/ReadmeFirst?rev=1.4 HTTP/1.1" 200 6736 +64.242.88.10 - - [07/Mar/2004:22:58:24 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=r1.3 HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:23:09:07 -0800] "GET /ops/SP/play//view/TWiki/AlWilliams?rev=1.1 HTTP/1.1" 200 3697 +calcite.rhyolite.com - - [07/Mar/2004:23:10:27 -0800] "GET /clients.jsp HTTP/1.1" 200 18753 +64.242.88.10 - - [07/Mar/2004:23:10:44 -0800] "GET /ops/SP/play//view/TWiki/JohnTalintyre HTTP/1.1" 200 3766 +64.242.88.10 - - [07/Mar/2004:23:13:51 -0800] "GET /ops/SP/play//view/TWiki/TWikiDocGraphics HTTP/1.1" 200 14492 +64.242.88.10 - - [07/Mar/2004:23:15:51 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.24 HTTP/1.1" 200 20981 +64.242.88.10 - - [07/Mar/2004:23:16:57 -0800] "GET /ops/SP/play//rdiff/Main/SanJoseOffice HTTP/1.1" 200 9524 +64.242.88.10 - - [07/Mar/2004:23:19:01 -0800] "GET /ops/SP/play//rdiff/Main/WebNotify HTTP/1.1" 200 16853 +64.242.88.10 - - [07/Mar/2004:23:20:26 -0800] "GET /ops/SP/play//view/TWiki/TWikiSiteTools HTTP/1.1" 200 14435 +64.242.88.10 - - [07/Mar/2004:23:23:00 -0800] "GET /ops/SP/play//rdiff/TWiki/RichardDonkin?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5891 +64.242.88.10 - - [07/Mar/2004:23:27:26 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Preferences[^A-Za-z] HTTP/1.1" 200 20030 +64.242.88.10 - - [07/Mar/2004:23:30:23 -0800] "GET /ops/SP/play//rdiff/TWiki/WebHome HTTP/1.1" 200 108162 +64.242.88.10 - - [07/Mar/2004:23:34:31 -0800] "GET /ops/SP/play//edit/Main/Lmtp_quit_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [07/Mar/2004:23:36:48 -0800] "GET /ops/SP/play//view/TWiki/WebSiteTools HTTP/1.1" 200 5208 +lj1036.passgo.com - - [07/Mar/2004:23:36:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1088.passgo.com - - [07/Mar/2004:23:36:59 -0800] "GET /ops/SP/play//oops/TWiki/JohnAltstadt HTTP/1.0" 200 209 +64.242.88.10 - - [07/Mar/2004:23:37:48 -0800] "GET /ops/SP/play//oops/Main/FileAttachment?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 6612 +64.242.88.10 - - [07/Mar/2004:23:42:44 -0800] "GET /ops/SP/play//edit/Main/Cleanup_service_name?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [07/Mar/2004:23:47:58 -0800] "GET /ops/SP/play//view/TWiki/WikiReferences?skin=print HTTP/1.1" 200 5596 +64.242.88.10 - - [07/Mar/2004:23:50:03 -0800] "GET /ops/SP/play//view/Main/TokyoOffice?rev=1.3 HTTP/1.1" 200 3853 +64.242.88.10 - - [07/Mar/2004:23:51:38 -0800] "GET /ops/SP/play//view/Main/PostSuper?rev=r1.1 HTTP/1.1" 200 3629 +64.242.88.10 - - [07/Mar/2004:23:56:30 -0800] "GET /ops/SP/play//rdiff/Main/PostQueue HTTP/1.1" 200 4662 +64.242.88.10 - - [07/Mar/2004:23:58:53 -0800] "GET /ops/SP/play//edit/TWiki/TablePlugin?t=1078681446 HTTP/1.1" 401 12851 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:05:30 -0800] "GET / HTTP/1.1" 200 3169 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:05:35 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +dsl-80-43-113-44.access.uk.tiscali.com - - [08/Mar/2004:00:06:32 -0800] "GET /DCC.jsp HTTP/1.1" 200 2878 +64.242.88.10 - - [08/Mar/2004:00:08:58 -0800] "GET /ops/SP/play//oops/Sandbox/WebHome?template=oopsmore¶m1=1.7¶m2=1.7 HTTP/1.1" 200 4226 +64.242.88.10 - - [08/Mar/2004:00:11:22 -0800] "GET /ops/SP/play//edit/Main/WelcomeGuest?topicparent=Main.WebHome HTTP/1.1" 401 12846 +lj1125.passgo.com - - [08/Mar/2004:00:17:00 -0800] "GET /ops/SP/play//oops/Main/TWiki HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:00:17:22 -0800] "GET /ops/SP/play//view/TWiki/RichardDonkin?skin=print HTTP/1.1" 200 1729 +64.242.88.10 - - [08/Mar/2004:00:19:51 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.4 HTTP/1.1" 200 7049 +64.242.88.10 - - [08/Mar/2004:00:21:54 -0800] "GET /ops/SP/play//view/TWiki/TWikiRegistration?rev=r1.7 HTTP/1.1" 200 12737 +64.242.88.10 - - [08/Mar/2004:00:25:11 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.26 HTTP/1.1" 200 22710 +64.242.88.10 - - [08/Mar/2004:00:27:53 -0800] "GET /ops/SP/play//view/TWiki/GoBox HTTP/1.1" 200 3762 +64.242.88.10 - - [08/Mar/2004:00:29:13 -0800] "GET /ops/SP/play//view/Main/FileAttachment?rev=1.1 HTTP/1.1" 200 17757 +64.242.88.10 - - [08/Mar/2004:00:32:45 -0800] "GET /ops/SP/play//attach/TWiki/KevinKinnell HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:00:36:21 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiWikiClones HTTP/1.1" 200 9259 +64.242.88.10 - - [08/Mar/2004:00:37:23 -0800] "GET /ops/SP/play//oops/Main/NicholasLee?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6558 +64.242.88.10 - - [08/Mar/2004:00:40:10 -0800] "GET /ops/SP/play//edit/Main/TWikiForms?topicparent=Main.TWikiVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:00:43:43 -0800] "GET /ops/SP/play//rdiff/TWiki/DefaultPlugin HTTP/1.1" 200 20376 +64.242.88.10 - - [08/Mar/2004:00:50:59 -0800] "GET /mailman/admin/educationadmin HTTP/1.1" 200 2150 +64.242.88.10 - - [08/Mar/2004:00:52:12 -0800] "GET /mailman/private/hsdivision/ HTTP/1.1" 200 1549 +64.242.88.10 - - [08/Mar/2004:00:54:26 -0800] "GET /mailman/listinfo/artsscience HTTP/1.1" 200 6248 +64.242.88.10 - - [08/Mar/2004:00:55:38 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^i HTTP/1.1" 200 7226 +64.242.88.10 - - [08/Mar/2004:01:00:08 -0800] "GET /ops/SP/play//rdiff/TWiki/AdrianLynch HTTP/1.1" 200 4011 +64.242.88.10 - - [08/Mar/2004:01:01:15 -0800] "GET /ops/SP/play//view/Main/WelcomeGuest HTTP/1.1" 200 4723 +64.242.88.10 - - [08/Mar/2004:01:02:16 -0800] "GET /ops/SP/play//view/Main/MikeMannix?rev=1.3 HTTP/1.1" 200 4721 +64.242.88.10 - - [08/Mar/2004:01:04:05 -0800] "GET /ops/SP/play//edit/TWiki/WikiStyleWord?topicparent=TWiki.TextFormattingFAQ HTTP/1.1" 401 12846 +lj1089.passgo.com - - [08/Mar/2004:01:04:54 -0800] "GET /ops/SP/play//oops/TWiki/InterWikis HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:01:10:43 -0800] "GET /ops/SP/play//view/TWiki/FormattedSearch?rev=1.8 HTTP/1.1" 200 20434 +64.242.88.10 - - [08/Mar/2004:01:12:20 -0800] "GET /ops/SP/play//view/TWiki/TWikiEnhancementRequests?rev=1.3 HTTP/1.1" 200 4379 +64.242.88.10 - - [08/Mar/2004:01:16:37 -0800] "GET /ops/SP/play//view/Main/FileAttachment?rev=1.2 HTTP/1.1" 200 17919 +64.242.88.10 - - [08/Mar/2004:01:19:18 -0800] "GET /ops/SP/play//edit/TWiki/AppendixFileSystem?t=1078674582 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:24:13 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.33 HTTP/1.1" 200 26294 +64.242.88.10 - - [08/Mar/2004:01:25:15 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^t HTTP/1.1" 200 8306 +64.242.88.10 - - [08/Mar/2004:01:29:17 -0800] "GET /ops/SP/play//oops/TWiki/TWikiPlugins?template=oopsmore¶m1=1.21¶m2=1.21 HTTP/1.1" 200 11341 +64.242.88.10 - - [08/Mar/2004:01:30:39 -0800] "GET /mailman/private/sswk/ HTTP/1.1" 200 1531 +64.242.88.10 - - [08/Mar/2004:01:33:14 -0800] "GET /mailman/private/business/ HTTP/1.1" 200 1543 +64.242.88.10 - - [08/Mar/2004:01:35:13 -0800] "GET /ops/SP/play//edit/TWiki/InterWikis?t=1078696998 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:41:14 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.18 HTTP/1.1" 200 14001 +64.242.88.10 - - [08/Mar/2004:01:46:05 -0800] "GET /ops/SP/play//search/TWiki/?search=\\.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on&limit=200 HTTP/1.1" 200 101279 +64.242.88.10 - - [08/Mar/2004:01:47:06 -0800] "GET /ops/SP/play//edit/TWiki/TWikiPages?topicparent=TWiki.WelcomeGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:01:48:06 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.16 HTTP/1.1" 200 9342 +64.242.88.10 - - [08/Mar/2004:01:50:37 -0800] "GET /ops/SP/play//rdiff/TWiki/RyanFreebern?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5243 +64.242.88.10 - - [08/Mar/2004:01:59:13 -0800] "GET /ops/SP/play//edit/Main/Smtp_line_length_limit?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:00:30 -0800] "GET /ops/SP/play//view/Main/WebStatistics?skin=print HTTP/1.1" 200 6194 +64.242.88.10 - - [08/Mar/2004:02:01:34 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +64.242.88.10 - - [08/Mar/2004:02:03:12 -0800] "GET /mailman/admin/mlc HTTP/1.1" 200 2060 +64.242.88.10 - - [08/Mar/2004:02:05:15 -0800] "GET /mailman/listinfo/jjec HTTP/1.1" 200 6297 +64.242.88.10 - - [08/Mar/2004:02:06:17 -0800] "GET /mailman/listinfo/deans HTTP/1.1" 200 6102 +64.242.88.10 - - [08/Mar/2004:02:07:21 -0800] "GET /mailman/listinfo/gisgrad HTTP/1.1" 200 6024 +64.242.88.10 - - [08/Mar/2004:02:09:08 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.1" 200 4468 +64.242.88.10 - - [08/Mar/2004:02:12:24 -0800] "GET /ops/SP/play//edit/Main/Setgid_group?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:16:24 -0800] "GET /ops/SP/play//view/Main/WebChanges?skin=print HTTP/1.1" 200 38580 +lj1016.passgo.com - - [08/Mar/2004:02:17:10 -0800] "GET /ops/SP/play//oops/TWiki/FileAttachment HTTP/1.0" 200 209 +lj1036.passgo.com - - [08/Mar/2004:02:22:19 -0800] "GET /ops/SP/play//view/Main/TWi HTTP/1.0" 200 4866 +64.242.88.10 - - [08/Mar/2004:02:23:45 -0800] "GET /ops/SP/play//rdiff/TWiki/IncludeTopicsAndWebPages HTTP/1.1" 200 20972 +64.242.88.10 - - [08/Mar/2004:02:26:44 -0800] "GET /ops/SP/play//oops/Main/WebChanges?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6540 +64.242.88.10 - - [08/Mar/2004:02:27:51 -0800] "GET /ops/SP/play//rdiff/TWiki/InstantEnhancements HTTP/1.1" 200 25123 +64.242.88.10 - - [08/Mar/2004:02:33:28 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPreferences?rev1=1.47&rev2=1.46 HTTP/1.1" 200 4313 +64.242.88.10 - - [08/Mar/2004:02:34:40 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.24 HTTP/1.1" 200 9769 +64.242.88.10 - - [08/Mar/2004:02:42:36 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +64.242.88.10 - - [08/Mar/2004:02:45:03 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&bookview=on&search=.* HTTP/1.1" 200 102399 +64.242.88.10 - - [08/Mar/2004:02:46:12 -0800] "GET /ops/SP/play//edit/Main/Local_recipient_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:02:47:58 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +lj1025.passgo.com - - [08/Mar/2004:02:48:05 -0800] "GET /ops/SP/play//oops/Main/KevinWGage HTTP/1.0" 200 209 +prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:53 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:02:52:39 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +prxint-sxb2.e-i.net - - [08/Mar/2004:02:54:29 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.0" 200 4022 +64.242.88.10 - - [08/Mar/2004:02:54:54 -0800] "GET /ops/SP/play//edit/TWiki/NewTopic?topicparent=TWiki.WikiSyntax HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:02:59:03 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSite HTTP/1.1" 200 71941 +64.242.88.10 - - [08/Mar/2004:03:01:12 -0800] "GET /ops/SP/play//rdiff/TWiki/SimultaneousEdits HTTP/1.1" 200 6180 +64.242.88.10 - - [08/Mar/2004:03:06:31 -0800] "GET /ops/SP/play//view/Main/NicholasLee?rev=1.2 HTTP/1.1" 200 3570 +64.242.88.10 - - [08/Mar/2004:03:07:59 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=1.9 HTTP/1.1" 200 15756 +64.242.88.10 - - [08/Mar/2004:03:09:20 -0800] "GET /mailman/listinfo/ncbnpfaculty HTTP/1.1" 200 6331 +64.242.88.10 - - [08/Mar/2004:03:11:28 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Inter%20*Wikis[^A-Za-z] HTTP/1.1" 200 5113 +64.242.88.10 - - [08/Mar/2004:03:16:22 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingFAQ?template=oopsmore¶m1=1.14¶m2=1.14 HTTP/1.1" 200 11364 +64.242.88.10 - - [08/Mar/2004:03:17:50 -0800] "GET /ops/SP/play//rdiff/Main/WebTopicList HTTP/1.1" 200 8004 +64.242.88.10 - - [08/Mar/2004:03:21:16 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +64.242.88.10 - - [08/Mar/2004:03:26:06 -0800] "GET /mailman/private/mlc/ HTTP/1.1" 200 1528 +64.242.88.10 - - [08/Mar/2004:03:28:02 -0800] "GET /ops/SP/play//view/TWiki/WikiName HTTP/1.1" 200 4811 +64.242.88.10 - - [08/Mar/2004:03:33:52 -0800] "GET /ops/SP/play//rdiff/Main/WebRss HTTP/1.1" 200 20726 +64.242.88.10 - - [08/Mar/2004:03:35:42 -0800] "GET /ops/SP/play//rdiff/TWiki/SvenDowideit?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5277 +rouble.cc.strath.ac.uk - - [08/Mar/2004:03:40:51 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +213.181.81.4 - - [08/Mar/2004:03:42:20 -0800] "GET /LateEmail.jsp HTTP/1.0" 200 7649 +64.242.88.10 - - [08/Mar/2004:03:46:27 -0800] "GET /ops/SP/play//edit/Main/Deliver_lock_attempts?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:03:48:18 -0800] "GET /ops/SP/play//edit/Main/Daemon_directory?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:03:49:24 -0800] "GET /ops/SP/play//rdiff/TWiki/KlausWriessnegger?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5421 +64.242.88.10 - - [08/Mar/2004:03:51:05 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=1.4 HTTP/1.1" 200 4719 +64.242.88.10 - - [08/Mar/2004:03:52:17 -0800] "GET /ops/SP/play//edit/Main/Relayhost?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +lj1036.passgo.com - - [08/Mar/2004:03:53:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1159.passgo.com - - [08/Mar/2004:03:54:03 -0800] "GET /ops/SP/play//oops/Main/TWi HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:03:55:09 -0800] "GET /ops/SP/play//edit/Main/BookView?topicparent=Main.TWikiVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:16:08 -0800] "GET /ops/SP/play//rdiff/TWiki/DeleteOrRenameATopic HTTP/1.1" 200 10254 +64.242.88.10 - - [08/Mar/2004:04:18:28 -0800] "GET /ops/SP/play//view/TWiki/DavidWarman HTTP/1.1" 200 3739 +64.242.88.10 - - [08/Mar/2004:04:20:48 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.28 HTTP/1.1" 200 22777 +64.242.88.10 - - [08/Mar/2004:04:21:53 -0800] "GET /ops/SP/play//rdiff/Main/PeterThoeny HTTP/1.1" 200 18927 +64.242.88.10 - - [08/Mar/2004:04:22:55 -0800] "GET /ops/SP/play//edit/TWiki/SvenDowideit?t=1078710644 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:24:47 -0800] "GET /ops/SP/play//edit/Main/RBLsHowTo?t=1078668449 HTTP/1.1" 401 12846 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:25:38 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 5672 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:25:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:26:02 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.0" 200 3960 +64.242.88.10 - - [08/Mar/2004:04:26:02 -0800] "GET /ops/SP/play//rdiff/TWiki/DefaultPlugin?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4911 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:26:11 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.0" 200 4515 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:34 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.0" 200 4213 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:38 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:41 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.0" 200 4154 +64.242.88.10 - - [08/Mar/2004:04:28:42 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.61&rev2=1.60 HTTP/1.1" 200 4898 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:28:52 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.0" 200 3617 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:00 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:11 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.0" 200 58169 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:21 -0800] "GET /ops/SP/play//edit/Main/Propagate_unmatched_extensions?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +prxint-sxb3.e-i.net - - [08/Mar/2004:04:29:30 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.0" 200 130 +64.242.88.10 - - [08/Mar/2004:04:33:25 -0800] "GET /mailman/admin/hs_support HTTP/1.1" 200 2120 +64.242.88.10 - - [08/Mar/2004:04:40:32 -0800] "GET /ops/SP/play//edit/Main/Always_bcc?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:43:52 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.5 HTTP/1.1" 200 9492 +64.242.88.10 - - [08/Mar/2004:04:52:13 -0800] "GET /ops/SP/play//rdiff/Main/TWikiGuest?rev1=1.5&rev2=1.4 HTTP/1.1" 200 6233 +64.242.88.10 - - [08/Mar/2004:04:55:40 -0800] "GET /ops/SP/play//edit/Main/Delay_warning_time?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:04:59:13 -0800] "GET /ops/SP/play//edit/TWiki/KlausWriessnegger?t=1078709735 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:05:00:42 -0800] "GET /ops/SP/play//rdiff/TWiki/StanleyKnutson HTTP/1.1" 200 5327 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:45 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:46 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:00:52 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:01:02 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:01:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:05:01:58 -0800] "GET /ops/SP/play//view/TWiki/WhatIsWikiWiki HTTP/1.1" 200 4234 +200.160.249.68.bmf.com.br - - [08/Mar/2004:05:02:06 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +200.160.249.68.bmf.com.br - - [08/Mar/2004:05:02:07 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:05:03:13 -0800] "GET /ops/SP/play//view/Main/WebIndex?rev=1.1 HTTP/1.1" 200 44960 +64.242.88.10 - - [08/Mar/2004:05:13:35 -0800] "GET /mailman/private/hs_support/ HTTP/1.1" 200 1549 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:16:15 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:16:20 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +64.242.88.10 - - [08/Mar/2004:05:22:57 -0800] "GET /ops/SP/play//attach/Sandbox/WebHome HTTP/1.1" 401 12846 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:23:37 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +66-194-6-70.gen.twtelecom.net - - [08/Mar/2004:05:24:18 -0800] "GET / HTTP/1.1" 200 3169 +64.242.88.10 - - [08/Mar/2004:05:24:29 -0800] "GET /ops/SP/play//edit/TWiki/UnchangeableTopicBug?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12846 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:24:50 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:25:46 -0800] "GET /ops/SP/play//view/Main/Postfix HTTP/1.1" 200 3699 +64.242.88.10 - - [08/Mar/2004:05:26:02 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?skin=print HTTP/1.1" 200 2372 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:06 -0800] "GET /ops/SP/play//edit/Main/UvscanAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12851 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:08 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +p213.54.168.132.tisdip.tiscali.de - - [08/Mar/2004:05:26:16 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +64.242.88.10 - - [08/Mar/2004:05:30:07 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit?rev=1.1 HTTP/1.1" 200 3564 +64.242.88.10 - - [08/Mar/2004:05:31:47 -0800] "GET /ops/SP/play//edit/Main/Maps_rbl_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +lj1027.passgo.com - - [08/Mar/2004:05:32:01 -0800] "GET /ops/SP/play//view/TWiki/2fa HTTP/1.0" 200 4615 +64.242.88.10 - - [08/Mar/2004:05:34:33 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Changes[^A-Za-z] HTTP/1.1" 200 4829 +64.242.88.10 - - [08/Mar/2004:05:36:56 -0800] "GET /ops/SP/play//edit/Main/WebStatistics?t=1078690975 HTTP/1.1" 401 12851 +68-174-110-154.nyc.rr.com - - [08/Mar/2004:05:38:57 -0800] "GET /razor.jsp HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:05:42:06 -0800] "GET /ops/SP/play//view/Main/RelayGateway?rev=1.3 HTTP/1.1" 200 4232 +64.242.88.10 - - [08/Mar/2004:05:47:38 -0800] "GET /robots.txt HTTP/1.1" 200 68 +64.242.88.10 - - [08/Mar/2004:05:48:48 -0800] "GET /ops/SP/play//rdiff/TWiki/KevinKinnell?rev1=1.4&rev2=1.3 HTTP/1.1" 200 4369 +64.242.88.10 - - [08/Mar/2004:05:51:45 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.11 HTTP/1.1" 200 13102 +64.242.88.10 - - [08/Mar/2004:05:56:08 -0800] "GET /ops/SP/play//view/TWiki/TWikiRegistration?rev=r1.4 HTTP/1.1" 200 12113 +64.242.88.10 - - [08/Mar/2004:05:57:15 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevTWikiEnhancementRequests?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:05:58:39 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Peter%20*Fokkinga[^A-Za-z] HTTP/1.1" 200 4388 +64.242.88.10 - - [08/Mar/2004:06:01:51 -0800] "GET /ops/SP/play//attach/Main/WebPreferences HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:06:09:37 -0800] "GET /mailman/admin/hs_rcafaculty HTTP/1.1" 200 2144 +64.242.88.10 - - [08/Mar/2004:06:17:13 -0800] "GET /ops/SP/play//rdiff/TWiki/WebChanges HTTP/1.1" 200 114167 +64.242.88.10 - - [08/Mar/2004:06:20:36 -0800] "GET /ops/SP/play//view/Main/JorisBenschop?skin=print HTTP/1.1" 200 2717 +64.242.88.10 - - [08/Mar/2004:06:23:52 -0800] "GET /ops/SP/play//edit/TWiki/TestArea?topicparent=TWiki.WelcomeGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:06:32:14 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.6 HTTP/1.1" 200 12620 +64.242.88.10 - - [08/Mar/2004:06:37:19 -0800] "GET /ops/SP/play//rdiff/TWiki/HaroldGottschalk?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5389 +64.242.88.10 - - [08/Mar/2004:06:41:22 -0800] "GET /pipermail/techcomm/ HTTP/1.1" 200 1176 +64.242.88.10 - - [08/Mar/2004:06:42:29 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.19 HTTP/1.1" 200 20488 +64.242.88.10 - - [08/Mar/2004:06:43:32 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic2?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:06:47:41 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:06:47:41 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:06:49:27 -0800] "GET /ops/SP/play//attach/TWiki/InterWikis HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:06:54:30 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiSkins?rev1=1.11&rev2=1.10 HTTP/1.1" 200 5711 +64.242.88.10 - - [08/Mar/2004:06:57:09 -0800] "GET /ops/SP/play//rdiff/TWiki/WebNotify HTTP/1.1" 200 11780 +128.227.88.79 - - [08/Mar/2004:06:57:46 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:06:57:46 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:07:00:15 -0800] "GET /ops/SP/play//view/TWiki/DontNotify?rev=1.1 HTTP/1.1" 200 3965 +64.242.88.10 - - [08/Mar/2004:07:07:13 -0800] "GET /ops/SP/play//edit/Main/Masquerade_classes?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:07:09:12 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +64.242.88.10 - - [08/Mar/2004:07:09:21 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.10 HTTP/1.1" 200 8312 +64.242.88.10 - - [08/Mar/2004:07:10:26 -0800] "GET /ops/SP/play//view/TWiki/HaroldGottschalk?rev=1.2 HTTP/1.1" 200 3774 +64.242.88.10 - - [08/Mar/2004:07:11:37 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevTWikiPlannedFeatures?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:07:12:39 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.44 HTTP/1.1" 200 41434 +64.242.88.10 - - [08/Mar/2004:07:22:13 -0800] "GET /ops/SP/play//view/TWiki/PeterFokkinga?rev=1.2 HTTP/1.1" 200 3748 +64.242.88.10 - - [08/Mar/2004:07:23:38 -0800] "GET /ops/SP/play//edit/TWiki/TWikiPlugins?t=1078696313 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:24:43 -0800] "GET /mailman/listinfo/webct HTTP/1.1" 200 6377 +64.242.88.10 - - [08/Mar/2004:07:25:56 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [08/Mar/2004:07:27:01 -0800] "GET /mailman/listinfo/faculty HTTP/1.1" 200 6054 +61.9.4.61 - - [08/Mar/2004:07:27:36 -0800] "GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPREQ=0 HTTP/1.0" 404 284 +61.9.4.61 - - [08/Mar/2004:07:27:36 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +61.9.4.61 - - [08/Mar/2004:07:27:37 -0800] "GET /MSOffice/cltreq.asp?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPREQ=0 HTTP/1.0" 404 284 +64.242.88.10 - - [08/Mar/2004:07:28:29 -0800] "GET /mailman/admin/sswk HTTP/1.1" 200 2072 +64.242.88.10 - - [08/Mar/2004:07:29:56 -0800] "GET /mailman/listinfo/purchasing HTTP/1.1" 200 6050 +64.242.88.10 - - [08/Mar/2004:07:35:50 -0800] "GET /ops/SP/play//edit/Main/Invalid_hostname_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:39:31 -0800] "GET /ops/SP/play//rdiff/Main/WebPreferences?rev1=1.14&rev2=1.13 HTTP/1.1" 200 7207 +64.242.88.10 - - [08/Mar/2004:07:40:54 -0800] "GET /ops/SP/play//rename/TWiki/TWikiHistory HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:43:21 -0800] "GET /ops/SP/play//view/TWiki/SearchDoesNotWork?rev=r1.2 HTTP/1.1" 200 4072 +64.242.88.10 - - [08/Mar/2004:07:44:53 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.50 HTTP/1.1" 200 42285 +64.242.88.10 - - [08/Mar/2004:07:49:56 -0800] "GET /ops/SP/play//edit/TWiki/RyanFreebern?t=1078701457 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:51:39 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.2 HTTP/1.1" 200 6061 +64.242.88.10 - - [08/Mar/2004:07:53:19 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicEditTemplate HTTP/1.1" 200 7895 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:37 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +mcl02.tnr.on.ca - - [08/Mar/2004:07:53:38 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +64.242.88.10 - - [08/Mar/2004:07:54:30 -0800] "GET /ops/SP/play//edit/Main/Unknown_local_recipient_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:07:56:34 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Web%20*Index[^A-Za-z] HTTP/1.1" 200 4163 +64.242.88.10 - - [08/Mar/2004:08:04:46 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +p5083cd5d.dip0.t-ipconnect.de - - [08/Mar/2004:08:09:32 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +64.242.88.10 - - [08/Mar/2004:08:12:50 -0800] "GET /ops/SP/play//view/TWiki/ChangePassword?rev=r1.6 HTTP/1.1" 200 5181 +64.242.88.10 - - [08/Mar/2004:08:14:15 -0800] "GET /ops/SP/play//edit/TWiki/HaroldGottschalk?t=1078717948 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:08:15:21 -0800] "GET /ops/SP/play//edit/Main/Expand_owner_alias?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:08:17:09 -0800] "GET /ops/SP/play//view/Main/WebIndex?rev=r1.2 HTTP/1.1" 200 45059 +64.242.88.10 - - [08/Mar/2004:08:18:52 -0800] "GET /rfc.jsp HTTP/1.1" 200 3103 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:08:21:00 -0800] "GET / HTTP/1.1" 200 3169 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:08:21:00 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +64.242.88.10 - - [08/Mar/2004:08:21:47 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=RBLs%20*How%20*To[^A-Za-z] HTTP/1.1" 200 3575 +64.242.88.10 - - [08/Mar/2004:08:25:37 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicEditTemplate?rev1=1.5&rev2=1.4 HTTP/1.1" 200 4212 +212.92.37.62 - - [08/Mar/2004:08:26:41 -0800] "GET / HTTP/1.1" 200 3169 +212.92.37.62 - - [08/Mar/2004:08:27:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +212.92.37.62 - - [08/Mar/2004:08:27:08 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:08:27:14 -0800] "GET /ops/SP/play//rdiff/Main/SpamAssassin HTTP/1.1" 200 4445 +212.92.37.62 - - [08/Mar/2004:08:27:23 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +212.92.37.62 - - [08/Mar/2004:08:27:28 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:08:28:23 -0800] "GET /ops/SP/play//rdiff/Main/TokyoOffice?rev1=1.2&rev2=1.1 HTTP/1.1" 200 7316 +64.242.88.10 - - [08/Mar/2004:08:29:36 -0800] "GET /ops/SP/play//view/TWiki/TWikiCategoryTable HTTP/1.1" 200 3729 +219.95.17.51 - - [08/Mar/2004:08:29:57 -0800] "GET / HTTP/1.1" 200 3169 +212.92.37.62 - - [08/Mar/2004:08:30:25 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +212.92.37.62 - - [08/Mar/2004:08:31:37 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +10.0.0.176 - - [08/Mar/2004:08:32:24 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:08:32:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [08/Mar/2004:08:32:27 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +212.92.37.62 - - [08/Mar/2004:08:32:34 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +212.92.37.62 - - [08/Mar/2004:08:33:27 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +212.92.37.62 - - [08/Mar/2004:08:33:30 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +212.92.37.62 - - [08/Mar/2004:08:33:39 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +64.242.88.10 - - [08/Mar/2004:08:33:51 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.14 HTTP/1.1" 200 8820 +212.92.37.62 - - [08/Mar/2004:08:33:52 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +212.92.37.62 - - [08/Mar/2004:08:33:57 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +212.92.37.62 - - [08/Mar/2004:08:34:09 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +64.242.88.10 - - [08/Mar/2004:08:34:53 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiHistory?rev1=1.8&rev2=1.7 HTTP/1.1" 200 4972 +64.242.88.10 - - [08/Mar/2004:08:36:05 -0800] "GET /ops/SP/play//view/TWiki/ChangePassword?rev=r1.3 HTTP/1.1" 200 5229 +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +92-moc-6.acn.waw.pl - - [08/Mar/2004:08:37:17 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:08:37:23 -0800] "GET /ops/SP/play//attach/TWiki/HaroldGottschalk HTTP/1.1" 401 12846 +66.213.206.2 - - [08/Mar/2004:08:37:53 -0800] "GET / HTTP/1.1" 200 3169 +64.242.88.10 - - [08/Mar/2004:08:40:15 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +64.242.88.10 - - [08/Mar/2004:08:52:13 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.15 HTTP/1.1" 200 16746 +64.242.88.10 - - [08/Mar/2004:08:53:17 -0800] "GET /ops/SP/play//view/TWiki/TWikiTutorial HTTP/1.1" 200 14485 +64.242.88.10 - - [08/Mar/2004:08:55:12 -0800] "GET /mailman/private/dentalstudies/ HTTP/1.1" 200 1558 +spot.nnacorp.com - - [08/Mar/2004:09:02:14 -0800] "GET / HTTP/1.1" 200 3169 +spot.nnacorp.com - - [08/Mar/2004:09:02:21 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +spot.nnacorp.com - - [08/Mar/2004:09:02:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +10.0.0.176 - - [08/Mar/2004:09:02:29 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:02:31 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7326 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7927 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7182 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8866 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9307 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6805 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:09:02:32 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +spot.nnacorp.com - - [08/Mar/2004:09:02:54 -0800] "GET /ops/SP/play//view/Main/TWikiUsers HTTP/1.1" 200 6697 +spot.nnacorp.com - - [08/Mar/2004:09:02:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +64.242.88.10 - - [08/Mar/2004:09:03:18 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +64.242.88.10 - - [08/Mar/2004:09:05:54 -0800] "GET /ops/SP/play//edit/Sandbox/TestTopic6?topicparent=Sandbox.WebHome HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:09:55 -0800] "GET /ops/SP/play//view/TWiki/TablePlugin?skin=print HTTP/1.1" 200 1572 +64.242.88.10 - - [08/Mar/2004:09:12:54 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Spam%20*Assassin[^A-Za-z] HTTP/1.1" 200 8782 +lhr003a.dhl.com - - [08/Mar/2004:09:16:26 -0800] "GET / HTTP/1.0" 200 3169 +lhr003a.dhl.com - - [08/Mar/2004:09:17:16 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3040 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2341 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2271 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3302 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1663 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2521 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1918 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1580 +lhr003a.dhl.com - - [08/Mar/2004:09:17:17 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2202 +lhr003a.dhl.com - - [08/Mar/2004:09:17:18 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1822 +lhr003a.dhl.com - - [08/Mar/2004:09:17:18 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1526 +10.0.0.176 - - [08/Mar/2004:09:18:53 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:18:56 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3040 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2271 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2341 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3302 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1580 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1918 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1663 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2202 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2521 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1822 +10.0.0.176 - - [08/Mar/2004:09:18:57 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1526 +64.242.88.10 - - [08/Mar/2004:09:23:03 -0800] "GET /ops/SP/play//view/TWiki/SearchDoesNotWork?rev=r1.1 HTTP/1.1" 200 3981 +64.242.88.10 - - [08/Mar/2004:09:25:42 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=TWiki%20*FAQ[^A-Za-z] HTTP/1.1" 200 12083 +lj1036.passgo.com - - [08/Mar/2004:09:29:35 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1027.passgo.com - - [08/Mar/2004:09:29:36 -0800] "GET /ops/SP/play//oops/Know/WinDoze95Crash HTTP/1.0" 200 209 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:10 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:11 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +pool-68-160-195-60.ny325.east.verizon.net - - [08/Mar/2004:09:30:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +64.242.88.10 - - [08/Mar/2004:09:30:40 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=r1.10 HTTP/1.1" 200 9419 +64.242.88.10 - - [08/Mar/2004:09:32:32 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiDownload HTTP/1.1" 200 5933 +64.242.88.10 - - [08/Mar/2004:09:33:46 -0800] "GET /ops/SP/play//view/Main/SideBar?rev=1.1 HTTP/1.1" 200 3564 +lj1156.passgo.com - - [08/Mar/2004:09:33:53 -0800] "GET /ops/SP/play//oops/TWiki/TWikiAccessControl HTTP/1.0" 200 209 +64.242.88.10 - - [08/Mar/2004:09:34:58 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiFAQ HTTP/1.1" 200 43115 +64.242.88.10 - - [08/Mar/2004:09:36:35 -0800] "GET /ops/SP/play//edit/TWiki/WebNotification?topicparent=TWiki.TWikiUpgradeTo01May2000 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:38:11 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=r1.3 HTTP/1.1" 200 4604 +lj1156.passgo.com - - [08/Mar/2004:09:40:30 -0800] "GET /ops/SP/play//view/TWiki/d43 HTTP/1.0" 200 4619 +64.242.88.10 - - [08/Mar/2004:09:41:15 -0800] "GET /ops/SP/play//edit/Main/Export_environment?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:09:42:27 -0800] "GET /ops/SP/play//rdiff/Know/ReadmeFirst?rev1=1.6&rev2=1.5 HTTP/1.1" 200 4187 +64.242.88.10 - - [08/Mar/2004:09:45:15 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Change%20*Password[^A-Za-z] HTTP/1.1" 200 7226 +64.242.88.10 - - [08/Mar/2004:10:01:06 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.4 HTTP/1.1" 200 5171 +64.242.88.10 - - [08/Mar/2004:10:05:40 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=r1.9 HTTP/1.1" 200 9469 +lj1164.passgo.com - - [08/Mar/2004:10:06:28 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.0" 200 5383 +64.242.88.10 - - [08/Mar/2004:10:08:02 -0800] "GET /ops/SP/play//rename/TWiki/DefaultPlugin HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:10:09:52 -0800] "GET /ops/SP/play//view/Main/TWikiGuest?rev=r1.1 HTTP/1.1" 200 3763 +64.242.88.10 - - [08/Mar/2004:10:14:46 -0800] "GET /ops/SP/play//edit/TWiki/TWikiRegistration?t=1078670224 HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:10:16:52 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup?rev=1.6 HTTP/1.1" 200 4462 +64.242.88.10 - - [08/Mar/2004:10:18:21 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiSyntax HTTP/1.1" 200 59454 +64.242.88.10 - - [08/Mar/2004:10:21:21 -0800] "GET /ops/SP/play//oops/TWiki/WikiCulture?template=oopsmore¶m1=1.8¶m2=1.8 HTTP/1.1" 200 11245 +64.242.88.10 - - [08/Mar/2004:10:30:56 -0800] "GET /ops/SP/play//view/TWiki/WikiTopic HTTP/1.1" 200 4646 +64.242.88.10 - - [08/Mar/2004:10:32:18 -0800] "GET /ops/SP/play//rdiff/TWiki/WebPreferences HTTP/1.1" 200 36410 +64.242.88.10 - - [08/Mar/2004:10:34:55 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?skin=print HTTP/1.1" 200 7196 +64.242.88.10 - - [08/Mar/2004:10:40:09 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.7 HTTP/1.1" 200 8540 +64.242.88.10 - - [08/Mar/2004:10:45:25 -0800] "GET /ops/SP/play//search/Main/SearchResult?scope=text®ex=on&search=Thanadon%20*Somdee[^A-Za-z] HTTP/1.1" 200 4287 +64.242.88.10 - - [08/Mar/2004:10:46:34 -0800] "GET /ops/SP/play//view/TWiki/TWikiUpgradeTo01May2000?rev=1.3 HTTP/1.1" 200 7441 +10.0.0.176 - - [08/Mar/2004:10:48:02 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:10:48:05 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7213 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7970 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7254 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8821 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:10:48:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:10:48:19 -0800] "GET /ops/SP/play//edit/Main/Max_use?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3080 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2224 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3299 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2481 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1667 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2346 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1872 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1585 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2202 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1833 +10.0.0.176 - - [08/Mar/2004:10:48:37 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1521 +64.242.88.10 - - [08/Mar/2004:10:50:05 -0800] "GET /ops/SP/play//rdiff/TWiki/WebRss HTTP/1.1" 200 21483 +64.242.88.10 - - [08/Mar/2004:11:03:34 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiCulture?rev1=1.8&rev2=1.7 HTTP/1.1" 200 5326 +128.227.88.79 - - [08/Mar/2004:11:06:20 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +128.227.88.79 - - [08/Mar/2004:11:06:20 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +128.227.88.79 - - [08/Mar/2004:11:06:28 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +64.242.88.10 - - [08/Mar/2004:11:09:24 -0800] "GET /ops/SP/play//edit/Main/Lmtp_mail_timeout?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +128.227.88.79 - - [08/Mar/2004:11:10:09 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:11:10:24 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +128.227.88.79 - - [08/Mar/2004:11:11:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +128.227.88.79 - - [08/Mar/2004:11:11:10 -0800] "GET /ops/SP/play//view/Main/TWikiGroups HTTP/1.1" 200 4816 +128.227.88.79 - - [08/Mar/2004:11:11:15 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.1" 200 4175 +128.227.88.79 - - [08/Mar/2004:11:11:26 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +64.242.88.10 - - [08/Mar/2004:11:11:51 -0800] "GET /ops/SP/play//edit/Main/TWikiGuest?t=1078713282 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:15:51 -0800] "GET /ops/SP/play//rdiff/TWiki/AdminSkillsAssumptions HTTP/1.1" 200 10368 +64.242.88.10 - - [08/Mar/2004:11:17:49 -0800] "GET /ops/SP/play//view/Sandbox/WebHome?rev=r1.3 HTTP/1.1" 200 8708 +64.242.88.10 - - [08/Mar/2004:11:19:43 -0800] "GET /ops/SP/play//edit/TWiki/WikiNotation?t=1078726052 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:24:12 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Wiki%20*Notation[^A-Za-z] HTTP/1.1" 200 6558 +64.242.88.10 - - [08/Mar/2004:11:25:16 -0800] "GET /ops/SP/play//oops/TWiki/WikiNotation?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 11263 +10.0.0.176 - - [08/Mar/2004:11:40:41 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7226 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8055 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8787 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7088 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:11:40:42 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:11:41:14 -0800] "GET /mailman/admin/artsscience HTTP/1.1" 200 2125 +64.242.88.10 - - [08/Mar/2004:11:43:17 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^d HTTP/1.1" 200 5036 +64.242.88.10 - - [08/Mar/2004:11:45:08 -0800] "GET /ops/SP/play//edit/TWiki/TWikiCodevFeatureToDo?topicparent=TWiki.TWikiHistory HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:47:52 -0800] "GET /ops/SP/play//rename/TWiki/ResetPassword HTTP/1.1" 401 12851 +64.242.88.10 - - [08/Mar/2004:11:49:23 -0800] "GET /ops/SP/play//edit/Main/Fast_flush_domains?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:51:20 -0800] "GET /ops/SP/play//edit/Main/SpamAssassin?t=1078709979 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:11:56:19 -0800] "GET /ops/SP/play//view/TWiki/TWikiTopics?rev=r1.10 HTTP/1.1" 200 14650 +64.242.88.10 - - [08/Mar/2004:11:57:28 -0800] "GET /ops/SP/play//view/TWiki/FileAttribute?rev=r1.2 HTTP/1.1" 200 3949 +64.242.88.10 - - [08/Mar/2004:12:00:26 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiEnhancementRequests HTTP/1.1" 200 10417 +64.242.88.10 - - [08/Mar/2004:12:06:03 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Kevin%20*Kinnell[^A-Za-z] HTTP/1.1" 200 4536 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 7192 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8081 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 9065 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7206 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9312 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6866 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6596 +10.0.0.176 - - [08/Mar/2004:12:06:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5499 +64.242.88.10 - - [08/Mar/2004:12:07:13 -0800] "GET /ops/SP/play//view/TWiki/FileAttribute?rev=1.2 HTTP/1.1" 200 3949 +64.242.88.10 - - [08/Mar/2004:12:08:32 -0800] "GET /ops/SP/play//view/TWiki/WikiNotation?skin=print HTTP/1.1" 200 1435 +64.242.88.10 - - [08/Mar/2004:12:10:39 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiPlannedFeatures HTTP/1.1" 200 10577 +64.242.88.10 - - [08/Mar/2004:12:12:50 -0800] "GET /mailman/admin/deans HTTP/1.1" 200 2080 +64.242.88.10 - - [08/Mar/2004:12:15:36 -0800] "GET /pipermail/webber/ HTTP/1.1" 200 1161 +64.242.88.10 - - [08/Mar/2004:12:20:18 -0800] "GET /ops/SP/play//view/Main/PostSuper?rev=1.1 HTTP/1.1" 200 3629 +64.242.88.10 - - [08/Mar/2004:12:25:47 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=1.13 HTTP/1.1" 200 8770 +64.242.88.10 - - [08/Mar/2004:12:28:09 -0800] "GET /ops/SP/play//edit/Main/Mailq_path?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:12:31:32 -0800] "GET /ops/SP/play//view/TWiki/WebHome?rev=r1.49 HTTP/1.1" 200 12993 +64.242.88.10 - - [08/Mar/2004:12:33:09 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.49 HTTP/1.1" 200 42243 +64.242.88.10 - - [08/Mar/2004:12:39:34 -0800] "GET /ops/SP/play//rdiff/TWiki/TWikiDocGraphics?rev1=1.11&rev2=1.10 HTTP/1.1" 200 6551 +64.242.88.10 - - [08/Mar/2004:12:40:36 -0800] "GET /ops/SP/play//view/TWiki/WebHome?rev=r1.47 HTTP/1.1" 200 12819 +64.242.88.10 - - [08/Mar/2004:12:42:04 -0800] "GET /ops/SP/play//view/Sandbox/WebStatistics HTTP/1.1" 200 6063 +64.242.88.10 - - [08/Mar/2004:12:43:08 -0800] "GET /pipermail/gisgrad/ HTTP/1.1" 200 1118 +64.242.88.10 - - [08/Mar/2004:12:45:13 -0800] "GET /mailman/admin/webber HTTP/1.1" 200 2089 +64.242.88.10 - - [08/Mar/2004:12:47:42 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=1.14 HTTP/1.1" 200 8820 +64.242.88.10 - - [08/Mar/2004:12:55:18 -0800] "GET /ops/SP/play//view/TWiki/KevinKinnell?rev=1.4 HTTP/1.1" 200 3730 +64.242.88.10 - - [08/Mar/2004:12:58:39 -0800] "GET /ops/SP/play//search/Main/?search=\\.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on&limit=800 HTTP/1.1" 200 43915 +market-mail.panduit.com - - [08/Mar/2004:12:58:50 -0800] "GET / HTTP/1.0" 200 3169 +market-mail.panduit.com - - [08/Mar/2004:12:58:50 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +market-mail.panduit.com - - [08/Mar/2004:12:59:18 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +market-mail.panduit.com - - [08/Mar/2004:12:59:34 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3095 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2272 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3279 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2349 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1659 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2542 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1927 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1580 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2201 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1829 +market-mail.panduit.com - - [08/Mar/2004:12:59:37 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1524 +market-mail.panduit.com - - [08/Mar/2004:12:59:55 -0800] "GET /DCC.jsp HTTP/1.0" 200 2878 +market-mail.panduit.com - - [08/Mar/2004:13:00:12 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +market-mail.panduit.com - - [08/Mar/2004:13:00:12 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +market-mail.panduit.com - - [08/Mar/2004:13:00:13 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +market-mail.panduit.com - - [08/Mar/2004:13:00:20 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.0" 200 4377 +market-mail.panduit.com - - [08/Mar/2004:13:00:27 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +64.242.88.10 - - [08/Mar/2004:13:00:40 -0800] "GET /ops/SP/play//oops/TWiki/HaroldGottschalk?template=oopsmore¶m1=1.3¶m2=1.3 HTTP/1.1" 200 11335 +market-mail.panduit.com - - [08/Mar/2004:13:01:27 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +market-mail.panduit.com - - [08/Mar/2004:13:01:29 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.0" 200 4154 +market-mail.panduit.com - - [08/Mar/2004:13:01:35 -0800] "GET /ops/SP/play//edit/Main/PostConf?topicparent=Main.PostfixCommands HTTP/1.0" 401 12816 +market-mail.panduit.com - - [08/Mar/2004:13:01:38 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.0" 200 130 +64.242.88.10 - - [08/Mar/2004:13:01:42 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=John%20*Talintyre[^A-Za-z] HTTP/1.1" 200 8066 +market-mail.panduit.com - - [08/Mar/2004:13:01:42 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.0" 200 3617 +market-mail.panduit.com - - [08/Mar/2004:13:01:55 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.0" 200 4213 +market-mail.panduit.com - - [08/Mar/2004:13:02:03 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.0" 200 4731 +market-mail.panduit.com - - [08/Mar/2004:13:02:16 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.0" 200 4564 +64.242.88.10 - - [08/Mar/2004:13:04:14 -0800] "GET /ops/SP/play//attach/Main/TWikiGuest HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:07:16 -0800] "GET /ops/SP/play//view/Main/NicholasLee?rev=1.1 HTTP/1.1" 200 4456 +64.242.88.10 - - [08/Mar/2004:13:08:17 -0800] "GET /ops/SP/play//attach/TWiki/TWikiDocGraphics?filename=pencil.gif&revInfo=1 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:12:54 -0800] "GET /ops/SP/play//rdiff/TWiki/WebSiteTools?rev1=1.2&rev2=1.1 HTTP/1.1" 200 6640 +64.242.88.10 - - [08/Mar/2004:13:15:03 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.55 HTTP/1.1" 200 44652 +64.242.88.10 - - [08/Mar/2004:13:16:11 -0800] "GET /ops/SP/play//attach/Main/SpamAssassinAndPostFix HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:17:23 -0800] "GET /mailman/private/artsscience/ HTTP/1.1" 200 1552 +64.242.88.10 - - [08/Mar/2004:13:18:57 -0800] "GET /ops/SP/play//search/TWiki/?scope=topic®ex=on&search=^l HTTP/1.1" 200 2937 +64.242.88.10 - - [08/Mar/2004:13:24:49 -0800] "GET /ops/SP/play//rdiff/Main/RelayGateway?rev1=1.3&rev2=1.2 HTTP/1.1" 200 5181 +64.242.88.10 - - [08/Mar/2004:13:29:37 -0800] "GET /ops/SP/play//rdiff/Main/RelayGateway?rev1=1.2&rev2=1.1 HTTP/1.1" 200 6029 +64.242.88.10 - - [08/Mar/2004:13:31:16 -0800] "GET /ops/SP/play//rdiff/TWiki/WikiReferences?rev1=1.2&rev2=1.1 HTTP/1.1" 200 10024 +64.242.88.10 - - [08/Mar/2004:13:32:35 -0800] "GET /ops/SP/play//view/Main/WebPreferences?rev=r1.9 HTTP/1.1" 200 7511 +64.242.88.10 - - [08/Mar/2004:13:35:02 -0800] "GET /ops/SP/play//edit/TWiki/WebSiteTools?t=1078731408 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:36:06 -0800] "GET /ops/SP/play//attach/TWiki/TWikiDocGraphics?filename=viewtopic.gif&revInfo=1 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:38:39 -0800] "GET /ops/SP/play//view/TWiki/SvenDowideit?rev=r1.1 HTTP/1.1" 200 3564 +64.242.88.10 - - [08/Mar/2004:13:45:46 -0800] "GET /ops/SP/play//edit/Main/Ignore_mx_lookup_error?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:48:06 -0800] "GET /ops/SP/play//oops/Main/DCCAndPostFix?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 6602 +64.242.88.10 - - [08/Mar/2004:13:49:47 -0800] "GET /ops/SP/play//view/TWiki/TWikiHistory?rev=r1.54 HTTP/1.1" 200 44644 +64.242.88.10 - - [08/Mar/2004:13:55:51 -0800] "GET /ops/SP/play//edit/Main/Allow_min_user?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:56:52 -0800] "GET /ops/SP/play//edit/TWiki/KevinKinnell?t=1078692967 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:13:57:52 -0800] "GET /pipermail/fcd/ HTTP/1.1" 200 468 +64.242.88.10 - - [08/Mar/2004:13:58:55 -0800] "GET /mailman/listinfo/mgt-157 HTTP/1.1" 200 6189 +64.242.88.10 - - [08/Mar/2004:14:00:08 -0800] "GET /mailman/admin/fcd HTTP/1.1" 200 2060 +64.242.88.10 - - [08/Mar/2004:14:01:36 -0800] "GET /mailman/listinfo/cnc_forestry HTTP/1.1" 200 6159 +64.242.88.10 - - [08/Mar/2004:14:07:26 -0800] "GET /ops/SP/play//edit/Main/Strict_8bitmime?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:11:28 -0800] "GET /ops/SP/play//view/TWiki/WelcomeGuest?rev=r1.19 HTTP/1.1" 200 13997 +64.242.88.10 - - [08/Mar/2004:14:12:49 -0800] "GET /ops/SP/play//view/TWiki/TWikiFAQ?rev=1.11 HTTP/1.1" 200 11950 +64.242.88.10 - - [08/Mar/2004:14:13:51 -0800] "GET /mailman/admin/gisgrad HTTP/1.1" 200 2093 +64.242.88.10 - - [08/Mar/2004:14:15:01 -0800] "GET /mailman/admin/jjec HTTP/1.1" 200 2088 +fw.aub.dk - - [08/Mar/2004:14:16:38 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +fw.aub.dk - - [08/Mar/2004:14:16:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +64.242.88.10 - - [08/Mar/2004:14:23:54 -0800] "GET /ops/SP/play//oops/TWiki/RyanFreebern?template=oopsmore¶m1=1.2¶m2=1.2 HTTP/1.1" 200 11263 +64.242.88.10 - - [08/Mar/2004:14:25:33 -0800] "GET /ops/SP/play//rdiff/TWiki/WebChangesAlert HTTP/1.1" 200 27035 +64.242.88.10 - - [08/Mar/2004:14:26:45 -0800] "GET /ops/SP/play//rdiff/Sandbox/WebTopicList HTTP/1.1" 200 4319 +64.242.88.10 - - [08/Mar/2004:14:27:46 -0800] "GET /ops/SP/play//edit/Main/Virtual_gid_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:28:46 -0800] "GET /ops/SP/play//view/TWiki/NewUserTemplate?skin=print HTTP/1.1" 200 2449 +64.242.88.10 - - [08/Mar/2004:14:33:56 -0800] "GET /mailman/admin HTTP/1.1" 200 6872 +64.242.88.10 - - [08/Mar/2004:14:40:18 -0800] "GET /mailman/admin/ncbnpfaculty HTTP/1.1" 200 2136 +64.242.88.10 - - [08/Mar/2004:14:41:22 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Web%20*Topic%20*List[^A-Za-z] HTTP/1.1" 200 10700 +64.242.88.10 - - [08/Mar/2004:14:42:44 -0800] "GET /ops/SP/play//view/TWiki/WebSearch?rev=1.11 HTTP/1.1" 200 9419 +64.242.88.10 - - [08/Mar/2004:14:43:45 -0800] "GET /ops/SP/play//view/TWiki/MartinCleaver HTTP/1.1" 200 3634 +64.242.88.10 - - [08/Mar/2004:14:52:51 -0800] "GET /ops/SP/play//view/TWiki/WebIndex HTTP/1.1" 200 102154 +64.242.88.10 - - [08/Mar/2004:14:54:56 -0800] "GET /ops/SP/play//edit/Main/TokyoOffice?t=1078706364 HTTP/1.1" 401 12846 +64.242.88.10 - - [08/Mar/2004:14:57:19 -0800] "GET /ops/SP/play//rdiff/Main/SpamAssassinAndPostFix?rev1=1.2&rev2=1.1 HTTP/1.1" 200 5794 +64.242.88.10 - - [08/Mar/2004:14:58:58 -0800] "GET /ops/SP/play//rdiff/TWiki/WhatIsWikiWiki HTTP/1.1" 200 9412 +64.242.88.10 - - [08/Mar/2004:15:00:07 -0800] "GET /ops/SP/play//rdiff/Main/WebChanges?rev1=1.2&rev2=1.1 HTTP/1.1" 200 114220 +64.242.88.10 - - [08/Mar/2004:15:01:12 -0800] "GET /ops/SP/play//rdiff/TWiki/EditDoesNotIncreaseTheRevision HTTP/1.1" 200 6310 +64.242.88.10 - - [08/Mar/2004:15:02:29 -0800] "GET /ops/SP/play//rdiff/TWiki/WebTopicList HTTP/1.1" 200 14591 +64.242.88.10 - - [08/Mar/2004:15:03:49 -0800] "GET /antivirus.jsp HTTP/1.1" 200 3548 +64.242.88.10 - - [08/Mar/2004:15:07:41 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Harold%20*Gottschalk[^A-Za-z] HTTP/1.1" 200 4412 +ip-200-56-225-61-mty.marcatel.net.mx - - [08/Mar/2004:15:15:17 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +64.242.88.10 - - [08/Mar/2004:15:16:14 -0800] "GET /ops/SP/play//view/TWiki/TextFormattingRules?rev=r1.37 HTTP/1.1" 200 28922 +64.242.88.10 - - [08/Mar/2004:15:17:18 -0800] "GET /ops/SP/play//search/Main/?scope=topic®ex=on&search=^f HTTP/1.1" 200 3438 +64.242.88.10 - - [08/Mar/2004:15:19:35 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +c-24-11-14-147.client.comcast.net - - [08/Mar/2004:16:54:47 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +c-24-11-14-147.client.comcast.net - - [08/Mar/2004:16:54:47 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +lj1036.passgo.com - - [08/Mar/2004:17:39:00 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1168.passgo.com - - [08/Mar/2004:17:39:01 -0800] "GET /ops/SP/play//oops/TWiki/TWikiVariables HTTP/1.0" 200 209 +calcite.rhyolite.com - - [08/Mar/2004:18:14:44 -0800] "GET /clients.jsp HTTP/1.1" 200 18767 +acbf6930.ipt.aol.com - - [08/Mar/2004:18:20:44 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +acbf6930.ipt.aol.com - - [08/Mar/2004:18:20:44 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +lj1018.passgo.com - - [08/Mar/2004:18:23:43 -0800] "GET /ops/SP/play//oops/Know/PublicSupported HTTP/1.0" 200 209 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:33 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:35 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:35 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +barrie-ppp108371.sympatico.ca - - [08/Mar/2004:18:39:36 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +px7wh.vc.shawcable.net - - [08/Mar/2004:18:41:16 -0800] "GET /LateEmail.jsp HTTP/1.1" 200 7649 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:39 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:08:52 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +user-0c8hdkf.cable.mindspring.com - - [08/Mar/2004:19:10:06 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.1" 200 4583 +lj1053.passgo.com - - [08/Mar/2004:19:24:42 -0800] "GET /ops/SP/play//oops/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 209 +64.246.94.152 - - [08/Mar/2004:20:09:57 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:18 -0800] "GET / HTTP/1.0" 200 3169 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:18 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:25 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3049 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2160 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2386 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3271 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1687 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:26 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2482 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1914 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1536 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2250 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1883 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:27 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1493 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:48 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:49 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:49 -0800] "GET /favicon.ico HTTP/1.0" 200 1078 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:48:53 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:50:59 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.0" 200 4022 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:51:01 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.0" 200 5672 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:51:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.0" 200 4062 +ip68-228-43-49.tc.ph.cox.net - - [08/Mar/2004:20:52:01 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.0" 200 4062 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:04 -0800] "GET / HTTP/1.0" 200 3169 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:28 -0800] "GET /ststats/index.jsp HTTP/1.0" 200 2955 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3238 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 3032 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2160 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2369 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1671 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2485 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1533 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 1906 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2251 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1875 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:29 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1483 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:44 -0800] "GET /SpamAssassin.jsp HTTP/1.0" 200 7368 +proxy0.haifa.ac.il - - [08/Mar/2004:22:03:52 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:09 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:10 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:24 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.0" 200 4515 +proxy0.haifa.ac.il - - [08/Mar/2004:22:04:35 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +alille-251-1-2-197.w82-124.abo.wanadoo.fr - - [08/Mar/2004:22:30:01 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +a213-84-36-192.adsl.xs4all.nl - - [08/Mar/2004:23:42:55 -0800] "GET / HTTP/1.1" 200 3169 +195.246.13.119 - - [09/Mar/2004:01:48:27 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +195.246.13.119 - - [09/Mar/2004:01:48:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +195.246.13.119 - - [09/Mar/2004:01:48:28 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +195.246.13.119 - - [09/Mar/2004:01:49:53 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +195.246.13.119 - - [09/Mar/2004:01:49:57 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +195.246.13.119 - - [09/Mar/2004:01:50:35 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +195.246.13.119 - - [09/Mar/2004:01:50:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +195.246.13.119 - - [09/Mar/2004:01:51:17 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +195.246.13.119 - - [09/Mar/2004:01:51:41 -0800] "GET /ops/SP/play//edit/Main/RazorAndPostFix?topicparent=Main.WebHome HTTP/1.1" 401 12851 +195.246.13.119 - - [09/Mar/2004:01:51:45 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +195.246.13.119 - - [09/Mar/2004:01:51:54 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +195.246.13.119 - - [09/Mar/2004:01:52:12 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:10 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3068 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2187 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3277 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:17 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2379 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1687 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2592 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1983 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1545 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2222 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1866 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1494 +200-55-104-193.dsl.prima.net.ar - - [09/Mar/2004:02:33:18 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +lj1052.passgo.com - - [09/Mar/2004:02:39:17 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1162.passgo.com - - [09/Mar/2004:02:39:18 -0800] "GET /ops/SP/play//view/Main/SanJoseOffice HTTP/1.0" 200 3884 +lj1162.passgo.com - - [09/Mar/2004:03:10:39 -0800] "GET /ops/SP/play//view/Main/SanJoseOffice HTTP/1.0" 200 3884 +mail.geovariances.fr - - [09/Mar/2004:05:01:53 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +mail.geovariances.fr - - [09/Mar/2004:05:01:53 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +mail.geovariances.fr - - [09/Mar/2004:05:02:11 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +mail.geovariances.fr - - [09/Mar/2004:05:02:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:14 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mail.geovariances.fr - - [09/Mar/2004:05:02:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:19 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +mail.geovariances.fr - - [09/Mar/2004:05:02:19 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:02:27 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +mail.geovariances.fr - - [09/Mar/2004:05:02:28 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:04:09 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +mail.geovariances.fr - - [09/Mar/2004:05:04:09 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:09:30 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +mail.geovariances.fr - - [09/Mar/2004:05:09:31 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:12:45 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:12:45 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /ops/SP/play//view/TWiki/WebHome HTTP/1.1" 200 15182 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot131x64.gif HTTP/1.1" 200 7218 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiDocGraphics/tip.gif HTTP/1.1" 200 123 +mail.geovariances.fr - - [09/Mar/2004:05:13:40 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot88x31.gif HTTP/1.1" 200 3501 +mail.geovariances.fr - - [09/Mar/2004:05:14:13 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.1" 200 8632 +mail.geovariances.fr - - [09/Mar/2004:05:14:14 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +66-194-6-70.gen.twtelecom.net - - [09/Mar/2004:05:20:20 -0800] "GET / HTTP/1.1" 200 3169 +195.230.181.122 - - [09/Mar/2004:06:29:03 -0800] "GET /AmavisNew.jsp HTTP/1.0" 200 2300 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:33:21 -0800] "GET / HTTP/1.1" 200 3169 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:51 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:53 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3027 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:53 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2148 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:54 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3200 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:54 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2341 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:55 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1686 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:55 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2534 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:56 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1948 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:56 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1549 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:57 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2214 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:57 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1873 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:34:58 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1500 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:04 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6708 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:06 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8232 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:09 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8857 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:10 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7175 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:13 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9391 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:13 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6922 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6618 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5615 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:35:42 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:28 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:29 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:36:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:37:00 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +ts04-ip92.hevanet.com - - [09/Mar/2004:06:37:40 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:10 -0800] "GET / HTTP/1.1" 200 3169 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:10 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:44 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:27:59 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:28:05 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:07:28:12 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +207.195.59.160 - - [09/Mar/2004:08:08:35 -0800] "GET / HTTP/1.1" 200 3169 +207.195.59.160 - - [09/Mar/2004:08:08:37 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +207.195.59.160 - - [09/Mar/2004:08:08:38 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +207.195.59.160 - - [09/Mar/2004:08:08:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +207.195.59.160 - - [09/Mar/2004:08:08:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:08:57 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +207.195.59.160 - - [09/Mar/2004:08:09:39 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +207.195.59.160 - - [09/Mar/2004:08:09:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:09:58 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +207.195.59.160 - - [09/Mar/2004:08:09:58 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:10:04 -0800] "GET /ops/SP/play//edit/Main/PostConf?topicparent=Main.PostfixCommands HTTP/1.1" 401 12851 +207.195.59.160 - - [09/Mar/2004:08:10:06 -0800] "GET /go/bin/test/TWikiDocGraphics/help.gif HTTP/1.1" 200 130 +207.195.59.160 - - [09/Mar/2004:08:10:12 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +207.195.59.160 - - [09/Mar/2004:08:10:12 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +207.195.59.160 - - [09/Mar/2004:08:10:20 -0800] "GET /ops/SP/play//view/Main/Relay_Domains HTTP/1.1" 200 4583 +fw1.millardref.com - - [09/Mar/2004:08:17:27 -0800] "GET / HTTP/1.1" 200 3169 +207.195.59.160 - - [09/Mar/2004:08:17:34 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +fw1.millardref.com - - [09/Mar/2004:08:17:50 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +207.195.59.160 - - [09/Mar/2004:08:18:17 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +207.195.59.160 - - [09/Mar/2004:08:18:17 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +fw1.millardref.com - - [09/Mar/2004:08:18:19 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +fw1.millardref.com - - [09/Mar/2004:08:18:25 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +fw1.millardref.com - - [09/Mar/2004:08:18:26 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +fw1.millardref.com - - [09/Mar/2004:08:18:27 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +fw1.millardref.com - - [09/Mar/2004:08:18:27 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +207.195.59.160 - - [09/Mar/2004:08:18:50 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +207.195.59.160 - - [09/Mar/2004:08:19:04 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +lj1007.passgo.com - - [09/Mar/2004:09:55:44 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1125.passgo.com - - [09/Mar/2004:09:55:53 -0800] "GET /ops/SP/play//oops/TWiki/WebChangesAlert HTTP/1.0" 200 209 +80.58.35.111.proxycache.rima-tde.net - - [09/Mar/2004:10:08:07 -0800] "GET /RBL.jsp HTTP/1.0" 200 4114 +10.0.0.176 - - [09/Mar/2004:10:29:38 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [09/Mar/2004:10:29:40 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8830 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7255 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6703 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7127 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6856 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6618 +10.0.0.176 - - [09/Mar/2004:10:29:41 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5615 +200.222.33.33 - - [09/Mar/2004:11:21:36 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:54 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +1-320.tnr.on.ca - - [09/Mar/2004:11:43:56 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +l07v-1-17.d1.club-internet.fr - - [09/Mar/2004:11:57:20 -0800] "GET / HTTP/1.1" 200 3169 +wwwcache.lanl.gov - - [09/Mar/2004:12:16:06 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:08 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:09 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:09 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +trrc02m01-40.bctel.ca - - [09/Mar/2004:12:21:10 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +fw.kcm.org - - [09/Mar/2004:12:21:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +fw.kcm.org - - [09/Mar/2004:12:21:49 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1048.passgo.com - - [09/Mar/2004:12:52:21 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1031.passgo.com - - [09/Mar/2004:12:52:58 -0800] "GET /ops/SP/play//oops/TWiki/InterwikiPlugin HTTP/1.0" 200 209 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:14:53 -0800] "GET / HTTP/1.1" 200 3169 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:15 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:15 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:23 -0800] "GET /ops/SP/play//view/Main/SpamAssassin HTTP/1.1" 200 4081 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:33 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:15:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +c-24-20-163-223.client.comcast.net - - [09/Mar/2004:13:16:00 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +h194n2fls308o1033.telia.com - - [09/Mar/2004:13:49:05 -0800] "-" 408 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:02 -0800] "GET /mailman HTTP/1.1" 302 301 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:03 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:04 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:05 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:05 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:14:43:12 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:15 -0800] "GET / HTTP/1.1" 200 3169 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:23 -0800] "GET /mailman HTTP/1.1" 302 301 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:23 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:24 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:50:28 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +jacksonproject.tnr.on.ca - - [09/Mar/2004:14:56:15 -0800] "GET / HTTP/1.1" 304 - +home.yeungs.net - - [09/Mar/2004:15:03:55 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +203.147.138.233 - - [09/Mar/2004:15:25:03 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +203.147.138.233 - - [09/Mar/2004:15:25:05 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +203.147.138.233 - - [09/Mar/2004:15:25:14 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3041 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1695 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2577 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3203 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1970 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2181 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1550 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2314 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1850 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2213 +203.147.138.233 - - [09/Mar/2004:15:25:15 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1509 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:35 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:37:36 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:52 -0800] "GET / HTTP/1.1" 200 3169 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:52 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +208-38-57-205.ip.cal.radiant.net - - [09/Mar/2004:15:44:57 -0800] "GET /rejected.jsp HTTP/1.1" 200 3998 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:51:10 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:51:24 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 2182 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:52:09 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 2182 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:52:15 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:40 -0800] "GET /mailman/admin/ppwc/logout HTTP/1.1" 200 2103 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:49 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [09/Mar/2004:15:53:56 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1123.passgo.com - - [09/Mar/2004:16:23:55 -0800] "GET /ops/SP/play//oops/TWiki/RegularExp HTTP/1.0" 200 209 +206-15-133-153.dialup.ziplink.net - - [09/Mar/2004:16:27:48 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +lj1048.passgo.com - - [09/Mar/2004:17:10:26 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1061.passgo.com - - [09/Mar/2004:17:10:28 -0800] "GET /ops/SP/play//oops/TWiki/TablePlugin HTTP/1.0" 200 209 +korell2.cc.gatech.edu - - [09/Mar/2004:17:33:58 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:41 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:42 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:42:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:43:54 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +65-37-13-251.nrp2.roc.ny.frontiernet.net - - [09/Mar/2004:17:45:02 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.1" 200 8632 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:43 -0800] "GET /mailman/admin HTTP/1.1" 200 6872 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:00:44 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:11 -0800] "GET /mailman/admin/webct HTTP/1.1" 200 2080 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:24 -0800] "GET /mailman HTTP/1.1" 302 301 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:25 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:28 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:01:45 -0800] "GET /mailman/listinfo/cnc_notice HTTP/1.1" 200 6337 +cpe-203-51-137-224.vic.bigpond.net.au - - [09/Mar/2004:18:02:07 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +grandpa.mmlc.northwestern.edu - - [09/Mar/2004:18:06:27 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +grandpa.mmlc.northwestern.edu - - [09/Mar/2004:18:06:27 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:23:32 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:23:32 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:25:15 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:25:18 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +calcite.rhyolite.com - - [09/Mar/2004:20:34:55 -0800] "GET /clients.jsp HTTP/1.1" 200 18892 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:43 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:48 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +mth-fgw.ballarat.edu.au - - [09/Mar/2004:20:45:51 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +2-238.tnr.on.ca - - [09/Mar/2004:21:33:22 -0800] "GET / HTTP/1.1" 200 3169 +lj1048.passgo.com - - [09/Mar/2004:21:51:09 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1153.passgo.com - - [09/Mar/2004:21:51:16 -0800] "GET /ops/SP/play//oops/Main/ThanadonSomdee HTTP/1.0" 200 209 +mmscrm07-2.uah.goweb.net - - [09/Mar/2004:22:23:39 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1036.passgo.com - - [09/Mar/2004:22:31:21 -0800] "GET /ops/SP/play//oops/Know/TopicClassification HTTP/1.0" 200 209 +adsl-157-26-153.msy.bellsouth.net - - [09/Mar/2004:22:40:32 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +adsl-157-26-153.msy.bellsouth.net - - [09/Mar/2004:22:40:33 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1164.passgo.com - - [09/Mar/2004:22:44:31 -0800] "GET /ops/SP/play//oops/TWiki/TextFormattingRules HTTP/1.0" 200 209 +66-194-6-79.gen.twtelecom.net - - [09/Mar/2004:23:36:11 -0800] "GET / HTTP/1.1" 200 3169 +lj1231.passgo.com - - [10/Mar/2004:00:21:51 -0800] "GET /ops/SP/play//oops/Main/TWikiUsers HTTP/1.0" 200 209 +212.21.228.26 - - [10/Mar/2004:00:24:58 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /mailman/listinfo/cncce HTTP/1.1" 200 6208 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:44 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +yongsan-cache.korea.army.mil - - [10/Mar/2004:00:29:45 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +pd9e761cf.dip.t-dialin.net - - [10/Mar/2004:02:07:27 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +lj1048.passgo.com - - [10/Mar/2004:02:31:33 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1160.passgo.com - - [10/Mar/2004:02:31:44 -0800] "GET /razor.jsp HTTP/1.0" 304 - +nb-bolz.cremona.polimi.it - - [10/Mar/2004:02:52:49 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +pc-030-040.eco.rug.nl - - [10/Mar/2004:02:55:00 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:40 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:50 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:11:53 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:07 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:20 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:33 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:45 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:48 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:12:56 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:14:40 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:14:54 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:15:28 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +pc3-registry-stockholm.telia.net - - [10/Mar/2004:03:15:33 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:49 -0800] "GET /mailman/listinfo/fnac HTTP/1.0" 200 5969 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:51 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:51 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +80.58.14.235.proxycache.rima-tde.net - - [10/Mar/2004:03:52:52 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +66-194-6-70.gen.twtelecom.net - - [10/Mar/2004:05:21:38 -0800] "GET / HTTP/1.1" 200 3169 +pd9e50809.dip.t-dialin.net - - [10/Mar/2004:07:36:56 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +10.0.0.176 - - [10/Mar/2004:08:36:28 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:08:36:30 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 7783 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8845 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6274 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7071 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9328 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6976 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +10.0.0.176 - - [10/Mar/2004:08:36:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +10.0.0.176 - - [10/Mar/2004:08:36:57 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3020 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2287 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2332 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1673 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2583 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 1976 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3364 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2220 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1627 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1837 +10.0.0.176 - - [10/Mar/2004:08:36:58 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1528 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:51:31 -0800] "GET / HTTP/1.1" 304 - +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:13 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:16 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:25 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.1" 200 5253 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:52:52 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:12 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:19 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:53:33 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:54:15 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.1" 200 58292 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:54:37 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:03 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:17 -0800] "GET /ops/SP/play//view/Main/VerifingGatway HTTP/1.1" 200 4750 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:40 -0800] "GET /ops/SP/play//view/Main/KevinWGagel HTTP/1.1" 200 4901 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:55:49 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:56:10 -0800] "GET /ops/SP/play//view/Main/SideBar HTTP/1.1" 200 3972 +ts05-ip44.hevanet.com - - [10/Mar/2004:08:56:13 -0800] "GET /ops/SP/play//view/Main/DCCGraphs HTTP/1.1" 200 5402 +lj1048.passgo.com - - [10/Mar/2004:09:05:59 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1145.passgo.com - - [10/Mar/2004:09:05:59 -0800] "GET /ops/SP/play//oops/TWiki/MoveTopic HTTP/1.0" 200 209 +cacher2-ext.wise.edt.ericsson.se - - [10/Mar/2004:09:41:56 -0800] "GET /razor.jsp HTTP/1.0" 200 2869 +adsl-64-173-42-65.dsl.snfc21.pacbell.net - - [10/Mar/2004:10:37:53 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +ic8234.upco.es - - [10/Mar/2004:10:38:04 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ic8234.upco.es - - [10/Mar/2004:10:38:05 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ic8234.upco.es - - [10/Mar/2004:10:38:23 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ic8234.upco.es - - [10/Mar/2004:10:38:27 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ns.mou.cz - - [10/Mar/2004:10:59:06 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:12:51 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1117.passgo.com - - [10/Mar/2004:11:13:21 -0800] "GET /ops/SP/play//view/Know/WebStatistics HTTP/1.0" 200 6394 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:18:59 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:00 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:19:32 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:25 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:41:52 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:43:26 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:13 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:27 -0800] "GET /mailman/admin/ppwc/members?letter=n HTTP/1.1" 200 15131 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:44:44 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24507 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:22 -0800] "GET /mailman/admin/ppwc/passwords HTTP/1.1" 200 6217 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:51 -0800] "GET /mailman/admin/ppwc/gateway HTTP/1.1" 200 0 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:45:51 -0800] "GET /mailman/admin/ppwc/gateway HTTP/1.1" 200 8692 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:46:42 -0800] "GET /mailman/admin/ppwc/general HTTP/1.1" 200 19597 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:47:37 -0800] "GET /mailman/admin/ppwc/?VARHELP=general/owner HTTP/1.1" 200 3505 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:49:57 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:50:28 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:50:35 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:52:14 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +h24-71-236-129.ca.clawio.org - - [10/Mar/2004:11:52:42 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +10.0.0.176 - - [10/Mar/2004:12:02:38 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:43 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [10/Mar/2004:12:02:43 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:45 -0800] "GET /mailman HTTP/1.1" 302 301 +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:46 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:50 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 2082 +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:52 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:02:59 -0800] "POST /mailman/admin/ppwc HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:00 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:03 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:04 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24507 +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:08 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /mailman/options/ppwc/ppwctwentynine--at--shaw.com HTTP/1.1" 200 14296 +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:03:45 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "POST /mailman/options/ppwc/ppwctwentynine@shaw.com HTTP/1.1" 200 14579 +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:06 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /mailman/admin/ppwc HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:22 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:38 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24525 +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:40 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "POST /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 23169 +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:54 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /mailman/admin/ppwc/general HTTP/1.1" 200 19597 +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:05:58 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /mailman/admin/ppwc/members HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:07 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /mailman/admin/ppwc/members/add HTTP/1.1" 200 6681 +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:06:09 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "POST /mailman/admin/ppwc/members/add HTTP/1.1" 200 6762 +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:07 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:08 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /mailman/admin/ppwc/members/list HTTP/1.1" 200 15271 +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:12 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:13 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:14 -0800] "GET /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24585 +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "POST /mailman/admin/ppwc/members?letter=p HTTP/1.1" 200 24577 +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:07:25 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /mailman/admin/ppwc/logout HTTP/1.1" 200 2103 +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:16:59 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:02 -0800] "GET / HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:05 -0800] "GET /mailman HTTP/1.1" 302 301 +142.27.64.35 - - [10/Mar/2004:12:19:05 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:06 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +142.27.64.35 - - [10/Mar/2004:12:19:08 -0800] "GET /mailman/listinfo/ppwc HTTP/1.1" 200 6271 +lj1216.passgo.com - - [10/Mar/2004:12:22:32 -0800] "GET /ops/SP/play//oops/TWiki/WikiTopic HTTP/1.0" 200 209 +10.0.0.176 - - [10/Mar/2004:12:25:25 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:12:25:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 8663 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6392 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7133 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 9449 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6895 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9403 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +10.0.0.176 - - [10/Mar/2004:12:25:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +c-411472d5.04-138-73746f22.cust.bredbandsbolaget.se - - [10/Mar/2004:13:13:23 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +3_343_lt_someone - - [10/Mar/2004:13:15:44 -0800] "GET / HTTP/1.1" 200 3169 +3_343_lt_someone - - [10/Mar/2004:13:15:53 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7142 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5882 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6485 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8673 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6895 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9403 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +3_343_lt_someone - - [10/Mar/2004:13:15:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +watchguard.cgmatane.qc.ca - - [10/Mar/2004:13:41:37 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +watchguard.cgmatane.qc.ca - - [10/Mar/2004:13:42:23 -0800] "GET /RBL.jsp HTTP/1.1" 200 4114 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:20:51 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:21:36 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ppp2.p33.is.com.ua - - [10/Mar/2004:14:22:13 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +10.0.0.176 - - [10/Mar/2004:15:06:20 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5871 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6484 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 7014 +10.0.0.176 - - [10/Mar/2004:15:06:24 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8821 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9306 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6937 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +10.0.0.176 - - [10/Mar/2004:15:06:25 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +lj1024.passgo.com - - [10/Mar/2004:15:10:10 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1028.passgo.com - - [10/Mar/2004:15:10:13 -0800] "GET /ops/SP/play//oops/Main/T HTTP/1.0" 200 209 +lj1145.passgo.com - - [10/Mar/2004:15:49:55 -0800] "GET /ops/SP/play//oops/TWiki/NicholasLee HTTP/1.0" 200 209 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:29:30 -0800] "GET /pipermail/cnc_notice/2004-February.txt HTTP/1.1" 200 6712 +64.246.94.141 - - [10/Mar/2004:16:31:19 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +pntn02m05-129.bctel.ca - - [10/Mar/2004:16:33:04 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +calcite.rhyolite.com - - [10/Mar/2004:16:47:44 -0800] "GET /clients.jsp HTTP/1.1" 200 18971 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:52:44 -0800] "GET /pipermail/cnc_notice/2003-December.txt HTTP/1.1" 200 6570 +h24-68-45-227.gv.shawcable.net - - [10/Mar/2004:16:54:36 -0800] "GET /pipermail/cnc_notice/2003-December/000002.jsp HTTP/1.1" 200 7074 +lj1117.passgo.com - - [10/Mar/2004:18:13:54 -0800] "GET /ops/SP/play//view/Main/VishaalGolam HTTP/1.0" 200 4577 +lj1073.passgo.com - - [10/Mar/2004:18:17:24 -0800] "GET /ops/SP/play//oops/TWiki/Wik HTTP/1.0" 200 209 +lj1024.passgo.com - - [10/Mar/2004:19:55:54 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1000.passgo.com - - [10/Mar/2004:19:55:56 -0800] "GET /ops/SP/play//view/Know/WebHome HTTP/1.0" 200 7529 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:22:41 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:22:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:11 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:41 -0800] "GET /ops/SP/play//view/Main/TWikiGroups HTTP/1.1" 200 4816 +dialup-5-81.tulane.edu - - [10/Mar/2004:20:23:52 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.1" 200 4175 +lj1145.passgo.com - - [10/Mar/2004:21:56:34 -0800] "GET /ops/SP/play//oops/Main/WebStatistics HTTP/1.0" 200 209 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:58:46 -0800] "GET / HTTP/1.1" 200 3169 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:58:46 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:16 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5664 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:17 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6403 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8837 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6980 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6970 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:21:59:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:03 -0800] "GET /ststats/index.jsp HTTP/1.1" 200 2955 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:04 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3093 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2255 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3419 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2381 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1658 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2657 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2008 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1598 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2223 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1924 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:22:00:05 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1550 +lj1220.passgo.com - - [10/Mar/2004:22:16:58 -0800] "GET /ops/SP/play//oops/TWiki/SvenDowideit HTTP/1.0" 200 209 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5805 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6445 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:30 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8809 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6882 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9241 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6970 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6619 +h24-70-69-74.ca.clawio.org - - [10/Mar/2004:23:08:31 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5517 +lj1024.passgo.com - - [11/Mar/2004:00:07:57 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1117.passgo.com - - [11/Mar/2004:00:07:58 -0800] "GET /ops/SP/play//oops/Know/WebStatistics HTTP/1.0" 200 209 +lj1120.passgo.com - - [11/Mar/2004:00:42:01 -0800] "GET /ops/SP/play//view/Main/DCCAndPostFix HTTP/1.0" 200 5234 +ns3.vonroll.ch - - [11/Mar/2004:00:43:57 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +ns3.vonroll.ch - - [11/Mar/2004:00:43:59 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 +ns3.vonroll.ch - - [11/Mar/2004:00:44:08 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +lj1145.passgo.com - - [11/Mar/2004:01:39:53 -0800] "GET /ops/SP/play//view/Main/SimonMudd HTTP/1.0" 200 4612 +1513.cps.virtua.com.br - - [11/Mar/2004:02:27:39 -0800] "GET /pipermail/cipg/2003-november.txt HTTP/1.1" 404 309 +194.151.73.43 - - [11/Mar/2004:03:35:49 -0800] "GET /ie.htm HTTP/1.0" 200 3518 +194.151.73.43 - - [11/Mar/2004:03:35:57 -0800] "GET /images/image004.jpg HTTP/1.0" 200 10936 +194.151.73.43 - - [11/Mar/2004:03:35:57 -0800] "GET /images/image005.jpg HTTP/1.0" 200 21125 +194.151.73.43 - - [11/Mar/2004:03:35:58 -0800] "GET /images/msgops.JPG HTTP/1.0" 200 7939 +spica.ukc.ac.uk - - [11/Mar/2004:03:50:09 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +spica.ukc.ac.uk - - [11/Mar/2004:03:50:09 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ogw.netinfo.nl - - [11/Mar/2004:06:11:19 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ogw.netinfo.nl - - [11/Mar/2004:06:11:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ogw.netinfo.nl - - [11/Mar/2004:06:11:38 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.1" 200 4016 +ogw.netinfo.nl - - [11/Mar/2004:06:11:39 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:11:46 -0800] "GET /ops/SP/play//view/Main/PostfixCmd HTTP/1.1" 200 4173 +ogw.netinfo.nl - - [11/Mar/2004:06:11:47 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:12:41 -0800] "GET /ops/SP/play//view/Main/PostQueue HTTP/1.1" 200 4280 +ogw.netinfo.nl - - [11/Mar/2004:06:12:43 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:13:07 -0800] "GET /ops/SP/play//view/Main/PostSuper HTTP/1.1" 200 3629 +ogw.netinfo.nl - - [11/Mar/2004:06:13:08 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:14:03 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.1" 200 4665 +ogw.netinfo.nl - - [11/Mar/2004:06:14:04 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:06:16:40 -0800] "GET /ops/SP/play//view/Main/RelayGateway HTTP/1.1" 200 4232 +ogw.netinfo.nl - - [11/Mar/2004:06:17:06 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +ogw.netinfo.nl - - [11/Mar/2004:06:17:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +lj1024.passgo.com - - [11/Mar/2004:06:27:31 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1153.passgo.com - - [11/Mar/2004:06:27:36 -0800] "GET /ops/SP/play//oops/Sandbox/WebStatistics HTTP/1.0" 200 209 +208-186-146-13.nrp3.brv.mn.frontiernet.net - - [11/Mar/2004:06:48:05 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +208-186-146-13.nrp3.brv.mn.frontiernet.net - - [11/Mar/2004:06:48:05 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ladybug.cns.vt.edu - - [11/Mar/2004:07:15:10 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +ladybug.cns.vt.edu - - [11/Mar/2004:07:15:11 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +ladybug.cns.vt.edu - - [11/Mar/2004:07:19:57 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +ladybug.cns.vt.edu - - [11/Mar/2004:07:20:05 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ladybug.cns.vt.edu - - [11/Mar/2004:07:20:09 -0800] "GET /ops/SP/play//view/Main/SpamAssassinTaggingOnly HTTP/1.1" 200 5691 +osdlab.eic.nctu.edu.tw - - [11/Mar/2004:07:39:30 -0800] "GET /M83A HTTP/1.0" 404 269 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /mailman/listinfo/ppwc HTTP/1.0" 200 6252 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/mailman.jpg HTTP/1.0" 200 2022 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/PythonPowered.png HTTP/1.0" 200 945 +208.247.148.12 - - [11/Mar/2004:08:14:18 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.0" 200 3049 +ogw.netinfo.nl - - [11/Mar/2004:08:45:41 -0800] "GET /ops/SP/play//view/Main/SpamAssassinAndPostFix HTTP/1.1" 200 4034 +ogw.netinfo.nl - - [11/Mar/2004:08:45:42 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +ogw.netinfo.nl - - [11/Mar/2004:08:45:49 -0800] "GET /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 5543 +ogw.netinfo.nl - - [11/Mar/2004:08:45:54 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:55:40 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:58:16 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +0x503e4fce.virnxx2.adsl-dhcp.tele.dk - - [11/Mar/2004:10:58:27 -0800] "GET /razor.jsp HTTP/1.1" 304 - +64-93-34-186.client.dsl.net - - [11/Mar/2004:11:12:40 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +d207-6-50-215.bchsia.telus.net - - [11/Mar/2004:11:33:35 -0800] "GET /pipermail/cncce/2004-January/000001.jsp HTTP/1.1" 200 3095 +10.0.0.176 - - [11/Mar/2004:11:49:51 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:11:49:53 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 5622 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6357 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8728 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6791 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9561 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7087 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6427 +10.0.0.176 - - [11/Mar/2004:11:49:54 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5598 +1-729.tnr.on.ca - - [11/Mar/2004:11:54:59 -0800] "GET / HTTP/1.1" 200 3169 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /mailman HTTP/1.1" 302 301 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:22 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:23 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:23 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +1-729.tnr.on.ca - - [11/Mar/2004:11:55:26 -0800] "GET /mailman/listinfo/administration HTTP/1.1" 200 6459 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:50 -0800] "GET /mailman/admindb/ppwc HTTP/1.1" 200 2072 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:50 -0800] "GET /icons/mailman.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:51 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:28:51 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 304 - +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:29:03 -0800] "POST /mailman/admindb/ppwc HTTP/1.1" 200 3407 +h24-71-236-129.ca.clawio.org - - [11/Mar/2004:12:29:27 -0800] "POST /mailman/admindb/ppwc HTTP/1.1" 200 1134 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:56:35 -0800] "GET /robots.txt HTTP/1.0" 200 68 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:56:58 -0800] "GET /ops/SP/play//view/TWiki/WebStatistics HTTP/1.0" 200 8193 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:18 -0800] "GET /ops/SP/play//view/Main/TWikiGuest HTTP/1.0" 200 4430 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:24 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=1.25 HTTP/1.0" 200 9812 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:57:45 -0800] "GET /ops/SP/play//view/Main/WebNotify?rev=r1.6 HTTP/1.0" 200 4300 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:03 -0800] "GET /ops/SP/play//rdiff/TWiki/ManagingTopics?rev1=1.16&rev2=1.15 HTTP/1.0" 200 7912 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:37 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=r1.8 HTTP/1.0" 200 8986 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:58:50 -0800] "GET /ops/SP/play//edit/Main/Max_idle?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:07 -0800] "GET /ops/SP/play//view/Main/WebChanges HTTP/1.0" 200 40430 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:33 -0800] "GET /ops/SP/play//search/TWiki/SearchResult?scope=text®ex=on&search=Appendix%20*File%20*System%5B%5EA-Za-z%5D HTTP/1.0" 200 5794 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:12:59:52 -0800] "GET /ops/SP/play//oops/TWiki/AppendixFileSystem?template=oopsmore¶m1=1.12¶m2=1.12 HTTP/1.0" 200 11355 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:12 -0800] "GET /ops/SP/play//view/TWiki/WebTopicViewTemplate HTTP/1.0" 200 5420 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:47 -0800] "GET /ops/SP/play//rdiff/Main/WebHome HTTP/1.0" 200 69197 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:00:57 -0800] "GET /ops/SP/play//view/TWiki/WebPreferences?rev=r1.9 HTTP/1.0" 200 7875 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:21 -0800] "GET /ops/SP/play//rdiff/Main/ConfigurationVariables?rev1=1.2&rev2=1.1 HTTP/1.0" 200 59549 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:37 -0800] "GET /ops/SP/play//view/Main/AndreaSterbini HTTP/1.0" 200 3891 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:01:58 -0800] "GET /ops/SP/play//rdiff/Main/AndreaSterbini HTTP/1.0" 200 5567 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:02:22 -0800] "GET /ops/SP/play//rdiff/TWiki/WebNotify HTTP/1.0" 200 11733 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:02:42 -0800] "GET /ops/SP/play//rdiff/Main/WebHome?rev1=1.28&rev2=1.27 HTTP/1.0" 200 3577 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:06 -0800] "GET /ops/SP/play//view/Main/WebHome?skin=print HTTP/1.0" 200 8347 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:23 -0800] "GET /ops/SP/play//search/Main/SearchResult?search=%5C.*&scope=topic&order=modified&reverse=on®ex=on&nosearch=on HTTP/1.0" 200 43816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:03:48 -0800] "GET /ops/SP/play//view/TWiki/FormattedSearch HTTP/1.0" 200 20420 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:09 -0800] "GET /ops/SP/play//oops/Main/WebHome?template=oopsmore¶m1=1.28¶m2=1.8 HTTP/1.0" 200 7410 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:30 -0800] "GET /ops/SP/play//edit/TWiki/TextFormattingFAQ?t=1075982736 HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:04:52 -0800] "GET /ops/SP/play//edit/Main/Allow_untrusted_routing?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:13 -0800] "GET /ops/SP/play//edit/Main/Smtp_data_init_timeout?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:33 -0800] "GET /ops/SP/play//view/TWiki/AppendixFileSystem?rev=1.10 HTTP/1.0" 200 34910 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:05:54 -0800] "GET /ops/SP/play//view/Main/AndreaSterbini?rev=r1.1 HTTP/1.0" 200 3732 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:06:17 -0800] "GET /ops/SP/play//view/Know/WebNotify HTTP/1.0" 200 4472 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:06:39 -0800] "GET /ops/SP/play//rdiff/Main/PeterThoeny HTTP/1.0" 200 18859 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:02 -0800] "GET /ops/SP/play//view/Main/WebHome?skin=print&rev=1.25 HTTP/1.0" 200 7762 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:20 -0800] "GET /ops/SP/play//edit/Main/Relayhost?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:07:40 -0800] "GET /ops/SP/play//edit/Main/Unknown_virtual_mailbox_reject_code?topicparent=Main.ConfigurationVariables HTTP/1.0" 401 12816 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:08:03 -0800] "GET /ops/SP/play//view/TWiki/WebPreferences HTTP/1.0" 200 9109 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:08:44 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.0" 200 4377 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:04 -0800] "GET /ops/SP/play//view/Know/WebHome HTTP/1.0" 200 7529 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:21 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.0" 200 4449 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:24 -0800] "GET /ops/SP/play//oops/Main/WebHome?template=oopsmore¶m1=1.28¶m2=1.28 HTTP/1.0" 200 7411 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:09:52 -0800] "GET /ops/SP/play//view/Main/PostfixCommands HTTP/1.0" 200 4004 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:11 -0800] "GET /ops/SP/play//view/TWiki/WebHome HTTP/1.0" 200 15147 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:27 -0800] "GET /ops/SP/play//view/Main/RBLsHowTo HTTP/1.0" 200 4646 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:10:52 -0800] "GET /ops/SP/play//view/Main/WebTopicList HTTP/1.0" 200 7461 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:11:09 -0800] "GET /ops/SP/play//view/Main/WebHome?rev=1.27 HTTP/1.0" 200 10313 +cr020r01-3.uah.goweb.net - - [11/Mar/2004:13:11:41 -0800] "GET /ops/SP/play//view/Main/ConfigurationVariables HTTP/1.0" 200 58169 +4.37.97.186 - - [11/Mar/2004:13:12:54 -0800] "GET /pipermail/webber/2004-January/000000.jsp HTTP/1.1" 200 2446 +12.22.207.235 - - [11/Mar/2004:13:18:15 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +archserve.id.ucsb.edu - - [11/Mar/2004:13:22:32 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +archserve.id.ucsb.edu - - [11/Mar/2004:13:22:32 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:03 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +2-110.tnr.on.ca - - [11/Mar/2004:13:24:04 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/image005.jpg HTTP/1.1" 304 - +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/image004.jpg HTTP/1.1" 304 - +2-110.tnr.on.ca - - [11/Mar/2004:13:26:38 -0800] "GET /images/msgops.JPG HTTP/1.1" 304 - +lj1024.passgo.com - - [11/Mar/2004:13:27:05 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1212.passgo.com - - [11/Mar/2004:13:27:05 -0800] "GET / HTTP/1.0" 200 3169 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:44 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:47 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:47 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +2-110.tnr.on.ca - - [11/Mar/2004:14:14:50 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +favr.go.de - - [11/Mar/2004:14:22:08 -0800] "GET /robots.txt HTTP/1.0" 200 68 +favr.go.de - - [11/Mar/2004:14:22:09 -0800] "GET /ops/SP/play//view/Main/WebSearch HTTP/1.0" 200 9263 +favr.go.de - - [11/Mar/2004:14:26:26 -0800] "GET /ops/SP/play//view/Sandbox/WebHome HTTP/1.0" 200 8605 +favr.go.de - - [11/Mar/2004:14:28:53 -0800] "GET /ops/SP/play//view/Sandbox/WebChanges HTTP/1.0" 200 9622 +favr.go.de - - [11/Mar/2004:14:29:44 -0800] "GET /ops/SP/play//view/Sandbox/WebPreferences HTTP/1.0" 200 8380 +favr.go.de - - [11/Mar/2004:14:29:52 -0800] "GET /ops/SP/play//view/Main/WebStatistics HTTP/1.0" 200 8331 +favr.go.de - - [11/Mar/2004:14:30:51 -0800] "GET /ops/SP/play//view/Main/WebTopicList HTTP/1.0" 200 7461 +favr.go.de - - [11/Mar/2004:14:31:43 -0800] "GET /ops/SP/play//view/Main/WebPreferences HTTP/1.0" 200 8793 +lj1008.passgo.com - - [11/Mar/2004:14:31:48 -0800] "GET /ops/SP/play//oops/TWiki/WikiWikiClones HTTP/1.0" 200 209 +favr.go.de - - [11/Mar/2004:14:33:01 -0800] "GET /ops/SP/play//view/Main/WebNotify HTTP/1.0" 200 4449 +64-249-27-114.client.dsl.net - - [11/Mar/2004:14:53:12 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +pd9eb1396.dip.t-dialin.net - - [11/Mar/2004:15:17:08 -0800] "GET /AmavisNew.jsp HTTP/1.1" 200 2300 +10.0.0.176 - - [11/Mar/2004:15:51:49 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:07 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [11/Mar/2004:15:52:07 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:12 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +10.0.0.176 - - [11/Mar/2004:15:52:12 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:18 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6329 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8771 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6340 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6846 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9523 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 6996 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6427 +10.0.0.176 - - [11/Mar/2004:15:52:19 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5598 +10.0.0.176 - - [11/Mar/2004:15:52:37 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3241 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3327 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2434 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1676 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2029 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1604 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2640 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2251 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1899 +10.0.0.176 - - [11/Mar/2004:15:52:38 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1556 +10.0.0.176 - - [11/Mar/2004:15:52:39 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2243 +lj1105.passgo.com - - [11/Mar/2004:16:02:37 -0800] "GET /ops/SP/play//oops/TWiki/1000 HTTP/1.0" 200 209 +wc01.piwa.pow.fr - - [11/Mar/2004:16:12:59 -0800] "GET /ie.htm HTTP/1.1" 200 3518 +wc01.piwa.pow.fr - - [11/Mar/2004:16:13:02 -0800] "GET /images/image005.jpg HTTP/1.1" 200 21125 +wc01.piwa.pow.fr - - [11/Mar/2004:16:13:02 -0800] "GET /images/msgops.JPG HTTP/1.1" 200 7939 +wc03.mtnk.rnc.net.cable.rogers.com - - [11/Mar/2004:16:13:03 -0800] "GET /images/image004.jpg HTTP/1.1" 200 10936 +206-15-133-154.dialup.ziplink.net - - [11/Mar/2004:16:33:23 -0800] "HEAD /ops/SP/play//view/Main/SpamAssassinDeleting HTTP/1.1" 200 0 +lj1024.passgo.com - - [11/Mar/2004:18:11:39 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1008.passgo.com - - [11/Mar/2004:18:11:40 -0800] "GET /ops/SP/play//oops/Main/Smtpd_recipient_limit HTTP/1.0" 200 209 +ipcorp-c8b07af1.terraempresas.com.br - - [11/Mar/2004:18:31:35 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 +66-194-6-79.gen.twtelecom.net - - [11/Mar/2004:18:57:52 -0800] "GET / HTTP/1.1" 200 3169 +lj1223.passgo.com - - [11/Mar/2004:20:12:24 -0800] "GET /ops/SP/play//view/Main/MikeMannix HTTP/1.0" 200 3674 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:32 -0800] "GET /ststats/ HTTP/1.1" 200 2955 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 3091 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2230 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2388 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:37 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3440 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1659 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2662 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2064 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1624 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2243 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1879 +216-160-111-121.tukw.qwest.net - - [11/Mar/2004:20:49:38 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1575 +lj1073.passgo.com - - [11/Mar/2004:20:59:05 -0800] "GET /ops/SP/play//oops/TWiki/TWikiPlannedFeatures HTTP/1.0" 200 209 +mmscrm07-2.uah.goweb.net - - [11/Mar/2004:23:56:31 -0800] "GET /robots.txt HTTP/1.0" 200 68 +66-194-6-71.gen.twtelecom.net - - [12/Mar/2004:01:30:44 -0800] "GET / HTTP/1.1" 200 3169 +lj1024.passgo.com - - [12/Mar/2004:02:27:29 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1123.passgo.com - - [12/Mar/2004:02:27:32 -0800] "GET /ops/SP/play//view/Sandbox/WebIndex HTTP/1.0" 200 8667 +195.11.231.210 - - [12/Mar/2004:03:32:56 -0800] "GET /mailman/listinfo/webber HTTP/1.0" 200 6032 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:20 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.0" 200 10392 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +80.58.33.42.proxycache.rima-tde.net - - [12/Mar/2004:04:57:56 -0800] "GET /ops/SP/play//view/Main/LinksOfUse HTTP/1.1" 200 4534 +200.100.10.5 - - [12/Mar/2004:04:59:21 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +200.100.10.5 - - [12/Mar/2004:04:59:21 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +lj1115.passgo.com - - [12/Mar/2004:05:03:19 -0800] "GET /ops/SP/play//view/Main/TWikiAdminGroup HTTP/1.0" 200 4156 +lj1008.passgo.com - - [12/Mar/2004:05:19:31 -0800] "GET /ops/SP/play//oops/TWiki/Mana HTTP/1.0" 200 209 +71.134.70.5 - - [12/Mar/2004:05:25:20 -0800] "GET /mailman/listinfo/cncce HTTP/1.1" 200 6208 +71.134.70.5 - - [12/Mar/2004:05:25:24 -0800] "GET /icons/mailman.jpg HTTP/1.1" 200 2022 +71.134.70.5 - - [12/Mar/2004:05:25:24 -0800] "GET /icons/PythonPowered.png HTTP/1.1" 200 945 +71.134.70.5 - - [12/Mar/2004:05:25:25 -0800] "GET /icons/gnu-head-tiny.jpg HTTP/1.1" 200 3049 +200.100.10.5 - - [12/Mar/2004:05:44:35 -0800] "GET /ops/SP/play//view/Main/SpamAssassinUsingRazorAndDCC HTTP/1.1" 200 7435 +200.100.10.5 - - [12/Mar/2004:05:44:35 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +200.100.10.5 - - [12/Mar/2004:05:44:50 -0800] "GET /ops/SP/play//view/Main/DCC HTTP/1.1" 200 4396 +200.100.10.5 - - [12/Mar/2004:05:44:51 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 304 - +200.100.10.5 - - [12/Mar/2004:05:51:36 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 +vlp181.vlp.fi - - [12/Mar/2004:08:33:32 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +lj1024.passgo.com - - [12/Mar/2004:09:12:01 -0800] "GET /robots.txt HTTP/1.0" 200 68 +lj1223.passgo.com - - [12/Mar/2004:09:12:02 -0800] "GET /ops/SP/play//oops/Main/Mi HTTP/1.0" 200 209 +10.0.0.176 - - [12/Mar/2004:11:01:26 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:11:01:28 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6405 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6413 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6952 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8715 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7001 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9514 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6644 +10.0.0.176 - - [12/Mar/2004:11:01:29 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5554 +fassys.org - - [12/Mar/2004:11:16:36 -0800] "GET /ststats/ HTTP/1.0" 200 2955 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.0" 200 2925 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.0" 200 2347 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.0" 200 3431 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.0" 200 2380 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.0" 200 1658 +fassys.org - - [12/Mar/2004:11:16:55 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.0" 200 2685 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.0" 200 2082 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.0" 200 1637 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.0" 200 2211 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.0" 200 1853 +fassys.org - - [12/Mar/2004:11:16:56 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.0" 200 1572 +67.131.107.5 - - [12/Mar/2004:11:39:14 -0800] "GET / HTTP/1.1" 200 3169 +67.131.107.5 - - [12/Mar/2004:11:39:25 -0800] "GET /ops/SP/play//view/Main/WebHome HTTP/1.1" 200 10419 +67.131.107.5 - - [12/Mar/2004:11:39:31 -0800] "GET /go/bin/test/TWikiLogos/twikiRobot46x50.gif HTTP/1.1" 200 2877 +10.0.0.176 - - [12/Mar/2004:12:23:11 -0800] "GET / HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:12:23:17 -0800] "GET /forplus/mailgraph2.cgi HTTP/1.1" 200 2987 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0_err.png HTTP/1.1" 200 6324 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1.png HTTP/1.1" 200 8964 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_0.png HTTP/1.1" 200 6225 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2_err.png HTTP/1.1" 200 7001 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_2.png HTTP/1.1" 200 9514 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_1_err.png HTTP/1.1" 200 6949 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3.png HTTP/1.1" 200 6644 +10.0.0.176 - - [12/Mar/2004:12:23:18 -0800] "GET /forplus/mailgraph.cgi/mailgraph_3_err.png HTTP/1.1" 200 5554 +10.0.0.176 - - [12/Mar/2004:12:23:40 -0800] "GET /ststats/index.jsp HTTP/1.1" 304 - +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1day.png HTTP/1.1" 200 2964 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1day.png HTTP/1.1" 200 2341 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1week.png HTTP/1.1" 200 2346 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1week.png HTTP/1.1" 200 3438 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1week.png HTTP/1.1" 200 1670 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1month.png HTTP/1.1" 200 2651 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1month.png HTTP/1.1" 200 2023 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1month.png HTTP/1.1" 200 1636 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam.1year.png HTTP/1.1" 200 2262 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-spam-ratio.1year.png HTTP/1.1" 200 1906 +10.0.0.176 - - [12/Mar/2004:12:23:41 -0800] "GET /ststats/stats-hashes.1year.png HTTP/1.1" 200 1582 +216.139.185.45 - - [12/Mar/2004:13:04:01 -0800] "GET /mailman/listinfo/webber HTTP/1.1" 200 6051 +pd95f99f2.dip.t-dialin.net - - [12/Mar/2004:13:18:57 -0800] "GET /razor.jsp HTTP/1.1" 200 2869 +d97082.upc-d.chello.nl - - [12/Mar/2004:13:25:45 -0800] "GET /SpamAssassin.jsp HTTP/1.1" 200 7368 From 7ef66d7e838fd4389b43beb93856cb5eebacb4e8 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 23 Sep 2017 15:26:36 +0200 Subject: [PATCH 052/836] refactor rxjava-jdbc --- .../com/baeldung/rxjava/jdbc/Connector.java | 7 +++- .../rxjava/jdbc/AutomapClassTest.java | 14 ++------ .../rxjava/jdbc/AutomapInterfaceTest.java | 13 ++----- .../rxjava/jdbc/BasicQueryTypesTest.java | 35 +++++-------------- .../baeldung/rxjava/jdbc/InsertBlobTest.java | 13 ++----- .../baeldung/rxjava/jdbc/InsertClobTest.java | 10 ++---- .../baeldung/rxjava/jdbc/ReturnKeysTest.java | 16 +++++---- .../baeldung/rxjava/jdbc/TransactionTest.java | 16 +++++---- 8 files changed, 47 insertions(+), 77 deletions(-) diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java index ca241d74c4..290cc9cb3d 100644 --- a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java @@ -1,8 +1,13 @@ package com.baeldung.rxjava.jdbc; +import com.github.davidmoten.rx.jdbc.ConnectionProvider; +import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; + public class Connector { - + public static final String DB_CONNECTION = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; public static final String DB_USER = ""; public static final String DB_PASSWORD = ""; + + public static final ConnectionProvider connectionProvider = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java index e8bca98701..50d4551494 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java @@ -9,28 +9,20 @@ import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; public class AutomapClassTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - - ConnectionProvider cp = null; - Database db = null; + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); Observable create = null; Observable insert1, insert2 = null; @Before public void setup() { - cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - db = Database.from(cp); - create = db.update("CREATE TABLE IF NOT EXISTS MANAGER(id int primary key, name varchar(255))") .count(); insert1 = db.update("INSERT INTO MANAGER(id, name) VALUES(1, 'Alan')") @@ -66,6 +58,6 @@ public class AutomapClassTest { public void close() { db.update("DROP TABLE MANAGER") .dependsOn(create); - cp.close(); + connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java index f636dda155..fc85213b80 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java @@ -16,21 +16,14 @@ import rx.Observable; public class AutomapInterfaceTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - - ConnectionProvider cp = null; - Database db = null; + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); Observable create = null; Observable insert1, insert2 = null; @Before public void setup() { - cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - db = Database.from(cp); - create = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") .count(); insert1 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'Alan')") @@ -66,7 +59,7 @@ public class AutomapInterfaceTest { public void close() { db.update("DROP TABLE EMPLOYEE") .dependsOn(create); - cp.close(); + connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java index 6118e6f127..17d047d42f 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java @@ -17,20 +17,10 @@ import rx.Observable; public class BasicQueryTypesTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); - ConnectionProvider cp = null; - Database db = null; - - Observable create, insert1, insert2, insert3, insert4, insert5, update, delete = null; - - @Before - public void setup() { - cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - db = Database.from(cp); - } + Observable create, insert1, insert2, insert3, update, delete = null; @Test public void whenCreateTableAndInsertRecords_thenCorrect() { @@ -48,36 +38,29 @@ public class BasicQueryTypesTest { insert3 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(3, 'Mike')") .dependsOn(create) .count(); - insert4 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(4, 'Jennifer')") + delete = db.update("DELETE FROM EMPLOYEE WHERE id = 2") .dependsOn(create) .count(); - insert5 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(5, 'George')") - .dependsOn(create) - .count(); - delete = db.update("DELETE FROM EMPLOYEE WHERE id = 5") - .dependsOn(create) - .count(); - List names = db.select("select name from EMPLOYEE where id > ?") - .parameter(2) + List names = db.select("select name from EMPLOYEE where id < ?") + .parameter(3) .dependsOn(create) .dependsOn(insert1) .dependsOn(insert2) .dependsOn(insert3) - .dependsOn(insert4) - .dependsOn(insert5) .dependsOn(update) .dependsOn(delete) .getAs(String.class) .toList() .toBlocking() .single(); - assertEquals(Arrays.asList("Mike", "Jennifer"), names); + + assertEquals(Arrays.asList("Alan"), names); } @After public void close() { db.update("DROP TABLE EMPLOYEE") .dependsOn(create); - cp.close(); + connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java index ced394eccb..d166bdac10 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java @@ -5,28 +5,21 @@ import static org.junit.Assert.assertEquals; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.StringWriter; import java.nio.charset.StandardCharsets; -import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; public class InsertBlobTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - - ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - Database db = Database.from(cp); + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); String expectedDocument = null; String actualDocument = null; @@ -67,6 +60,6 @@ public class InsertBlobTest { public void close() { db.update("DROP TABLE SERVERLOG") .dependsOn(create); - cp.close(); + connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java index 90f798aa43..d49d7edf1a 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java @@ -18,12 +18,8 @@ import rx.Observable; public class InsertClobTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - - ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - Database db = Database.from(cp); + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); String expectedDocument = null; String actualDocument = null; @@ -63,6 +59,6 @@ public class InsertClobTest { public void close() { db.update("DROP TABLE SERVERLOG") .dependsOn(create); - cp.close(); + connectionProvider.close(); } } \ No newline at end of file diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java index d67fe1d4c1..9a2765f03d 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java @@ -2,6 +2,7 @@ package com.baeldung.rxjava.jdbc; import static org.assertj.core.api.Assertions.assertThat; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -13,15 +14,11 @@ import rx.Observable; public class ReturnKeysTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - Observable begin, commit = null; Observable createStatement, insertStatement, updateStatement = null; - ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - Database db = Database.from(cp); + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); @Before public void setup() { @@ -42,4 +39,11 @@ public class ReturnKeysTest { .single(); assertThat(key).isEqualTo(1); } + + @After + public void close() { + db.update("DROP TABLE EMPLOYEE") + .dependsOn(createStatement); + connectionProvider.close(); + } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java index a0076861da..584add4a6e 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java @@ -2,6 +2,7 @@ package com.baeldung.rxjava.jdbc; import static org.junit.Assert.assertEquals; +import org.junit.After; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; @@ -12,15 +13,11 @@ import rx.Observable; public class TransactionTest { - private String DB_CONNECTION = Connector.DB_CONNECTION; - private String DB_USER = Connector.DB_USER; - private String DB_PASSWORD = Connector.DB_PASSWORD; - Observable begin, commit = null; Observable createStatement, insertStatement, updateStatement = null; - ConnectionProvider cp = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); - Database db = Database.from(cp); + ConnectionProvider connectionProvider = Connector.connectionProvider; + Database db = Database.from(connectionProvider); @Test public void whenCommitTransaction_thenRecordUpdated() { @@ -43,4 +40,11 @@ public class TransactionTest { assertEquals("Tom", name); } + + @After + public void close() { + db.update("DROP TABLE EMPLOYEE") + .dependsOn(createStatement); + connectionProvider.close(); + } } From b3edd4bbbaceb82a18093d5f74b473f81b5d4b0a Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 23 Sep 2017 16:09:01 +0200 Subject: [PATCH 053/836] Refactor rxjava-jdbc --- .../com/baeldung/rxjava/jdbc/Connector.java | 10 ++-- .../com/baeldung/rxjava/jdbc/Manager.java | 1 - .../java/com/baeldung/rxjava/jdbc/Utils.java | 4 +- .../rxjava/jdbc/AutomapClassTest.java | 34 ++++++------- .../rxjava/jdbc/AutomapInterfaceTest.java | 33 +++++++------ .../rxjava/jdbc/BasicQueryTypesTest.java | 48 +++++++++---------- .../baeldung/rxjava/jdbc/InsertBlobTest.java | 24 +++++----- .../baeldung/rxjava/jdbc/InsertClobTest.java | 25 +++++----- .../baeldung/rxjava/jdbc/ReturnKeysTest.java | 19 ++++---- .../baeldung/rxjava/jdbc/TransactionTest.java | 23 +++++---- 10 files changed, 107 insertions(+), 114 deletions(-) diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java index 290cc9cb3d..b7416e471a 100644 --- a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Connector.java @@ -3,11 +3,11 @@ package com.baeldung.rxjava.jdbc; import com.github.davidmoten.rx.jdbc.ConnectionProvider; import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; -public class Connector { +class Connector { - public static final String DB_CONNECTION = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; - public static final String DB_USER = ""; - public static final String DB_PASSWORD = ""; + static final String DB_CONNECTION = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; + static final String DB_USER = ""; + static final String DB_PASSWORD = ""; - public static final ConnectionProvider connectionProvider = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); + static final ConnectionProvider connectionProvider = new ConnectionProviderFromUrl(DB_CONNECTION, DB_USER, DB_PASSWORD); } diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java index d2b87fc897..56faa4cae7 100644 --- a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Manager.java @@ -25,5 +25,4 @@ public class Manager { public void setName(String name) { this.name = name; } - } diff --git a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java index f1dbd2676b..401962d1a9 100644 --- a/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java +++ b/rxjava/src/main/java/com/baeldung/rxjava/jdbc/Utils.java @@ -6,9 +6,9 @@ import java.io.StringWriter; import org.apache.commons.io.IOUtils; -public class Utils { +class Utils { - public static String getStringFromInputStream(InputStream input) throws IOException { + static String getStringFromInputStream(InputStream input) throws IOException { StringWriter writer = new StringWriter(); IOUtils.copy(input, writer, "UTF-8"); return writer.toString(); diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java index 50d4551494..f44d4ac6b8 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java @@ -24,40 +24,40 @@ public class AutomapClassTest { @Before public void setup() { create = db.update("CREATE TABLE IF NOT EXISTS MANAGER(id int primary key, name varchar(255))") - .count(); + .count(); insert1 = db.update("INSERT INTO MANAGER(id, name) VALUES(1, 'Alan')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); insert2 = db.update("INSERT INTO MANAGER(id, name) VALUES(2, 'Sarah')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); } @Test public void whenSelectManagersAndAutomap_thenCorrect() { List managers = db.select("select id, name from MANAGER") - .dependsOn(create) - .dependsOn(insert1) - .dependsOn(insert2) - .autoMap(Manager.class) - .toList() - .toBlocking() - .single(); + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .autoMap(Manager.class) + .toList() + .toBlocking() + .single(); assertThat(managers.get(0) - .getId()).isEqualTo(1); + .getId()).isEqualTo(1); assertThat(managers.get(0) - .getName()).isEqualTo("Alan"); + .getName()).isEqualTo("Alan"); assertThat(managers.get(1) - .getId()).isEqualTo(2); + .getId()).isEqualTo(2); assertThat(managers.get(1) - .getName()).isEqualTo("Sarah"); + .getName()).isEqualTo("Sarah"); } @After public void close() { db.update("DROP TABLE MANAGER") - .dependsOn(create); + .dependsOn(create); connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java index fc85213b80..79bae281eb 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java @@ -9,7 +9,6 @@ import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; @@ -25,34 +24,34 @@ public class AutomapInterfaceTest { @Before public void setup() { create = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") - .count(); + .count(); insert1 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'Alan')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); insert2 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(2, 'Sarah')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); } @Test public void whenSelectFromTableAndAutomap_thenCorrect() { List employees = db.select("select id, name from EMPLOYEE") - .dependsOn(create) - .dependsOn(insert1) - .dependsOn(insert2) - .autoMap(Employee.class) - .toList() - .toBlocking() - .single(); + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .autoMap(Employee.class) + .toList() + .toBlocking() + .single(); assertThat(employees.get(0) - .id()).isEqualTo(1); + .id()).isEqualTo(1); assertThat(employees.get(0) - .name()).isEqualTo("Alan"); + .name()).isEqualTo("Alan"); assertThat(employees.get(1) - .id()).isEqualTo(2); + .id()).isEqualTo(2); assertThat(employees.get(1) - .name()).isEqualTo("Sarah"); + .name()).isEqualTo("Sarah"); } @After diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java index 17d047d42f..7677b2375d 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java @@ -6,11 +6,9 @@ import java.util.Arrays; import java.util.List; import org.junit.After; -import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; @@ -25,34 +23,34 @@ public class BasicQueryTypesTest { @Test public void whenCreateTableAndInsertRecords_thenCorrect() { create = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") - .count(); + .count(); insert1 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); update = db.update("UPDATE EMPLOYEE SET name = 'Alan' WHERE id = 1") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); insert2 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(2, 'Sarah')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); insert3 = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(3, 'Mike')") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); delete = db.update("DELETE FROM EMPLOYEE WHERE id = 2") - .dependsOn(create) - .count(); + .dependsOn(create) + .count(); List names = db.select("select name from EMPLOYEE where id < ?") - .parameter(3) - .dependsOn(create) - .dependsOn(insert1) - .dependsOn(insert2) - .dependsOn(insert3) - .dependsOn(update) - .dependsOn(delete) - .getAs(String.class) - .toList() - .toBlocking() - .single(); + .parameter(3) + .dependsOn(create) + .dependsOn(insert1) + .dependsOn(insert2) + .dependsOn(insert3) + .dependsOn(update) + .dependsOn(delete) + .getAs(String.class) + .toList() + .toBlocking() + .single(); assertEquals(Arrays.asList("Alan"), names); } @@ -60,7 +58,7 @@ public class BasicQueryTypesTest { @After public void close() { db.update("DROP TABLE EMPLOYEE") - .dependsOn(create); + .dependsOn(create); connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java index d166bdac10..fb3018ede4 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java @@ -29,7 +29,7 @@ public class InsertBlobTest { @Before public void setup() throws IOException { create = db.update("CREATE TABLE IF NOT EXISTS SERVERLOG (id int primary key, document BLOB)") - .count(); + .count(); InputStream actualInputStream = new FileInputStream("src/test/resources/actual_clob"); this.actualDocument = Utils.getStringFromInputStream(actualInputStream); @@ -38,28 +38,28 @@ public class InsertBlobTest { InputStream expectedInputStream = new FileInputStream("src/test/resources/expected_clob"); this.expectedDocument = Utils.getStringFromInputStream(expectedInputStream); this.insert = db.update("insert into SERVERLOG(id,document) values(?,?)") - .parameter(1) - .parameter(Database.toSentinelIfNull(bytes)) - .dependsOn(create) - .count(); + .parameter(1) + .parameter(Database.toSentinelIfNull(bytes)) + .dependsOn(create) + .count(); } @Test public void whenInsertBLOB_thenCorrect() throws IOException { db.select("select document from SERVERLOG where id = 1") - .dependsOn(create) - .dependsOn(insert) - .getAs(String.class) - .toList() - .toBlocking() - .single(); + .dependsOn(create) + .dependsOn(insert) + .getAs(String.class) + .toList() + .toBlocking() + .single(); assertEquals(expectedDocument, actualDocument); } @After public void close() { db.update("DROP TABLE SERVERLOG") - .dependsOn(create); + .dependsOn(create); connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java index d49d7edf1a..d29c2e3de2 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java @@ -11,7 +11,6 @@ import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; @@ -29,7 +28,7 @@ public class InsertClobTest { @Before public void setup() throws IOException { create = db.update("CREATE TABLE IF NOT EXISTS SERVERLOG (id int primary key, document CLOB)") - .count(); + .count(); InputStream actualInputStream = new FileInputStream("src/test/resources/actual_clob"); this.actualDocument = Utils.getStringFromInputStream(actualInputStream); @@ -37,28 +36,28 @@ public class InsertClobTest { InputStream expectedInputStream = new FileInputStream("src/test/resources/expected_clob"); this.expectedDocument = Utils.getStringFromInputStream(expectedInputStream); this.insert = db.update("insert into SERVERLOG(id,document) values(?,?)") - .parameter(1) - .parameter(Database.toSentinelIfNull(actualDocument)) - .dependsOn(create) - .count(); + .parameter(1) + .parameter(Database.toSentinelIfNull(actualDocument)) + .dependsOn(create) + .count(); } @Test public void whenSelectCLOB_thenCorrect() throws IOException { db.select("select document from SERVERLOG where id = 1") - .dependsOn(create) - .dependsOn(insert) - .getAs(String.class) - .toList() - .toBlocking() - .single(); + .dependsOn(create) + .dependsOn(insert) + .getAs(String.class) + .toList() + .toBlocking() + .single(); assertEquals(expectedDocument, actualDocument); } @After public void close() { db.update("DROP TABLE SERVERLOG") - .dependsOn(create); + .dependsOn(create); connectionProvider.close(); } } \ No newline at end of file diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java index 9a2765f03d..87604b6c5f 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java @@ -7,7 +7,6 @@ import org.junit.Before; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; @@ -24,26 +23,26 @@ public class ReturnKeysTest { public void setup() { begin = db.beginTransaction(); createStatement = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int auto_increment primary key, name varchar(255))") - .dependsOn(begin) - .count(); + .dependsOn(begin) + .count(); } @Test public void whenInsertAndReturnGeneratedKey_thenCorrect() { Integer key = db.update("INSERT INTO EMPLOYEE(name) VALUES('John')") - .dependsOn(createStatement) - .returnGeneratedKeys() - .getAs(Integer.class) - .count() - .toBlocking() - .single(); + .dependsOn(createStatement) + .returnGeneratedKeys() + .getAs(Integer.class) + .count() + .toBlocking() + .single(); assertThat(key).isEqualTo(1); } @After public void close() { db.update("DROP TABLE EMPLOYEE") - .dependsOn(createStatement); + .dependsOn(createStatement); connectionProvider.close(); } } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java index 584add4a6e..acca98d6d6 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java @@ -6,7 +6,6 @@ import org.junit.After; import org.junit.Test; import com.github.davidmoten.rx.jdbc.ConnectionProvider; -import com.github.davidmoten.rx.jdbc.ConnectionProviderFromUrl; import com.github.davidmoten.rx.jdbc.Database; import rx.Observable; @@ -23,20 +22,20 @@ public class TransactionTest { public void whenCommitTransaction_thenRecordUpdated() { begin = db.beginTransaction(); createStatement = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") - .dependsOn(begin) - .count(); + .dependsOn(begin) + .count(); insertStatement = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") - .dependsOn(createStatement) - .count(); + .dependsOn(createStatement) + .count(); updateStatement = db.update("UPDATE EMPLOYEE SET name = 'Tom' WHERE id = 1") - .dependsOn(insertStatement) - .count(); + .dependsOn(insertStatement) + .count(); commit = db.commit(updateStatement); String name = db.select("select name from EMPLOYEE WHERE id = 1") - .dependsOn(commit) - .getAs(String.class) - .toBlocking() - .single(); + .dependsOn(commit) + .getAs(String.class) + .toBlocking() + .single(); assertEquals("Tom", name); } @@ -44,7 +43,7 @@ public class TransactionTest { @After public void close() { db.update("DROP TABLE EMPLOYEE") - .dependsOn(createStatement); + .dependsOn(createStatement); connectionProvider.close(); } } From 525336265393b279a8272faea26e181290fbbc9f Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 23 Sep 2017 16:45:39 +0200 Subject: [PATCH 054/836] Refactoring rxjava-jdbc --- .../com/baeldung/rxjava/jdbc/TransactionTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java index acca98d6d6..9603a11c46 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java @@ -20,17 +20,18 @@ public class TransactionTest { @Test public void whenCommitTransaction_thenRecordUpdated() { - begin = db.beginTransaction(); - createStatement = db.update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") + Observable begin = db.beginTransaction(); + Observable createStatement = db + .update("CREATE TABLE IF NOT EXISTS EMPLOYEE(id int primary key, name varchar(255))") .dependsOn(begin) .count(); - insertStatement = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") + Observable insertStatement = db.update("INSERT INTO EMPLOYEE(id, name) VALUES(1, 'John')") .dependsOn(createStatement) .count(); - updateStatement = db.update("UPDATE EMPLOYEE SET name = 'Tom' WHERE id = 1") + Observable updateStatement = db.update("UPDATE EMPLOYEE SET name = 'Tom' WHERE id = 1") .dependsOn(insertStatement) .count(); - commit = db.commit(updateStatement); + Observable commit = db.commit(updateStatement); String name = db.select("select name from EMPLOYEE WHERE id = 1") .dependsOn(commit) .getAs(String.class) From 44d5a03c0dfcc9a50b8e6f89aaeac7364eb4a2c9 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sun, 24 Sep 2017 14:15:12 +0100 Subject: [PATCH 055/836] BAEL-1107: update properties of Author --- .../persistent/auto/_Author.java | 18 +++------ .../src/main/resources/datamap.map.xml | 6 +-- .../apachecayenne/CayenneOperationTests.java | 39 +++++++------------ 3 files changed, 22 insertions(+), 41 deletions(-) diff --git a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java index 3d068423c8..4d3bb090ca 100644 --- a/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java +++ b/apache-cayenne/src/main/java/com/baeldung/apachecayenne/persistent/auto/_Author.java @@ -19,22 +19,14 @@ public abstract class _Author extends CayenneDataObject { public static final String ID_PK_COLUMN = "id"; - public static final Property FIRSTNAME = Property.create("firstname", String.class); - public static final Property LASTNAME = Property.create("lastname", String.class); + public static final Property NAME = Property.create("name", String.class); public static final Property> ARTICLES = Property.create("articles", List.class); - public void setFirstname(String firstname) { - writeProperty("firstname", firstname); + public void setName(String name) { + writeProperty("name", name); } - public String getFirstname() { - return (String)readProperty("firstname"); - } - - public void setLastname(String lastname) { - writeProperty("lastname", lastname); - } - public String getLastname() { - return (String)readProperty("lastname"); + public String getName() { + return (String)readProperty("name"); } public void addToArticles(Article obj) { diff --git a/apache-cayenne/src/main/resources/datamap.map.xml b/apache-cayenne/src/main/resources/datamap.map.xml index dc78ad4348..3305649669 100644 --- a/apache-cayenne/src/main/resources/datamap.map.xml +++ b/apache-cayenne/src/main/resources/datamap.map.xml @@ -11,17 +11,15 @@ - - + - - + diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java index b92096c0fa..8a0d210d8d 100644 --- a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneOperationTests.java @@ -39,8 +39,7 @@ public class CayenneOperationTests { @Test public void givenAuthor_whenInsert_thenWeGetOneRecordInTheDatabase() { Author author = context.newObject(Author.class); - author.setFirstname("Paul"); - author.setLastname("Smith"); + author.setName("Paul"); context.commitChanges(); @@ -51,28 +50,24 @@ public class CayenneOperationTests { @Test public void givenAuthor_whenInsert_andQueryByFirstName_thenWeGetTheAuthor() { Author author = context.newObject(Author.class); - author.setFirstname("Paul"); - author.setLastname("Smith"); + author.setName("Paul"); context.commitChanges(); Author expectedAuthor = ObjectSelect.query(Author.class) - .where(Author.FIRSTNAME.eq("Paul")) + .where(Author.NAME.eq("Paul")) .selectOne(context); - assertEquals("Paul", expectedAuthor.getFirstname()); - assertEquals("Smith", expectedAuthor.getLastname()); + assertEquals("Paul", expectedAuthor.getName()); } @Test public void givenTwoAuthor_whenInsert_andQueryAll_thenWeGetTwoAuthors() { Author firstAuthor = context.newObject(Author.class); - firstAuthor.setFirstname("Paul"); - firstAuthor.setLastname("Smith"); + firstAuthor.setName("Paul"); Author secondAuthor = context.newObject(Author.class); - secondAuthor.setFirstname("Ludovic"); - secondAuthor.setLastname("Garcia"); + secondAuthor.setName("Ludovic"); context.commitChanges(); @@ -83,44 +78,40 @@ public class CayenneOperationTests { @Test public void givenAuthor_whenUpdating_thenWeGetAnUpatedeAuthor() { Author author = context.newObject(Author.class); - author.setFirstname("Paul"); - author.setLastname("Smith"); + author.setName("Paul"); context.commitChanges(); Author expectedAuthor = ObjectSelect.query(Author.class) - .where(Author.FIRSTNAME.eq("Paul")) + .where(Author.NAME.eq("Paul")) .selectOne(context); - expectedAuthor.setLastname("Smith 2"); + expectedAuthor.setName("Garcia"); context.commitChanges(); - assertEquals(author.getFirstname(), expectedAuthor.getFirstname()); - assertEquals(author.getLastname(), expectedAuthor.getLastname()); + assertEquals(author.getName(), expectedAuthor.getName()); } @Test public void givenAuthor_whenDeleting_thenWeLostHisDetails() { Author author = context.newObject(Author.class); - author.setFirstname("Paul"); - author.setLastname("Smith"); + author.setName("Paul"); context.commitChanges(); Author savedAuthor = ObjectSelect.query(Author.class) - .where(Author.FIRSTNAME.eq("Paul")).selectOne(context); + .where(Author.NAME.eq("Paul")).selectOne(context); if(savedAuthor != null) { context.deleteObjects(author); context.commitChanges(); } Author expectedAuthor = ObjectSelect.query(Author.class) - .where(Author.FIRSTNAME.eq("Paul")).selectOne(context); + .where(Author.NAME.eq("Paul")).selectOne(context); assertNull(expectedAuthor); } @Test public void givenAuthor_whenAttachingToArticle_thenTheRelationIsMade() { Author author = context.newObject(Author.class); - author.setFirstname("Paul"); - author.setLastname("Smith"); + author.setName("Paul"); Article article = context.newObject(Article.class); article.setTitle("My post title"); @@ -130,7 +121,7 @@ public class CayenneOperationTests { context.commitChanges(); Author expectedAuthor = ObjectSelect.query(Author.class) - .where(Author.LASTNAME.eq("Smith")) + .where(Author.NAME.eq("Paul")) .selectOne(context); Article expectedArticle = (expectedAuthor.getArticles()).get(0); From f52560cdbbd85206d975756526bedb9e59c76eb4 Mon Sep 17 00:00:00 2001 From: parthkaria Date: Wed, 27 Sep 2017 14:51:43 +0530 Subject: [PATCH 056/836] BAEL-815 Introduction to JGraphT --- libraries/pom.xml | 5 + .../com/baeldung/javax/measure/WaterTank.java | 26 ----- .../javax/measure/WaterTankTests.java | 68 ------------- .../baeldung/jgrapht/CompleteGraphTest.java | 38 ++++++++ .../baeldung/jgrapht/DirectedGraphTests.java | 95 +++++++++++++++++++ .../baeldung/jgrapht/EulerianCircuitTest.java | 42 ++++++++ 6 files changed, 180 insertions(+), 94 deletions(-) delete mode 100644 libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java delete mode 100644 libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java create mode 100644 libraries/src/test/java/com/baeldung/jgrapht/CompleteGraphTest.java create mode 100644 libraries/src/test/java/com/baeldung/jgrapht/DirectedGraphTests.java create mode 100644 libraries/src/test/java/com/baeldung/jgrapht/EulerianCircuitTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index b0fdbea2f6..a15ffa6dfc 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -590,6 +590,11 @@ jsr-275 ${javax-measure.version} + + org.jgrapht + jgrapht-core + 1.0.1 + diff --git a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java b/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java deleted file mode 100644 index 1ab9eee53f..0000000000 --- a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.javax.measure; - -import javax.measure.Measure; -import javax.measure.quantity.Volume; - -public class WaterTank { - - private Measure capacityMeasure; - private double capacityDouble; - - public void setCapacityMeasure(Measure capacityMeasure) { - this.capacityMeasure = capacityMeasure; - } - - public void setCapacityDouble(double capacityDouble) { - this.capacityDouble = capacityDouble; - } - - public Measure getCapacityMeasure() { - return capacityMeasure; - } - - public double getCapacityDouble() { - return capacityDouble; - } -} diff --git a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java b/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java deleted file mode 100644 index ef54035353..0000000000 --- a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.baeldung.javax.measure; - -import javax.measure.Measure; -import javax.measure.converter.UnitConverter; -import javax.measure.quantity.Duration; -import javax.measure.quantity.Length; -import javax.measure.quantity.Pressure; -import javax.measure.quantity.Volume; -import static javax.measure.unit.NonSI.HOUR; -import static javax.measure.unit.NonSI.LITRE; -import static javax.measure.unit.NonSI.MILE; -import static javax.measure.unit.NonSI.MINUTE; -import javax.measure.unit.SI; -import static javax.measure.unit.SI.KILO; -import static javax.measure.unit.SI.METER; -import static javax.measure.unit.SI.NEWTON; -import static javax.measure.unit.SI.SECOND; -import javax.measure.unit.Unit; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import org.junit.Test; - -public class WaterTankTests { - - @Test - public void givenMeasure_whenGetUnitAndConvertValue_thenSuccess() { - WaterTank waterTank = new WaterTank(); - waterTank.setCapacityMeasure(Measure.valueOf(9.2, LITRE)); - assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit()); - - Measure waterCapacity = waterTank.getCapacityMeasure(); - double volumeInLitre = waterCapacity.getValue().doubleValue(); - assertEquals(9.2, volumeInLitre, 0.0f); - - double volumeInMilliLitre = waterCapacity.doubleValue(SI.MILLI(LITRE)); - assertEquals(9200.0, volumeInMilliLitre, 0.0f); - - Unit Kilometer = SI.KILO(METER); - Unit Centimeter = SI.CENTI(METER); - } - - @Test - public void givenMeasure_whenAlternateMeasure_ThenGetAlternateMeasure() { - Unit PASCAL = NEWTON.divide(METER.pow(2)).alternate("Pa"); - assertTrue(Unit.valueOf("Pa").equals(PASCAL)); - } - - @Test - public void givenMeasure_whenCompoundMeasure_ThenGetCompoundMeasure() { - Unit HOUR_MINUTE_SECOND = HOUR.compound(MINUTE).compound(SECOND); - Measure duration = Measure.valueOf(12345, SECOND); - assertEquals("3h25min45s", duration.to(HOUR_MINUTE_SECOND).toString()); - } - - @Test - public void givenMiles_whenConvertToKilometer_ThenConverted() { - double distanceInMiles = 50.0; - UnitConverter mileToKilometer = MILE.getConverterTo(KILO(METER)); - double distanceInKilometers = mileToKilometer.convert(distanceInMiles); - assertEquals(80.4672, distanceInKilometers, 0.00f); - } - - @Test - public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() { - assertTrue(Unit.valueOf("kW").equals(SI.KILO(SI.WATT))); - assertTrue(Unit.valueOf("ms").equals(SI.SECOND.divide(1000))); - } -} diff --git a/libraries/src/test/java/com/baeldung/jgrapht/CompleteGraphTest.java b/libraries/src/test/java/com/baeldung/jgrapht/CompleteGraphTest.java new file mode 100644 index 0000000000..c085d54689 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jgrapht/CompleteGraphTest.java @@ -0,0 +1,38 @@ +package com.baeldung.jgrapht; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.jgrapht.VertexFactory; +import org.jgrapht.alg.HamiltonianCycle; +import org.jgrapht.generate.CompleteGraphGenerator; +import org.jgrapht.graph.DefaultEdge; +import org.jgrapht.graph.SimpleWeightedGraph; +import org.junit.Before; +import org.junit.Test; + +public class CompleteGraphTest { + + static SimpleWeightedGraph completeGraph; + static int size = 10; + + @Before + public void createCompleteGraph() { + completeGraph = new SimpleWeightedGraph<>(DefaultEdge.class); + CompleteGraphGenerator completeGenerator = new CompleteGraphGenerator(size); + VertexFactory vFactory = new VertexFactory() { + private int id = 0; + public String createVertex() { + return "v" + id++; + } + }; + completeGenerator.generateGraph(completeGraph, vFactory, null); + } + + @Test + public void givenCompleteGraph_whenGetHamiltonianCyclePath_thenGetVerticeListInSequence() { + List verticeList = HamiltonianCycle.getApproximateOptimalForCompleteGraph(completeGraph); + assertEquals(verticeList.size(), completeGraph.vertexSet().size()); + } +} diff --git a/libraries/src/test/java/com/baeldung/jgrapht/DirectedGraphTests.java b/libraries/src/test/java/com/baeldung/jgrapht/DirectedGraphTests.java new file mode 100644 index 0000000000..7f4cc99715 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jgrapht/DirectedGraphTests.java @@ -0,0 +1,95 @@ +package com.baeldung.jgrapht; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.IntStream; + +import org.jgrapht.DirectedGraph; +import org.jgrapht.GraphPath; +import org.jgrapht.alg.CycleDetector; +import org.jgrapht.alg.KosarajuStrongConnectivityInspector; +import org.jgrapht.alg.interfaces.StrongConnectivityAlgorithm; +import org.jgrapht.alg.shortestpath.AllDirectedPaths; +import org.jgrapht.alg.shortestpath.BellmanFordShortestPath; +import org.jgrapht.alg.shortestpath.DijkstraShortestPath; +import org.jgrapht.graph.DefaultDirectedGraph; +import org.jgrapht.graph.DefaultEdge; +import org.jgrapht.graph.DirectedSubgraph; +import org.jgrapht.traverse.BreadthFirstIterator; +import org.jgrapht.traverse.DepthFirstIterator; +import org.junit.Before; +import org.junit.Test; + +public class DirectedGraphTests { + DirectedGraph directedGraph; + + @Before + public void createDirectedGraph() { + directedGraph = new DefaultDirectedGraph(DefaultEdge.class); + IntStream.range(1, 10).forEach(i -> { + directedGraph.addVertex("v" + i); + }); + directedGraph.addEdge("v1", "v2"); + directedGraph.addEdge("v2", "v4"); + directedGraph.addEdge("v4", "v3"); + directedGraph.addEdge("v3", "v1"); + directedGraph.addEdge("v5", "v4"); + directedGraph.addEdge("v5", "v6"); + directedGraph.addEdge("v6", "v7"); + directedGraph.addEdge("v7", "v5"); + directedGraph.addEdge("v8", "v5"); + directedGraph.addEdge("v9", "v8"); + } + + @Test + public void givenDirectedGraph_whenGetStronglyConnectedSubgraphs_thenPathExistsBetweenStronglyconnectedVertices() { + StrongConnectivityAlgorithm scAlg = new KosarajuStrongConnectivityInspector<>(directedGraph); + List> stronglyConnectedSubgraphs = scAlg.stronglyConnectedSubgraphs(); + List stronglyConnectedVertices = new ArrayList<>(stronglyConnectedSubgraphs.get(3).vertexSet()); + + String randomVertex1 = stronglyConnectedVertices.get(0); + String randomVertex2 = stronglyConnectedVertices.get(3); + AllDirectedPaths allDirectedPaths = new AllDirectedPaths<>(directedGraph); + + List> possiblePathList = allDirectedPaths.getAllPaths(randomVertex1, randomVertex2, false, stronglyConnectedVertices.size()); + assertTrue(possiblePathList.size() > 0); + } + + @Test + public void givenDirectedGraphWithCycle_whenCheckCycles_thenDetectCycles() { + CycleDetector cycleDetector = new CycleDetector(directedGraph); + assertTrue(cycleDetector.detectCycles()); + Set cycleVertices = cycleDetector.findCycles(); + assertTrue(cycleVertices.size() > 0); + } + + @Test + public void givenDirectedGraph_whenCreateInstanceDepthFirstIterator_thenGetIterator() { + DepthFirstIterator depthFirstIterator = new DepthFirstIterator<>(directedGraph); + assertNotNull(depthFirstIterator); + } + + @Test + public void givenDirectedGraph_whenCreateInstanceBreadthFirstIterator_thenGetIterator() { + BreadthFirstIterator breadthFirstIterator = new BreadthFirstIterator<>(directedGraph); + assertNotNull(breadthFirstIterator); + } + + @Test + public void givenDirectedGraph_whenGetDijkstraShortestPath_thenGetNotNullPath() { + DijkstraShortestPath dijkstraShortestPath = new DijkstraShortestPath(directedGraph); + List shortestPath = dijkstraShortestPath.getPath("v1", "v4").getVertexList(); + assertNotNull(shortestPath); + } + + @Test + public void givenDirectedGraph_whenGetBellmanFordShortestPath_thenGetNotNullPath() { + BellmanFordShortestPath bellmanFordShortestPath = new BellmanFordShortestPath(directedGraph); + List shortestPath = bellmanFordShortestPath.getPath("v1", "v4").getVertexList(); + assertNotNull(shortestPath); + } +} diff --git a/libraries/src/test/java/com/baeldung/jgrapht/EulerianCircuitTest.java b/libraries/src/test/java/com/baeldung/jgrapht/EulerianCircuitTest.java new file mode 100644 index 0000000000..6f0fb92ab7 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jgrapht/EulerianCircuitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.jgrapht; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.stream.IntStream; + +import org.jgrapht.GraphPath; +import org.jgrapht.alg.cycle.HierholzerEulerianCycle; +import org.jgrapht.graph.DefaultEdge; +import org.jgrapht.graph.SimpleWeightedGraph; +import org.junit.Before; +import org.junit.Test; + +public class EulerianCircuitTest { + SimpleWeightedGraph simpleGraph; + + @Before + public void createGraphWithEulerianCircuit() { + simpleGraph = new SimpleWeightedGraph<>(DefaultEdge.class); + IntStream.range(1, 6).forEach(i -> { + simpleGraph.addVertex("v" + i); + }); + IntStream.range(1, 6).forEach(i -> { + int endVertexNo = (i + 1) > 5 ? 1 : i + 1; + simpleGraph.addEdge("v" + i, "v" + endVertexNo); + }); + } + + @Test + public void givenGraph_whenCheckEluerianCycle_thenGetResult() { + HierholzerEulerianCycle eulerianCycle = new HierholzerEulerianCycle<>(); + assertTrue(eulerianCycle.isEulerian(simpleGraph)); + } + + @Test + public void givenGraphWithEulerianCircuit_whenGetEulerianCycle_thenGetGraphPath() { + HierholzerEulerianCycle eulerianCycle = new HierholzerEulerianCycle<>(); + GraphPath path = eulerianCycle.getEulerianCycle(simpleGraph); + assertTrue(path.getEdgeList().containsAll(simpleGraph.edgeSet())); + } +} From 38b2dc00284a18eda549c50daa47f85bfa128183 Mon Sep 17 00:00:00 2001 From: parthkaria Date: Wed, 27 Sep 2017 14:52:54 +0530 Subject: [PATCH 057/836] BAEL-815 Introduction to JGraphT --- libraries/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index a15ffa6dfc..03919b9cec 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -585,11 +585,6 @@ fugue 3.0.0-m007 - - javax.measure - jsr-275 - ${javax-measure.version} - org.jgrapht jgrapht-core @@ -660,7 +655,6 @@ 0.6.5 0.9.0 15.2 - 0.9.1 2.9.9 1.5.1 2.3.0 From 9f9fa935a8baef3d5ab5caf13b1949eeb41edc51 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 30 Sep 2017 18:14:54 +0200 Subject: [PATCH 058/836] BAEL-1171 java.lang.String API --- .../java/com/baeldung/string/CodePointAtTest.java | 12 ++++++++++++ .../main/java/com/baeldung/string/ConcatTest.java | 12 ++++++++++++ .../java/com/baeldung/string/GetBytesTest.java | 14 ++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/string/CodePointAtTest.java create mode 100644 core-java/src/main/java/com/baeldung/string/ConcatTest.java create mode 100644 core-java/src/main/java/com/baeldung/string/GetBytesTest.java diff --git a/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java b/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java new file mode 100644 index 0000000000..bce0e1af18 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java @@ -0,0 +1,12 @@ +package com.baeldung.string; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class CodePointAtTest { + + @Test + public void whenCallCodePointAt_thenDecimalUnicodeReturned() { + assertEquals(97, "abcd".codePointAt(0)); + } +} diff --git a/core-java/src/main/java/com/baeldung/string/ConcatTest.java b/core-java/src/main/java/com/baeldung/string/ConcatTest.java new file mode 100644 index 0000000000..4a7362b513 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/ConcatTest.java @@ -0,0 +1,12 @@ +package com.baeldung.string; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class ConcatTest { + + @Test + public void whenCallConcat_thenCorrect() { + assertEquals("elephant", "elep".concat("hant")); + } +} diff --git a/core-java/src/main/java/com/baeldung/string/GetBytesTest.java b/core-java/src/main/java/com/baeldung/string/GetBytesTest.java new file mode 100644 index 0000000000..22011678f0 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/GetBytesTest.java @@ -0,0 +1,14 @@ +package com.baeldung.string; + +import static org.junit.Assert.assertArrayEquals; +import org.junit.Test; + +public class GetBytesTest { + + @Test + public void whenGetBytes_thenCorrect() { + byte[] byteArray = "abcd".getBytes(); + byte[] expected = new byte[] { 97, 98, 99, 100 }; + assertArrayEquals(expected, byteArray); + } +} From ecb0e9924a837c86ea889c497eb10900f5c751ae Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 30 Sep 2017 22:37:00 +0200 Subject: [PATCH 059/836] refactor rxjava-jdbc --- .../com/baeldung/rxjava/jdbc/AutomapClassTest.java | 8 ++++---- .../com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java | 8 ++++---- .../com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java | 6 +++--- .../java/com/baeldung/rxjava/jdbc/InsertBlobTest.java | 10 +++++----- .../java/com/baeldung/rxjava/jdbc/InsertClobTest.java | 10 +++++----- .../java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java | 8 ++++---- .../java/com/baeldung/rxjava/jdbc/TransactionTest.java | 7 +++---- 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java index f44d4ac6b8..dea194734f 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapClassTest.java @@ -15,11 +15,11 @@ import rx.Observable; public class AutomapClassTest { - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); - Observable create = null; - Observable insert1, insert2 = null; + private Observable create = null; + private Observable insert1, insert2 = null; @Before public void setup() { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java index 79bae281eb..730e64fd34 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/AutomapInterfaceTest.java @@ -15,11 +15,11 @@ import rx.Observable; public class AutomapInterfaceTest { - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); - Observable create = null; - Observable insert1, insert2 = null; + private Observable create = null; + private Observable insert1, insert2 = null; @Before public void setup() { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java index 7677b2375d..034b3c1f50 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/BasicQueryTypesTest.java @@ -15,10 +15,10 @@ import rx.Observable; public class BasicQueryTypesTest { - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); - Observable create, insert1, insert2, insert3, update, delete = null; + private Observable create, insert1, insert2, insert3, update, delete = null; @Test public void whenCreateTableAndInsertRecords_thenCorrect() { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java index fb3018ede4..1ca82f81f3 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertBlobTest.java @@ -18,13 +18,13 @@ import rx.Observable; public class InsertBlobTest { - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); - String expectedDocument = null; - String actualDocument = null; + private String expectedDocument = null; + private String actualDocument = null; - Observable create, insert = null; + private Observable create, insert = null; @Before public void setup() throws IOException { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java index d29c2e3de2..0a685075f3 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/InsertClobTest.java @@ -17,13 +17,13 @@ import rx.Observable; public class InsertClobTest { - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); - String expectedDocument = null; - String actualDocument = null; + private String expectedDocument = null; + private String actualDocument = null; - Observable create, insert = null; + private Observable create, insert = null; @Before public void setup() throws IOException { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java index 87604b6c5f..50c81afcc4 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/ReturnKeysTest.java @@ -13,11 +13,11 @@ import rx.Observable; public class ReturnKeysTest { - Observable begin, commit = null; - Observable createStatement, insertStatement, updateStatement = null; + private Observable begin = null; + private Observable createStatement = null; - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); @Before public void setup() { diff --git a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java index 9603a11c46..b7a1bb5b79 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/jdbc/TransactionTest.java @@ -12,11 +12,10 @@ import rx.Observable; public class TransactionTest { - Observable begin, commit = null; - Observable createStatement, insertStatement, updateStatement = null; + private Observable createStatement = null; - ConnectionProvider connectionProvider = Connector.connectionProvider; - Database db = Database.from(connectionProvider); + private ConnectionProvider connectionProvider = Connector.connectionProvider; + private Database db = Database.from(connectionProvider); @Test public void whenCommitTransaction_thenRecordUpdated() { From 35182c42484d3bd4c73f1ef27e4558481749d7ad Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 30 Sep 2017 22:59:34 +0200 Subject: [PATCH 060/836] refactor String --- .../java/com/baeldung/string/CodePointAtTest.java | 12 ------------ .../main/java/com/baeldung/string/ConcatTest.java | 12 ------------ .../java/com/baeldung/string/GetBytesTest.java | 14 -------------- 3 files changed, 38 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/string/CodePointAtTest.java delete mode 100644 core-java/src/main/java/com/baeldung/string/ConcatTest.java delete mode 100644 core-java/src/main/java/com/baeldung/string/GetBytesTest.java diff --git a/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java b/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java deleted file mode 100644 index bce0e1af18..0000000000 --- a/core-java/src/main/java/com/baeldung/string/CodePointAtTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.string; - -import static org.junit.Assert.assertEquals; -import org.junit.Test; - -public class CodePointAtTest { - - @Test - public void whenCallCodePointAt_thenDecimalUnicodeReturned() { - assertEquals(97, "abcd".codePointAt(0)); - } -} diff --git a/core-java/src/main/java/com/baeldung/string/ConcatTest.java b/core-java/src/main/java/com/baeldung/string/ConcatTest.java deleted file mode 100644 index 4a7362b513..0000000000 --- a/core-java/src/main/java/com/baeldung/string/ConcatTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.string; - -import static org.junit.Assert.assertEquals; -import org.junit.Test; - -public class ConcatTest { - - @Test - public void whenCallConcat_thenCorrect() { - assertEquals("elephant", "elep".concat("hant")); - } -} diff --git a/core-java/src/main/java/com/baeldung/string/GetBytesTest.java b/core-java/src/main/java/com/baeldung/string/GetBytesTest.java deleted file mode 100644 index 22011678f0..0000000000 --- a/core-java/src/main/java/com/baeldung/string/GetBytesTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.string; - -import static org.junit.Assert.assertArrayEquals; -import org.junit.Test; - -public class GetBytesTest { - - @Test - public void whenGetBytes_thenCorrect() { - byte[] byteArray = "abcd".getBytes(); - byte[] expected = new byte[] { 97, 98, 99, 100 }; - assertArrayEquals(expected, byteArray); - } -} From d559cf43fc078ea5db5cc364081c6b17da27a564 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 1 Oct 2017 09:02:57 +0200 Subject: [PATCH 061/836] String API - move multiple classes into a single class --- .../java/com/baeldung/string/StringTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/string/StringTest.java diff --git a/core-java/src/main/java/com/baeldung/string/StringTest.java b/core-java/src/main/java/com/baeldung/string/StringTest.java new file mode 100644 index 0000000000..fd83c903a3 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/StringTest.java @@ -0,0 +1,26 @@ +package com.baeldung.string; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class StringTest { + + @Test + public void whenCallCodePointAt_thenDecimalUnicodeReturned() { + assertEquals(97, "abcd".codePointAt(0)); + } + + @Test + public void whenCallConcat_thenCorrect() { + assertEquals("elephant", "elep".concat("hant")); + } + + @Test + public void whenGetBytes_thenCorrect() { + byte[] byteArray = "abcd".getBytes(); + byte[] expected = new byte[] { 97, 98, 99, 100 }; + assertArrayEquals(expected, byteArray); + } +} From ab26dc03c3e705bc179946355edc99811bdc60e2 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 1 Oct 2017 09:05:33 +0200 Subject: [PATCH 062/836] move class into test package --- .../src/{main => test}/java/com/baeldung/string/StringTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core-java/src/{main => test}/java/com/baeldung/string/StringTest.java (100%) diff --git a/core-java/src/main/java/com/baeldung/string/StringTest.java b/core-java/src/test/java/com/baeldung/string/StringTest.java similarity index 100% rename from core-java/src/main/java/com/baeldung/string/StringTest.java rename to core-java/src/test/java/com/baeldung/string/StringTest.java From 5672ec1f2dfa511c2a2b58ac12e65cbc971b7d9e Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 5 Oct 2017 03:14:25 +0100 Subject: [PATCH 063/836] BAEL-1157: Apache Cayenne - Advanced Querying --- .../CayenneAdvancedOperationTests.java | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java new file mode 100644 index 0000000000..613ef757b4 --- /dev/null +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java @@ -0,0 +1,255 @@ +package com.baeldung.apachecayenne; + +import com.baeldung.apachecayenne.persistent.Article; +import com.baeldung.apachecayenne.persistent.Author; +import org.apache.cayenne.ObjectContext; +import org.apache.cayenne.configuration.server.ServerRuntime; +import org.apache.cayenne.query.ObjectSelect; +import org.apache.cayenne.query.SQLTemplate; +import org.apache.cayenne.query.SelectQuery; +import org.junit.After; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.List; + +import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +public class CayenneAdvancedOperationTests { + private static ObjectContext context = null; + + @BeforeClass + public static void setupTheCayenneContext() { + ServerRuntime cayenneRuntime = ServerRuntime.builder() + .addConfig("cayenne-project.xml") + .build(); + context = cayenneRuntime.newContext(); + } + + @Before + public void saveThreeAuthors() { + Author authorOne = context.newObject(Author.class); + authorOne.setName("Paul Xavier"); + Author authorTwo = context.newObject(Author.class); + authorTwo.setName("pAuL Smith"); + Author authorThree = context.newObject(Author.class); + authorThree.setName("Vicky Sarra"); + context.commitChanges(); + } + + @After + public void deleteAllAuthors() { + SQLTemplate deleteAuthors = new SQLTemplate(Author.class, "delete from author"); + context.performGenericQuery(deleteAuthors); + } + + @Test + public void givenAuthors_whenFindAllSQLTmplt_thenWeGetThreeAuthors() { + SQLTemplate select = new SQLTemplate(Author.class, "select * from Author"); + List authors = context.performQuery(select); + + assertEquals(authors.size(), 3); + } + + @Test + public void givenAuthors_whenFindByNameSQLTmplt_thenWeGetOneAuthor() { + SQLTemplate select = new SQLTemplate(Author.class, "select * from Author where name = 'Vicky Sarra'"); + List authors = context.performQuery(select); + Author author = authors.get(0); + + assertEquals(authors.size(), 1); + assertEquals(author.getName(), "Vicky Sarra"); + } + + @Test + public void givenAuthors_whenLikeSltQry_thenWeGetOneAuthor() { + Expression qualifier = ExpressionFactory.likeExp(Author.NAME.getName(), "Paul%"); + SelectQuery query = new SelectQuery(Author.class, qualifier); + List authorsTwo = context.performQuery(query); + + assertEquals(authorsTwo.size(), 1); + } + + @Test + public void givenAuthors_whenCtnsIgnorCaseSltQry_thenWeGetTwoAuthors() { + Expression qualifier = ExpressionFactory.containsIgnoreCaseExp(Author.NAME.getName(), "Paul"); + SelectQuery query = new SelectQuery(Author.class, qualifier); + List authors = context.performQuery(query); + + assertEquals(authors.size(), 2); + } + + @Test + public void givenAuthors_whenCtnsIgnorCaseEndsWSltQry_thenWeGetTwoAuthors() { + Expression qualifier = ExpressionFactory.containsIgnoreCaseExp(Author.NAME.getName(), "Paul") + .andExp(ExpressionFactory.endsWithExp(Author.NAME.getName(), "h")); + SelectQuery query = new SelectQuery(Author.class, qualifier); + List authors = context.performQuery(query); + + Author author = authors.get(0); + + assertEquals(authors.size(), 1); + assertEquals(author.getName(), "pAuL Smith"); + } + + @Test + public void givenAuthors_whenAscOrderingSltQry_thenWeGetOrderedAuthors() { + SelectQuery query = new SelectQuery(Author.class); + query.addOrdering(Author.NAME.asc()); + + List authors = query.select(context); + Author firstAuthor = authors.get(0); + + assertEquals(authors.size(), 3); + assertEquals(firstAuthor.getName(), "Paul Xavier"); + } + + @Test + public void givenAuthors_whenDescOrderingSltQry_thenWeGetOrderedAuthors() { + SelectQuery query = new SelectQuery(Author.class); + query.addOrdering(Author.NAME.desc()); + + List authors = query.select(context); + Author firstAuthor = authors.get(0); + + assertEquals(authors.size(), 3); + assertEquals(firstAuthor.getName(), "pAuL Smith"); + } + + @Test + public void givenAuthors_onContainsObjS_thenWeGetOneRecord() { + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.contains("Paul")) + .select(context); + + assertEquals(authors.size(), 1); + } + + @Test + public void givenAuthors_whenLikeObjS_thenWeGetTwoAuthors() { + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.likeIgnoreCase("Paul%")) + .select(context); + + assertEquals(authors.size(), 2); + } + + @Test + public void givenTwoAuthor_whenEndsWithObjS_thenWeGetOrderedAuthors() { + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.endsWith("Sarra")) + .select(context); + Author firstAuthor = authors.get(0); + + assertEquals(authors.size(), 1); + assertEquals(firstAuthor.getName(), "Vicky Sarra"); + } + + @Test + public void givenTwoAuthor_whenInObjS_thenWeGetAuthors() { + String [] args = {"Paul Xavier", "pAuL Smith", "Vicky Sarra"}; + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.in(Arrays.asList(args))) + .select(context); + + assertEquals(authors.size(), 3); + } + + @Test + public void givenTwoAuthor_whenNinObjS_thenWeGetAuthors() { + String [] args = {"Paul Xavier", "pAuL Smith"}; + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.nin(Arrays.asList(args))) + .select(context); + Author author = authors.get(0); + + assertEquals(authors.size(), 1); + assertEquals(author.getName(), "Vicky Sarra"); + } + + @Test + public void givenTwoAuthor_whenIsNotNullObjS_thenWeGetAuthors() { + List authors = ObjectSelect.query(Author.class) + .where(Author.NAME.isNotNull()) + .select(context); + + assertEquals(authors.size(), 3); + } + + @Test + public void givenAuthors_whenFindAllEJBQL_thenWeGetThreeAuthors() { + EJBQLQuery query = new EJBQLQuery("select a FROM Author a"); + List authors = context.performQuery(query); + + assertEquals(authors.size(), 3); + } + + @Test + public void givenAuthors_whenFindByNameEJBQL_thenWeGetOneAuthor() { + EJBQLQuery query = new EJBQLQuery("select a FROM Author a WHERE a.name = 'Vicky Sarra'"); + List authors = context.performQuery(query); + Author author = authors.get(0); + + assertEquals(authors.size(), 1); + assertEquals(author.getName(), "Vicky Sarra"); + } + + @Test + public void givenAuthors_whenUpdadingByNameEJBQL_thenWeGetTheUpdatedAuthor() { + EJBQLQuery query = new EJBQLQuery("UPDATE Author AS a SET a.name = 'Vicky Edison' WHERE a.name = 'Vicky Sarra'"); + QueryResponse queryResponse = context.performGenericQuery(query); + + EJBQLQuery queryUpdatedAuthor = new EJBQLQuery("select a FROM Author a WHERE a.name = 'Vicky Edison'"); + List authors = context.performQuery(queryUpdatedAuthor); + Author author = authors.get(0); + + assertNotNull(author); + } + + @Test + public void givenAuthors_whenSeletingNamesEJBQL_thenWeGetListWithSizeThree() { + String [] args = {"Paul Xavier", "pAuL Smith", "Vicky Sarra"}; + List names = Arrays.asList(args); + EJBQLQuery query = new EJBQLQuery("select a.name FROM Author a"); + List nameList = context.performQuery(query); + + Collections.sort(names); + Collections.sort(nameList); + + assertEquals(names.size(), 3); + assertEquals(nameList.size(), 3); + assertEquals(names, nameList); + } + + @Test + public void givenAuthors_whenDeletingAllWithEJB_thenWeGetNoAuthor() { + EJBQLQuery deleteQuery = new EJBQLQuery("delete FROM Author"); + EJBQLQuery findAllQuery = new EJBQLQuery("select a FROM Author a"); + + context.performQuery(deleteQuery); + List objects = context.performQuery(findAllQuery); + + assertEquals(objects.size(), 0); + } + + @Test + public void givenAuthors_whenInsertingSQLExec_thenWeGetNewAuthor() { + int inserted = SQLExec + .query("INSERT INTO Author (name) VALUES ('Baeldung')") + .update(context); + + assertEquals(inserted, 1); + } + + @Test + public void givenAuthors_whenUpdatingSQLExec_thenItsUpdated() { + int updated = SQLExec + .query("UPDATE Author SET name = 'Baeldung' WHERE name = 'Vicky Sarra'") + .update(context); + + assertEquals(updated, 1); + } +} From 0dbfa53ae074e42cf354cd3939e97edab50872f5 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 5 Oct 2017 03:47:28 +0100 Subject: [PATCH 064/836] BAEL-1157: Fix imports --- .../CayenneAdvancedOperationTests.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java index 613ef757b4..ea10b59dd2 100644 --- a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java @@ -1,22 +1,23 @@ package com.baeldung.apachecayenne; -import com.baeldung.apachecayenne.persistent.Article; import com.baeldung.apachecayenne.persistent.Author; import org.apache.cayenne.ObjectContext; +import org.apache.cayenne.QueryResponse; import org.apache.cayenne.configuration.server.ServerRuntime; -import org.apache.cayenne.query.ObjectSelect; -import org.apache.cayenne.query.SQLTemplate; -import org.apache.cayenne.query.SelectQuery; +import org.apache.cayenne.exp.Expression; +import org.apache.cayenne.exp.ExpressionFactory; +import org.apache.cayenne.query.*; import org.junit.After; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import static junit.framework.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertNotNull; public class CayenneAdvancedOperationTests { private static ObjectContext context = null; From 3f825c5b96cbd7105820616774c988c1359eb344 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Thu, 5 Oct 2017 04:17:56 +0100 Subject: [PATCH 065/836] BAEL-1157: code indentation --- .../CayenneAdvancedOperationTests.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java index ea10b59dd2..ddfe9325d3 100644 --- a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java @@ -25,8 +25,8 @@ public class CayenneAdvancedOperationTests { @BeforeClass public static void setupTheCayenneContext() { ServerRuntime cayenneRuntime = ServerRuntime.builder() - .addConfig("cayenne-project.xml") - .build(); + .addConfig("cayenne-project.xml") + .build(); context = cayenneRuntime.newContext(); } @@ -123,8 +123,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenAuthors_onContainsObjS_thenWeGetOneRecord() { List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.contains("Paul")) - .select(context); + .where(Author.NAME.contains("Paul")) + .select(context); assertEquals(authors.size(), 1); } @@ -132,8 +132,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenAuthors_whenLikeObjS_thenWeGetTwoAuthors() { List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.likeIgnoreCase("Paul%")) - .select(context); + .where(Author.NAME.likeIgnoreCase("Paul%")) + .select(context); assertEquals(authors.size(), 2); } @@ -141,8 +141,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenTwoAuthor_whenEndsWithObjS_thenWeGetOrderedAuthors() { List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.endsWith("Sarra")) - .select(context); + .where(Author.NAME.endsWith("Sarra")) + .select(context); Author firstAuthor = authors.get(0); assertEquals(authors.size(), 1); @@ -153,8 +153,8 @@ public class CayenneAdvancedOperationTests { public void givenTwoAuthor_whenInObjS_thenWeGetAuthors() { String [] args = {"Paul Xavier", "pAuL Smith", "Vicky Sarra"}; List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.in(Arrays.asList(args))) - .select(context); + .where(Author.NAME.in(Arrays.asList(args))) + .select(context); assertEquals(authors.size(), 3); } @@ -163,8 +163,8 @@ public class CayenneAdvancedOperationTests { public void givenTwoAuthor_whenNinObjS_thenWeGetAuthors() { String [] args = {"Paul Xavier", "pAuL Smith"}; List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.nin(Arrays.asList(args))) - .select(context); + .where(Author.NAME.nin(Arrays.asList(args))) + .select(context); Author author = authors.get(0); assertEquals(authors.size(), 1); @@ -174,8 +174,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenTwoAuthor_whenIsNotNullObjS_thenWeGetAuthors() { List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.isNotNull()) - .select(context); + .where(Author.NAME.isNotNull()) + .select(context); assertEquals(authors.size(), 3); } @@ -239,8 +239,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenAuthors_whenInsertingSQLExec_thenWeGetNewAuthor() { int inserted = SQLExec - .query("INSERT INTO Author (name) VALUES ('Baeldung')") - .update(context); + .query("INSERT INTO Author (name) VALUES ('Baeldung')") + .update(context); assertEquals(inserted, 1); } @@ -248,8 +248,8 @@ public class CayenneAdvancedOperationTests { @Test public void givenAuthors_whenUpdatingSQLExec_thenItsUpdated() { int updated = SQLExec - .query("UPDATE Author SET name = 'Baeldung' WHERE name = 'Vicky Sarra'") - .update(context); + .query("UPDATE Author SET name = 'Baeldung' WHERE name = 'Vicky Sarra'") + .update(context); assertEquals(updated, 1); } From 57a993de64fc0959b0511096f07ac9d59133fa01 Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Sun, 8 Oct 2017 08:17:24 +0200 Subject: [PATCH 066/836] BAEL-719: Intro to Spring Cloud Stream --- spring-cloud/pom.xml | 2 + spring-cloud/spring-cloud-stream/pom.xml | 70 +++++++++++++++++++ .../spring-cloud-stream-rabbit/pom.xml | 33 +++++++++ .../MultipleOutputsServiceApplication.java | 38 ++++++++++ ...tputsWithConditionsServiceApplication.java | 39 +++++++++++ .../rabbit/MyLoggerServiceApplication.java | 32 +++++++++ .../messages/TextPlainMessageConverter.java | 26 +++++++ .../cloud/stream/rabbit/model/LogMessage.java | 32 +++++++++ .../stream/rabbit/processor/MyProcessor.java | 19 +++++ .../src/main/resources/application.yml | 28 ++++++++ ...ultipleOutputsServiceApplicationTests.java | 52 ++++++++++++++ ...WithConditionsServiceApplicationTests.java | 52 ++++++++++++++ .../rabbit/MyLoggerApplicationTests.java | 44 ++++++++++++ 13 files changed, 467 insertions(+) create mode 100644 spring-cloud/spring-cloud-stream/pom.xml create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplication.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplication.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerServiceApplication.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/messages/TextPlainMessageConverter.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/model/LogMessage.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/processor/MyProcessor.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java create mode 100644 spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 44e72535f8..f3083f69b7 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -16,6 +16,7 @@ spring-cloud-rest spring-cloud-zookeeper spring-cloud-gateway + spring-cloud-stream pom @@ -37,6 +38,7 @@ 1.2.3.RELEASE 1.2.3.RELEASE 1.2.3.RELEASE + 1.3.0.RELEASE 1.4.2.RELEASE 3.6.0 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml new file mode 100644 index 0000000000..352b52cc17 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + org.baeldung + spring-cloud-stream + + spring-cloud-stream-rabbit + + pom + + spring-cloud-stream + + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + + + + UTF-8 + 3.6.0 + + + + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + ${spring-cloud-stream.version} + + + + org.springframework.cloud + spring-cloud-stream + ${spring-cloud-stream.version} + + + + org.springframework.cloud + spring-cloud-stream-test-support + ${spring-cloud-stream.version} + test + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + + diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml new file mode 100644 index 0000000000..9eede9e92c --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + spring-cloud-stream-rabbit + jar + + spring-cloud-stream-rabbit + Simple Spring Cloud Stream + + + org.baeldung + spring-cloud-stream + 1.0.0-SNAPSHOT + .. + + + + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + + + + org.springframework.cloud + spring-cloud-stream-test-support + test + + + + diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplication.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplication.java new file mode 100644 index 0000000000..375494dfac --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplication.java @@ -0,0 +1,38 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.annotation.StreamListener; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; + +import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; + +@SpringBootApplication +@EnableBinding(MyProcessor.class) +public class MultipleOutputsServiceApplication { + public static void main(String[] args) { + SpringApplication.run(MultipleOutputsServiceApplication.class, args); + } + + @Autowired + private MyProcessor processor; + + @StreamListener(MyProcessor.INPUT) + public void routeValues(Integer val) { + if (val < 10) { + processor.anOutput() + .send(message(val)); + } else { + processor.anotherOutput() + .send(message(val)); + } + } + + private static final Message message(T val) { + return MessageBuilder.withPayload(val) + .build(); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplication.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplication.java new file mode 100644 index 0000000000..4729e418b6 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplication.java @@ -0,0 +1,39 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.annotation.StreamListener; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; + +import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; + +@SpringBootApplication +@EnableBinding(MyProcessor.class) +public class MultipleOutputsWithConditionsServiceApplication { + public static void main(String[] args) { + SpringApplication.run(MultipleOutputsWithConditionsServiceApplication.class, args); + } + + @Autowired + private MyProcessor processor; + + @StreamListener(target = MyProcessor.INPUT, condition = "payload < 10") + public void routeValuesToAnOutput(Integer val) { + processor.anOutput() + .send(message(val)); + } + + @StreamListener(target = MyProcessor.INPUT, condition = "payload >= 10") + public void routeValuesToAnotherOutput(Integer val) { + processor.anotherOutput() + .send(message(val)); + } + + private static final Message message(T val) { + return MessageBuilder.withPayload(val) + .build(); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerServiceApplication.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerServiceApplication.java new file mode 100644 index 0000000000..aac551e544 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerServiceApplication.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.annotation.StreamListener; +import org.springframework.cloud.stream.messaging.Processor; +import org.springframework.context.annotation.Bean; +import org.springframework.messaging.converter.MessageConverter; +import org.springframework.messaging.handler.annotation.SendTo; + +import com.baeldung.spring.cloud.stream.rabbit.messages.TextPlainMessageConverter; +import com.baeldung.spring.cloud.stream.rabbit.model.LogMessage; + +@SpringBootApplication +@EnableBinding(Processor.class) +public class MyLoggerServiceApplication { + public static void main(String[] args) { + SpringApplication.run(MyLoggerServiceApplication.class, args); + } + + @Bean + public MessageConverter providesTextPlainMessageConverter() { + return new TextPlainMessageConverter(); + } + + @StreamListener(Processor.INPUT) + @SendTo(Processor.OUTPUT) + public LogMessage enrichLogMessage(LogMessage log) { + return new LogMessage(String.format("[1]: %s", log.getMessage())); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/messages/TextPlainMessageConverter.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/messages/TextPlainMessageConverter.java new file mode 100644 index 0000000000..d690ee38a9 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/messages/TextPlainMessageConverter.java @@ -0,0 +1,26 @@ +package com.baeldung.spring.cloud.stream.rabbit.messages; + +import org.springframework.messaging.Message; +import org.springframework.messaging.converter.AbstractMessageConverter; +import org.springframework.util.MimeType; + +import com.baeldung.spring.cloud.stream.rabbit.model.LogMessage; + +public class TextPlainMessageConverter extends AbstractMessageConverter { + + public TextPlainMessageConverter() { + super(new MimeType("text", "plain")); + } + + @Override + protected boolean supports(Class clazz) { + return (LogMessage.class == clazz); + } + + @Override + protected Object convertFromInternal(Message message, Class targetClass, Object conversionHint) { + Object payload = message.getPayload(); + String text = payload instanceof String ? (String) payload : new String((byte[]) payload); + return new LogMessage(text); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/model/LogMessage.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/model/LogMessage.java new file mode 100644 index 0000000000..44a6ca4d4e --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/model/LogMessage.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.cloud.stream.rabbit.model; + +import java.io.Serializable; + +public class LogMessage implements Serializable { + + private static final long serialVersionUID = -5857383701708275796L; + + private String message; + + public LogMessage() { + + } + + public LogMessage(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + return message; + } + +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/processor/MyProcessor.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/processor/MyProcessor.java new file mode 100644 index 0000000000..563ce06b6f --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/java/com/baeldung/spring/cloud/stream/rabbit/processor/MyProcessor.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.cloud.stream.rabbit.processor; + +import org.springframework.cloud.stream.annotation.Input; +import org.springframework.cloud.stream.annotation.Output; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.SubscribableChannel; + +public interface MyProcessor { + String INPUT = "myInput"; + + @Input + SubscribableChannel myInput(); + + @Output("myOutput") + MessageChannel anOutput(); + + @Output + MessageChannel anotherOutput(); +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/resources/application.yml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/resources/application.yml new file mode 100644 index 0000000000..3d9d97a736 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/main/resources/application.yml @@ -0,0 +1,28 @@ +spring: + cloud: + stream: + bindings: + input: + destination: queue.log.messages + binder: local_rabbit + group: logMessageConsumers + output: + destination: queue.pretty.log.messages + binder: local_rabbit + binders: + local_rabbit: + type: rabbit + environment: + spring: + rabbitmq: + host: localhost + port: 5672 + username: guest + password: guest + virtual-host: / +server: + port: 0 +management: + health: + binders: + enabled: true \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java new file mode 100644 index 0000000000..18dcd8da7c --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.stream.test.binder.MessageCollector; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MultipleOutputsServiceApplication.class) +@DirtiesContext +public class MultipleOutputsServiceApplicationTests { + + @Autowired + private MyProcessor pipe; + + @Autowired + private MessageCollector messageCollector; + + @Test + public void shouldReceiveMessageInAnOutput() { + whenSendMessage(1); + thenPayloadInChannelIs(pipe.anOutput(), 1); + } + + @Test + public void shouldReceiveMessageInAnAnotherOutput() { + whenSendMessage(11); + thenPayloadInChannelIs(pipe.anotherOutput(), 11); + } + + private void whenSendMessage(Integer val) { + pipe.myInput() + .send(MessageBuilder.withPayload(val) + .build()); + } + + private void thenPayloadInChannelIs(MessageChannel channel, Integer expectedValue) { + Object payload = messageCollector.forChannel(channel) + .poll() + .getPayload(); + assertEquals(expectedValue, payload); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java new file mode 100644 index 0000000000..02638dea4c --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.stream.test.binder.MessageCollector; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MultipleOutputsWithConditionsServiceApplication.class) +@DirtiesContext +public class MultipleOutputsWithConditionsServiceApplicationTests { + + @Autowired + private MyProcessor pipe; + + @Autowired + private MessageCollector messageCollector; + + @Test + public void shouldReceiveMessageInAnOutput() { + whenSendMessage(1); + thenPayloadInChannelIs(pipe.anotherOutput(), 1); + } + + @Test + public void shouldReceiveMessageInAnAnotherOutput() { + whenSendMessage(11); + thenPayloadInChannelIs(pipe.anotherOutput(), 11); + } + + private void whenSendMessage(Integer val) { + pipe.myInput() + .send(MessageBuilder.withPayload(val) + .build()); + } + + private void thenPayloadInChannelIs(MessageChannel channel, Integer expectedValue) { + Object payload = messageCollector.forChannel(channel) + .poll() + .getPayload(); + assertEquals(expectedValue, payload); + } +} diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java new file mode 100644 index 0000000000..d004987929 --- /dev/null +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java @@ -0,0 +1,44 @@ +package com.baeldung.spring.cloud.stream.rabbit; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.stream.messaging.Processor; +import org.springframework.cloud.stream.test.binder.MessageCollector; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.cloud.stream.rabbit.MyLoggerServiceApplication; +import com.baeldung.spring.cloud.stream.rabbit.model.LogMessage; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MyLoggerServiceApplication.class) +@DirtiesContext +public class MyLoggerApplicationTests { + + @Autowired + private Processor pipe; + + @Autowired + private MessageCollector messageCollector; + + @Test + public void shouldEnrichMessage() { + // Send message + pipe.input() + .send(MessageBuilder.withPayload(new LogMessage("This is my message")) + .build()); + + // Get response from the service + Object payload = messageCollector.forChannel(pipe.output()) + .poll() + .getPayload(); + + // Assert + assertEquals("[1]: This is my message", payload.toString()); + } +} From db6811406c1c8474d06798b1947729d7b45443e0 Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 8 Oct 2017 23:59:55 -0300 Subject: [PATCH 067/836] Minor format changes. --- .../java/com/baeldung/jsonb/JsonbTest.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spring-5/src/test/java/com/baeldung/jsonb/JsonbTest.java b/spring-5/src/test/java/com/baeldung/jsonb/JsonbTest.java index 4caab86f7d..a65e171e6e 100644 --- a/spring-5/src/test/java/com/baeldung/jsonb/JsonbTest.java +++ b/spring-5/src/test/java/com/baeldung/jsonb/JsonbTest.java @@ -24,13 +24,28 @@ public class JsonbTest { public void givenPersonObject_whenSerializeWithJsonb_thenGetPersonJson() { Person person = new Person(1, "Jhon", "jhon@test.com", 20, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000)); String jsonPerson = jsonb.toJson(person); - assertTrue("{\"email\":\"jhon@test.com\",\"id\":1,\"person-name\":\"Jhon\",\"registeredDate\":\"07-09-2019\",\"salary\":\"1000.0\"}".equals(jsonPerson)); + //// @formatter:off + String jsonExpected = + "{\"email\":\"jhon@test.com\"," + + "\"id\":1," + + "\"person-name\":\"Jhon\"," + + "\"registeredDate\":\"07-09-2019\"," + + "\"salary\":\"1000.0\"}"; + // @formatter:on + assertTrue(jsonExpected.equals(jsonPerson)); } @Test public void givenPersonJson_whenDeserializeWithJsonb_thenGetPersonObject() { Person person = new Person(1, "Jhon", "jhon@test.com", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0)); - String jsonPerson = "{\"email\":\"jhon@test.com\",\"id\":1,\"person-name\":\"Jhon\",\"registeredDate\":\"07-09-2019\",\"salary\":\"1000.0\"}"; + // @formatter:off + String jsonPerson = + "{\"email\":\"jhon@test.com\"," + + "\"id\":1," + + "\"person-name\":\"Jhon\"," + + "\"registeredDate\":\"07-09-2019\"," + + "\"salary\":\"1000.0\"}"; + // @formatter:on assertTrue(jsonb.fromJson(jsonPerson, Person.class) .equals(person)); } From efc58b5b79d25b0a3624da95a9ef6c200bd6d830 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Mon, 9 Oct 2017 17:31:54 +0100 Subject: [PATCH 068/836] BAEL-1157: Update list of author names --- .../apachecayenne/CayenneAdvancedOperationTests.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java index ddfe9325d3..cd563b6270 100644 --- a/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java +++ b/apache-cayenne/src/test/java/com/baeldung/apachecayenne/CayenneAdvancedOperationTests.java @@ -151,20 +151,20 @@ public class CayenneAdvancedOperationTests { @Test public void givenTwoAuthor_whenInObjS_thenWeGetAuthors() { - String [] args = {"Paul Xavier", "pAuL Smith", "Vicky Sarra"}; + List names = Arrays.asList("Paul Xavier", "pAuL Smith", "Vicky Sarra"); List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.in(Arrays.asList(args))) - .select(context); + .where(Author.NAME.in(names)) + .select(context); assertEquals(authors.size(), 3); } @Test public void givenTwoAuthor_whenNinObjS_thenWeGetAuthors() { - String [] args = {"Paul Xavier", "pAuL Smith"}; + List names = Arrays.asList("Paul Xavier", "pAuL Smith"); List authors = ObjectSelect.query(Author.class) - .where(Author.NAME.nin(Arrays.asList(args))) - .select(context); + .where(Author.NAME.nin(names)) + .select(context); Author author = authors.get(0); assertEquals(authors.size(), 1); From e8979a40336ebacd60aaee3a9363b7ebf7683279 Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Wed, 11 Oct 2017 12:11:38 +0200 Subject: [PATCH 069/836] Pull request changes done --- spring-cloud/spring-cloud-stream/pom.xml | 120 +++++++++--------- .../spring-cloud-stream-rabbit/pom.xml | 11 +- ...ultipleOutputsServiceApplicationTests.java | 4 +- ...WithConditionsServiceApplicationTests.java | 4 +- .../rabbit/MyLoggerApplicationTests.java | 6 +- 5 files changed, 70 insertions(+), 75 deletions(-) diff --git a/spring-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml index 352b52cc17..2104ba1827 100644 --- a/spring-cloud/spring-cloud-stream/pom.xml +++ b/spring-cloud/spring-cloud-stream/pom.xml @@ -1,70 +1,70 @@ - 4.0.0 + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - org.baeldung - spring-cloud-stream - - spring-cloud-stream-rabbit - - pom + org.baeldung + spring-cloud-stream + + spring-cloud-stream-rabbit + + pom - spring-cloud-stream + spring-cloud-stream - - com.baeldung.spring.cloud - spring-cloud - 1.0.0-SNAPSHOT - + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + - - UTF-8 - 3.6.0 - + + UTF-8 + 3.6.0 + - - - - org.springframework.cloud - spring-cloud-starter-stream-rabbit - ${spring-cloud-stream.version} - - - - org.springframework.cloud - spring-cloud-stream - ${spring-cloud-stream.version} - + + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + ${spring-cloud-stream.version} + + + + org.springframework.cloud + spring-cloud-stream + ${spring-cloud-stream.version} + - - org.springframework.cloud - spring-cloud-stream-test-support - ${spring-cloud-stream.version} - test - - - + + org.springframework.cloud + spring-cloud-stream-test-support + ${spring-cloud-stream.version} + test + + + - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - - + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml index 9eede9e92c..a954a7035e 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/pom.xml @@ -17,17 +17,16 @@ - org.springframework.cloud - spring-cloud-starter-stream-rabbit + spring-cloud-starter-stream-rabbit - org.springframework.cloud - spring-cloud-stream-test-support - test - + org.springframework.cloud + spring-cloud-stream-test-support + test + diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java index 18dcd8da7c..196d4f0d23 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java @@ -26,13 +26,13 @@ public class MultipleOutputsServiceApplicationTests { private MessageCollector messageCollector; @Test - public void shouldReceiveMessageInAnOutput() { + public void whenSendMessage_thenResponseIsInAOutput() { whenSendMessage(1); thenPayloadInChannelIs(pipe.anOutput(), 1); } @Test - public void shouldReceiveMessageInAnAnotherOutput() { + public void whenSendMessage_thenResponseIsInAnotherOutput() { whenSendMessage(11); thenPayloadInChannelIs(pipe.anotherOutput(), 11); } diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java index 02638dea4c..a74ee61be6 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java @@ -26,13 +26,13 @@ public class MultipleOutputsWithConditionsServiceApplicationTests { private MessageCollector messageCollector; @Test - public void shouldReceiveMessageInAnOutput() { + public void whenSendMessage_thenResponseIsInAOutput() { whenSendMessage(1); thenPayloadInChannelIs(pipe.anotherOutput(), 1); } @Test - public void shouldReceiveMessageInAnAnotherOutput() { + public void whenSendMessage_thenResponseIsInAnotherOutput() { whenSendMessage(11); thenPayloadInChannelIs(pipe.anotherOutput(), 11); } diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java index d004987929..b939af25fc 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java @@ -12,7 +12,6 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.baeldung.spring.cloud.stream.rabbit.MyLoggerServiceApplication; import com.baeldung.spring.cloud.stream.rabbit.model.LogMessage; @RunWith(SpringJUnit4ClassRunner.class) @@ -27,18 +26,15 @@ public class MyLoggerApplicationTests { private MessageCollector messageCollector; @Test - public void shouldEnrichMessage() { - // Send message + public void whenSendMessage_thenResponseShouldUpdateText() { pipe.input() .send(MessageBuilder.withPayload(new LogMessage("This is my message")) .build()); - // Get response from the service Object payload = messageCollector.forChannel(pipe.output()) .poll() .getPayload(); - // Assert assertEquals("[1]: This is my message", payload.toString()); } } From 44fa64e29fed5a59d8a2c26d7498defb9084a8a7 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 14 Oct 2017 05:59:37 +0200 Subject: [PATCH 070/836] BAEL-1171 String.lang.String API --- .../java/com/baeldung/string/StringTest.java | 186 ++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/core-java/src/test/java/com/baeldung/string/StringTest.java b/core-java/src/test/java/com/baeldung/string/StringTest.java index fd83c903a3..324f4690fc 100644 --- a/core-java/src/test/java/com/baeldung/string/StringTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringTest.java @@ -2,6 +2,13 @@ package com.baeldung.string; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.IllegalFormatException; +import java.util.regex.PatternSyntaxException; import org.junit.Test; @@ -12,6 +19,11 @@ public class StringTest { assertEquals(97, "abcd".codePointAt(0)); } + @Test(expected = StringIndexOutOfBoundsException.class) + public void whenPassNonExistingIndex_thenExceptionThrown() { + int a = "abcd".codePointAt(4); + } + @Test public void whenCallConcat_thenCorrect() { assertEquals("elephant", "elep".concat("hant")); @@ -21,6 +33,180 @@ public class StringTest { public void whenGetBytes_thenCorrect() { byte[] byteArray = "abcd".getBytes(); byte[] expected = new byte[] { 97, 98, 99, 100 }; + assertArrayEquals(expected, byteArray); } + + @Test + public void whenGetBytesUsingUTF16_thenCorrect() { + byte[] byteArray = "efgh".getBytes(StandardCharsets.US_ASCII); + byte[] expected = new byte[] { 101, 102, 103, 104 }; + + assertArrayEquals(expected, byteArray); + } + + @Test + public void whenCreateStringUsingByteArray_thenCorrect() { + byte[] array = new byte[] { 97, 98, 99, 100 }; + String s = new String(array); + + assertEquals("abcd", s); + } + + @Test + public void whenCallCharAt_thenCorrect() { + assertEquals('P', "Paul".charAt(0)); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void whenCharAtOnNonExistingIndex_thenIndexOutOfBoundsExceptionThrown() { + char character = "Paul".charAt(4); + } + + @Test + public void whenCallCodePointCount_thenCorrect() { + assertEquals(2, "abcd".codePointCount(0, 2)); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void whenSecondIndexEqualToLengthOfString_thenIndexOutOfBoundsExceptionThrown() { + char character = "Paul".charAt(4); + } + + @Test + public void whenCallContains_thenCorrect() { + String s = "abcd"; + + assertTrue(s.contains("abc")); + assertFalse(s.contains("cde")); + } + + @Test + public void whenCallCopyValueOf_thenStringConstructed() { + char[] array = new char[] { 'a', 'b', 'c', 'd' }; + + assertEquals("abcd", String.copyValueOf(array)); + } + + @Test + public void whenCallEndsWith_thenCorrect() { + String s1 = "test"; + + assertTrue(s1.endsWith("t")); + } + + @Test + public void whenFormat_thenCorrect() { + String value = "Baeldung"; + String formatted = String.format("Welcome to %s!", value); + + assertEquals("Welcome to Baeldung!", formatted); + } + + @Test(expected = IllegalFormatException.class) + public void whenInvalidFormatSyntax_thenIllegalFormatExceptionThrown() { + String value = "Baeldung"; + String formatted = String.format("Welcome to %x!", value); + } + + @Test + public void whenCallIndexOf_thenCorrect() { + assertEquals(1, "foo".indexOf("o")); + } + + @Test + public void whenCallIsEmpty_thenCorrect() { + String s1 = ""; + + assertTrue(s1.isEmpty()); + } + + @Test + public void whenCallLastIndexOf_thenCorrect() { + assertEquals(2, "foo".lastIndexOf("o")); + } + + @Test + public void whenCallRegionMatches_thenCorrect() { + assertTrue("welcome to baeldung".regionMatches(false, 11, "baeldung", 0, 8)); + } + + @Test + public void whenCallStartsWith_thenCorrect() { + assertTrue("foo".startsWith("f")); + } + + @Test + public void whenTrim_thenCorrect() { + assertEquals("foo", " foo ".trim()); + } + + @Test + public void whenSplit_thenCorrect() { + String s = "Welcome to Baeldung"; + String[] array = new String[] { "Welcome", "to", "Baeldung" }; + + assertArrayEquals(array, s.split(" ")); + } + + @Test(expected = PatternSyntaxException.class) + public void whenPassInvalidParameterToSplit_thenPatternSyntaxExceptionThrown() { + String s = "Welcome*to Baeldung"; + + String[] result = s.split("*"); + } + + @Test + public void whenCallSubstring_thenCorrect() { + String s = "Welcome to Baeldung"; + + assertEquals("Welcome", s.substring(0, 7)); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void whenSecondIndexEqualToLengthOfString_thenCorrect() { + String s = "Welcome to Baeldung"; + + String sub = s.substring(0, 20); + } + + @Test + public void whenConvertToUpperCase_thenCorrect() { + String s = "Welcome to Baeldung!"; + + assertEquals("WELCOME TO BAELDUNG!", s.toUpperCase()); + } + + @Test + public void whenConvertToLowerCase_thenCorrect() { + String s = "WELCOME to BAELDUNG!"; + + assertEquals("welcome to baeldung!", s.toLowerCase()); + } + + @Test + public void whenCallReplace_thenCorrect() { + String s = "I learn Spanish"; + + assertEquals("I learn French", s.replaceAll("Spanish", "French")); + } + + @Test + public void whenIntern_thenCorrect() { + String s1 = "abc"; + String s2 = new String("abc"); + String s3 = new String("foo"); + String s4 = s1.intern(); + String s5 = s2.intern(); + + assertFalse(s3 == s4); + assertTrue(s1 == s5); + } + + @Test + public void whenCallValueOf_thenCorrect() { + long l = 200L; + + assertEquals("200", String.valueOf(l)); + } } From 82fde89335c1abe44cb65e7625bbdb8ca4f8c629 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 15 Oct 2017 12:38:54 +0200 Subject: [PATCH 071/836] BAEL-1171 java.lang.String API --- .../src/test/java/com/baeldung/string/StringTest.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core-java/src/test/java/com/baeldung/string/StringTest.java b/core-java/src/test/java/com/baeldung/string/StringTest.java index 324f4690fc..5bb4de27ee 100644 --- a/core-java/src/test/java/com/baeldung/string/StringTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringTest.java @@ -38,7 +38,7 @@ public class StringTest { } @Test - public void whenGetBytesUsingUTF16_thenCorrect() { + public void whenGetBytesUsingASCII_thenCorrect() { byte[] byteArray = "efgh".getBytes(StandardCharsets.US_ASCII); byte[] expected = new byte[] { 101, 102, 103, 104 }; @@ -155,6 +155,13 @@ public class StringTest { String[] result = s.split("*"); } + + @Test + public void whenCallSubSequence_thenCorrect() { + String s = "Welcome to Baeldung"; + + assertEquals("Welcome", s.subSequence(0, 7)); + } @Test public void whenCallSubstring_thenCorrect() { From c3a2179b9bcfb07fb3603cfc76be735e8924e41c Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sun, 22 Oct 2017 03:45:08 +0100 Subject: [PATCH 072/836] BAEL-132: Configure Jenkins to Run and Show Jmeter Tests --- pom.xml | 1 + spring-jmeter-jenkins | 1 + 2 files changed, 2 insertions(+) create mode 160000 spring-jmeter-jenkins diff --git a/pom.xml b/pom.xml index c3915e4fce..996ca91f2e 100644 --- a/pom.xml +++ b/pom.xml @@ -168,6 +168,7 @@ spring-hibernate5 spring-integration spring-jersey + spring-jmeter-jenkins spring-jms spring-jooq spring-jpa diff --git a/spring-jmeter-jenkins b/spring-jmeter-jenkins new file mode 160000 index 0000000000..a1b44b4c48 --- /dev/null +++ b/spring-jmeter-jenkins @@ -0,0 +1 @@ +Subproject commit a1b44b4c487164577be3c7eb4bf215d39a0700df From fdd485ddd91a42ba07ae33e6f94bee8a6ea1e507 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 22 Oct 2017 10:48:39 +0200 Subject: [PATCH 073/836] BAEL-1250 Initializing Arrays in Java --- .../com/baeldung/array/ArrayInitializer.java | 48 +++++++++++++++++++ .../baeldung/array/ArrayInitializerTest.java | 48 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/array/ArrayInitializer.java create mode 100644 core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java new file mode 100644 index 0000000000..0c9bf1834e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java @@ -0,0 +1,48 @@ +package com.baeldung.array; + +import java.util.Arrays; + +public class ArrayInitializer { + + public static int[] initializeArrayInLoop() { + int array[] = new int[5]; + for (int i = 0; i < array.length; i++) + array[i] = i + 2; + return array; + } + + public static int[][] initializeMultiDimensionalArrayInLoop() { + int array[][] = new int[2][5]; + for (int i = 0; i < 2; i++) + for (int j = 0; j < 5; j++) + array[i][j] = j + 1; + return array; + } + + public static String[] initializeArrayAtTimeOfDeclarationMethod1() { + String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" }; + return array; + } + + public static int[] initializeArrayAtTimeOfDeclarationMethod2() { + int[] array = new int[] { 1, 2, 3, 4, 5 }; + return array; + } + + public static int[] initializeArrayAtTimeOfDeclarationMethod3() { + int array[] = { 1, 2, 3, 4, 5 }; + return array; + } + + public static long[] initializeArrayUsingArraysFill() { + long array[] = new long[5]; + Arrays.fill(array, 30); + return array; + } + + public static int[] initializeArrayRangeUsingArraysFill() { + int array[] = new int[5]; + Arrays.fill(array, 0, 3, -50); + return array; + } +} diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java new file mode 100644 index 0000000000..0797a524c4 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java @@ -0,0 +1,48 @@ +package com.baeldung.array; + +import static com.baeldung.array.ArrayInitializer.initializeArrayAtTimeOfDeclarationMethod1; +import static com.baeldung.array.ArrayInitializer.initializeArrayAtTimeOfDeclarationMethod2; +import static com.baeldung.array.ArrayInitializer.initializeArrayAtTimeOfDeclarationMethod3; +import static com.baeldung.array.ArrayInitializer.initializeArrayInLoop; +import static com.baeldung.array.ArrayInitializer.initializeArrayRangeUsingArraysFill; +import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysFill; +import static com.baeldung.array.ArrayInitializer.initializeMultiDimensionalArrayInLoop; +import static org.junit.Assert.assertArrayEquals; + +import org.junit.Test; + +public class ArrayInitializerTest { + + @Test + public void whenInitializeArrayInLoop_thenCorrect() { + assertArrayEquals(new int[] { 2, 3, 4, 5, 6 }, initializeArrayInLoop()); + } + + @Test + public void whenInitializeMultiDimensionalArrayInLoop_thenCorrect() { + assertArrayEquals(new int[][] { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 } }, initializeMultiDimensionalArrayInLoop()); + } + + @Test + public void whenInitializeArrayAtTimeOfDeclarationMethod1_thenCorrect() { + assertArrayEquals(new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" }, initializeArrayAtTimeOfDeclarationMethod1()); + } + + @Test + public void whenInitializeArrayAtTimeOfDeclarationMethod2_thenCorrect() { + assertArrayEquals(new int[] { 1, 2, 3, 4, 5 }, initializeArrayAtTimeOfDeclarationMethod2()); + } + + @Test + public void whenInitializeArrayAtTimeOfDeclarationMethod3_thenCorrect() { + assertArrayEquals(new int[] { 1, 2, 3, 4, 5 }, initializeArrayAtTimeOfDeclarationMethod3()); + } + + public void whenInitializeArrayUsingArraysFill_thenCorrect() { + assertArrayEquals(new long[] { 30, 30, 30, 30, 30 }, initializeArrayUsingArraysFill()); + } + + public void whenInitializeArrayRangeUsingArraysFill() { + assertArrayEquals(new int[] { -50, -50, -50, 0, 0 }, initializeArrayRangeUsingArraysFill()); + } +} From 0623fb5b172c5637b93627d02b4ad218d83d8075 Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sun, 22 Oct 2017 16:14:18 +0100 Subject: [PATCH 074/836] Removed submodule spring-jmeter-jenkins --- spring-jmeter-jenkins | 1 - 1 file changed, 1 deletion(-) delete mode 160000 spring-jmeter-jenkins diff --git a/spring-jmeter-jenkins b/spring-jmeter-jenkins deleted file mode 160000 index a1b44b4c48..0000000000 --- a/spring-jmeter-jenkins +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a1b44b4c487164577be3c7eb4bf215d39a0700df From 3d0fe787cfaee47105b1b1305bc376afec6aeabd Mon Sep 17 00:00:00 2001 From: Dassi Orleando Date: Sun, 22 Oct 2017 16:15:50 +0100 Subject: [PATCH 075/836] Commit again spring-jmeter-jenkins --- spring-jmeter-jenkins/.gitignore | 24 ++ .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 49502 bytes .../.mvn/wrapper/maven-wrapper.properties | 1 + spring-jmeter-jenkins/README.md | 55 +++++ spring-jmeter-jenkins/mvnw | 233 ++++++++++++++++++ spring-jmeter-jenkins/mvnw.cmd | 145 +++++++++++ spring-jmeter-jenkins/pom.xml | 52 ++++ .../SpringJMeterJenkinsApplication.java | 13 + .../java/com/baeldung/domain/Student.java | 66 +++++ .../repository/StudentRepository.java | 7 + .../src/main/resources/JMeter-Jenkins.jmx | 96 ++++++++ .../src/main/resources/application.properties | 14 ++ .../SpringJMeterJenkinsApplicationTests.java | 16 ++ 13 files changed, 722 insertions(+) create mode 100644 spring-jmeter-jenkins/.gitignore create mode 100644 spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.jar create mode 100644 spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties create mode 100644 spring-jmeter-jenkins/README.md create mode 100755 spring-jmeter-jenkins/mvnw create mode 100644 spring-jmeter-jenkins/mvnw.cmd create mode 100644 spring-jmeter-jenkins/pom.xml create mode 100644 spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java create mode 100644 spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java create mode 100644 spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java create mode 100644 spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx create mode 100644 spring-jmeter-jenkins/src/main/resources/application.properties create mode 100644 spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationTests.java diff --git a/spring-jmeter-jenkins/.gitignore b/spring-jmeter-jenkins/.gitignore new file mode 100644 index 0000000000..2af7cefb0a --- /dev/null +++ b/spring-jmeter-jenkins/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.jar b/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..5fd4d5023f1463b5ba3970e33c460c1eb26d748d GIT binary patch literal 49502 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%0A$pwhjXzyA0ZzErH{1@M z22-6b1SQ!SMNyqj_7MXE2cwcEm)W)YwB)ji`3Y^5ABx--A11WB3mBQB<7K!~``j&@ z8PKJ^KSa>#M(rar$h}aBFuNI9sB5uAquDlzKW+hYB&WKf9i&+q$j5P;sz2u$f`uHS zaX8$!@N2b81<<0w<{CpXzQGqSZRpfVb3R%bjsw-Kl}2UH>}1M?MLA#ojYaagiYL!P z$_@7yOl~PbidzJ8yx{Jz9&4NS99(R5R&lf~X_{xjXj|tuvPgvzbyC}#ABy^+H+FN0 z8p5U!{kxOvdv3fr35|Kb`J(eXzo*GvF6`_5GI)&6EW}&OGp=!8n`W0mr_o~Xq-t?% z_pDDfIW#L^DmX?q#mA%Jz-f86KG`^7V|1zdA#4#<=}91g$#@J`gOqMu+7H&yMdNIt zp02(*8z*i{Zu;#S#uP#q!6oNjQzC|?>fgzorE(d+S#iv4$if+$-4$8&eo zuSZJ1>R2HJ^3T9dr{tn+#JMGv#x@&C$EZapW9)uhp0`rDsISKrv`~3j)08JZlP&}HwA!z^~-?Ma(x0_AS{@r z8!(Z}5d8+5f7`r3pw_a=Z`!0r6r4%OAGYBoq3T7^xI@9xG3prNo>`}k>@VAQk>(=DIy(szD&6@u?YVdC|pJLT@lx{=IZ; zIkO4)YWp*Dpp$`H$Ok#yf;yBmHvTb@)4j)jVNF-O?$nD25z7)I!cWQ|Yt zeS<_C{i|BS4HICD=}T(|)@vd(v!?P4t4>APo7`K5RJvcTpr_KgWeB~zMLknrKMgpx zyN-EI%es5e)FNho=}qGu$`98v(QDPUMUGrY4tq>?x$md>qgNO0@aAQLMLr8XD8z%; z2Osn1D>N^22w4Xb8{~fi^i~SthAo7%ZjNb)ikgj0_AsXqF_0+W6E_doOUi0uV6Lvg z98Xk#>IK|-YHx!XV64==b(nYKMEyqPF?D)yxE=~;LS?LI_0)|1!T3ZtLa?(qd|YlXdI-e$W z(3J*FbOe3cSXvDaTHU^Hqpf2i8aH+ZzqY$cFFIH;fxMtW^(AmiMkBtb9esujw?rte zoo&0%Afb~VBn6A1@R1!OFJ0)6)Fn72x{}7n z+b#5gMommvlyz7c@XE`{ zXj(%~zhQne`$UZ5#&JH0g={XdiEKUyUZwIMH1rZTl%r@(dsvBg5PwEk^<+f_Yd~a@ z%+u%0@?lPzTD>!bR(}RQoc>?JwI|dTEmoL`T?7B zYl^`d{9)rW)|4&_Uc3J=RW25@?ygT$C4l-nsr+B0>HjK~{|+nFYWkm77qP!iX}31a z^$Mj&DlEuh+s(y*%1DHpDT`(sv4|FUgw5IwR_k{lz0o=zIzuCNz|(LMNJwongUHy#|&`T5_TnHLo4d+5bE zo*yU%b=5~wR@CN3YB0To^mV?3SuD~%_?Q{LQ+U){I8r*?&}iWNtji=w&GuF9t~=Q2 z$1cFAw1BTAh23~s$Ht$w!S2!8I;ONwQnAJ;-P4$qOx-7&)dWgIoy-8{>qC8LE?LhJ zR-L4qCha@z*X+j|V<+C(v)-UZmK0CYB?5`xkI)g2KgKl-q&7(tjcrhp5ZaBma4wAd zn`{j>KNPG>Q$xr7zxX}iRo=M#@?>}?F`Sv+j6>G9tN!g@14LUf(YfA4e=z+4f zNpL4g?eJK`S${tcfA{wbn({8i+$wMaLhSJo`-Yp@G2i0Yq~@wdyFxoVH$w9{5Ql2t zFdKG?0$ zV7nmYC@PSsDhnELrvd8}+T=C6ZcR?`uapdWLc2eaww5vKtjQQgbvEr^)ga?IF;@1(?PAE8Xx5`Ej&qg|)5L}yQA1<^}Y zp7WZpk%}L9gMMyB^(mFrl&2Ng$@#Ox3@Z6r%eJ`sGDQbT0a9ruO`T|71C;oCFwTVT zaTnu)eVKURM`1QuvrBhj;1e>1TEZW54sKUfx0Z=N*;Jpdh~Aj-3WB zR|EYVGDxSvnjeA?xxGF41Wj?~loVahklw|zJ=v3pOEVZFJG^TvR z-tJN5m;wZp!E7=z;5J*Oaq%2bc|Jw!{|O+*sja+B(0D2_X`c2)nVkzP1S~LOj~xs!@>aN z3$K2^pW}@R-70K!X&s4DHHoV&BmGWTG4vi9P1H$JxmD|t_V{GlHZv(`yJ234IVuSr z~!;~#ublS8qdL8SJG@XRCwWhkZyg_EKH(sB2}QQSv4W}|CT0ntD_4Eyp519d1%yKvc33|`yW9QzeJ4*XLP7@l=td+bwxSL~jCf-ny)IDC^~u5s)E-y^FdtU?)hkN{82Y{Lo)bCWcBOx;Jbw;)Pg9bWQQTY-3RWehpok!>D>Sa2EcEOS@ua)#G3I+GxL_ra^92Y!}tMX zwAp*Fv-aAarn`ME7N#Uyim%ynre6u?KS15L#$#rKZSgLnXx;g8TP9suMpO055p278 z%o-6eT(3gdIVFN}Gb3k$zbTyrHYel1x6OxETsk&h0E?&}KUA4>2mi0len7~*;{Io~ znf+tX?|;&u^`Bk-KYtx6Rb6!y7F)kP<5OGX(;)+Re0Y;asCLP;3yO#p>BRy*>lC$}LiEEUGJHB!a=&3CddUu?Qw>{{zm)83wYRy%i}UV2s| z9e>ZXHzuMV#R1yJZato0-F|Jl_w2sUjAw@FzM=DxH}vM>dlB&bQ!>51aGc}&WAH`b z6M6iG$AyJIAJ7-c0+(;pf=2=!B=%yoM1i9r==Q+}CK3uW%##U1rP~mwjUb8PLsi8Q zq!aTLLYK4HQ$vN1sU;d3XW{oFA{u@1$tduWmdOqc(~AqWq+`V)G&?YOOwAK20x>{q zOgII2&A_FXPzVtgrD80Y5J+_SEmyUcdM2N%q);|ZF_m z)6PBcOcAAy3kN*`8ac%zPH3^61_zn6_2FT#NCOWYx>ezqZzCC;tzM%pJC^gFAFcTs ze6C3WE-a*=nt8tErPG9zfPRn$QHqB7aHe8x3w&rWT(0F54<2uBJDYtbB}y|@9V6T( zmM!t}T5SuwxyTCma14&l|yiQRw5Pn|OiDBkx z?4tUGrIVsC9zs=F{W>zl9XeknEc+~Mz7zCnefUPUF8iF?A)QJK8=84#-TLLxq?BTM z=VYjYW%TOhrBp>3D@K{vStlEUt%e{HRc=766AQ+s7V_F|1A!)P3?y*=gUgbZO;O39 zX*BC((-XbnoaRGxxhRQRVKCDG9|qC6?7TwCz{A{OZp$Wu(~0DFo(w^P3f>4gr8@P^ zl8`!vA=_fvwTZc%-Z42}m>Q;KQ~&v;ipZzbA2;}Peg*v}TlKRmU%4WNN<%qb!cLo= zoSx;XBrv4}ErykT!)z)Qar4o?(q6!mpWLNFe~Nz0S@yI{1)Lxt<0K=Q$~>*HH+Wbp zQ~fx0aup_lZb|e6*@IJOJjw~Ypiwdq69&Y2vthfGq6u1!Joy%;v;~4`B@B*S(}}i- zmZc^*aHOK(dd(geOKg)P+J4+*eThk;P@wRjvm}e)h|#EpsV9YoqqRW{)ABhRlvGA* zL$&k5w*_-X1ITCwXiH=)=5lzjxY5tQJTBrv<{dM7$98pdK%i;RGZtiJKaSGCji7w)aNrHu_9_IPGHS-mMN5AheTn_ia^YdunCzcp2ap8eI-RQEm zj(q7_CT)o|w_noPm@MVqIjv%H4Bdo6*9*!Zj)bLx!p9POp(`$dj1QW`V=;=|`Gx8QST=OnK5jlJX3!KBz>v7j$&5b5YrhIArRVL)1C^o{@DJ}*mk*s=< zDK{e2f%fG)mK_Mz*x@#ahOO)cQQ#VH+8Wef>NKWcu4J>PIc3iz8y6PwCmY|UQ(O3!B;HtsE&jvyv^XjL7Env5#i zH4-k5GzPr-%36#%+Hvw1*UiOIk3b7F^|1dPi!-i7C^ZWp~_KI%D!sGYb@@zXa?*{XfjZ~%Y^mT!kaK_>K8 z_jL78^ zS0eRdqZ0v~WWow1CE;vDBh#{w9R4JgB!})W9N{{D=p-RMnehZ#pH*ABzDP46ryZkt z4ek|LHS{CDhTTMQa3a5fO9OLg?y$+#Gi2}Fv>QD-+ZEQKX2Fv{jr~miXz1ZpPcXvJ zNvQT@kQbBz_Y4Kg)*`E2t;tPh5_7tSGvL-|-A`lgHX3uVG4jLev9>YCZUeNNzioL? z;OBD{z+=Gs3+*ph)#bO#7IHl|rOFfvpK%cF>W??Q!Nh&B@hByD&}g|>a?GJ4uhX3g zPJXKKAh&zWv&wITO66G{PuGLsxpWSqaadFsv>_vQt?LVslVob7wylsa+O`IYWySoO z$tw#v7=&7ZGZqS}N!c##5-bC%>ze*s0H9J%d|!JgE#uZ|k1_bAn*x(Y%r{c=(HLwNkPZOUT#@j4{YfG#@=49YJ{?7? zddbK}G-@Dod&^Vf`GOo)G|`n@kq?Z=o84x{889+?F*dQz(kr@9lQ-TXhGN`)^-Li1 zb}xO2W(FvB2)EA;%qAkHbDd&#h`iW06N1LYz%)9;A&A25joc!4x+4%D@w1R+doLs= z#@(A@oWJq?1*oT>$+4=V=UnuMvEk;IcEnp4kcC<_>x=Hw9~h+03Og7#DK(3y3ohIp z-gQ$-RQIJTx%0o@PDST|NW41VgAR?CH`Sj-OTS0)?Y*M_wo|92;Oz)aya`^I0@?S{ z<%^epAw!Tw(bvSmU_k~Im^%#|0`Xkcmxj;31jX2Gg?PbzdXp9Dg~P)PW+Xi%iWiCr zV-Vv9IR5guDS2lGV!lfTWxkD8w%yz=UB`2j2Zb0eg~arRA*Q6>`q=8#4&OC|L6O}8 z)!w(idG0yk-BF#~k@Avk>an9z_ibOP*Rb;db_PsakNWYdNoygT?yRG=+5>ud<6Vxhk?P9rk!+8?xMg!x5kD*f2XOd^`O3U zlO;ImEy0SYI_J05cMW{dk@%d@iZFCNhIVtOm8$viM>=zM+EKJG%c0)dZ0D$4*-psQ zW+Fq|WmbYkBh5|^-l$w-`Uy8#T#<+3=}z!(6RadEpFlr1f6OFuQ5sG735YicWaoYR z`wuEZT2dntHGC7G*Kzk$tsm?Fd25LTHJj?Zo2RH;9rW9WY1`;@t_O3NC};dayX;Ib zgq6afb4!50qL-o5%yzgcR-1Xm-l4SE!rE>o!L=E`Jeug(IoZ36piq6d)aek0AV)EJ zaha2uBM!>RkZHRN0#w07A=yf4(DBmy(IN6NdGe$?(7h?5H)*?(Li#GjB!M{nq@C3# z^y{4CK_XQKuO>(88PRb&&8LbRDW1Ib>gl6qu(7g}zSkf<8=nFPXE1~pvmOT3pn^sa z+6oK0Bn$TBMWYTmhJzk_6)$>>W)nF^N$ld9 z8f^Y^MLVz@5b}F0fZID^9%hRL#()Xw*%yhs&~|PK|MGI8zuO!f!FqbmX9icd zXU(JOCwac|Z|=Yr(>Q3)HsXl!^$8VSzsgI#)D2XkpZ2=WOBcFF!2&d;*nF%h0I!`mRHl$91jYzqtLfNHUoYzrMzjR)u zP_|Hti4^){G?Ge6L_T^zVdS@KHwtq^+*+aBNl=hVc6#KB-It()qb&8LhnVW9Yxn&S z&^s^u1OzB(d_ByXz=xm4cpJzNzV+Txh`~H(176n4RGlY6( zg?ed(a!J?4(oL}@UfBpgPL*)KrGtM_hMIdu!RywK@d!b-{YAY?(?w3yB@Fi3g|G)| zho%)<=%Q$Lo7S-BxEjTL;M74{y+`Q^Xg#j}VvF|Y>X7s+Ps~aqT--tJNd9U6;Ej&o zj@|!`{Xy90t_Zdb>+m8tCFJ@X(Y$mR>%)gv4Vt;oGr`idhQ7H1^L3v4<_2}-UoguorcscRfdgumUVa0mK7-Wm~#vbrnX9ro}@82q=9t;lM9nH<} zLL#=1L7*f+mQWfyFnETMi*fe8AI+gdY6BM7CkRS&i4$ZRv$v*=*`oo>TjZ84sYD&T zI!DgZ4ueeJKvjBAmHNu|A?R2>?p{kQCRy zRnGg@C%oB#-;H-o-n##G`wcPWhTviRCjB{?mR20|wE9Kn3m6(%Sf_oNXWP^b;dz7( zb{blETKwpl`AT#W7E6T|0*bl?%r{}-BYdwrn0zN(DZXM1~53hGjjP9xzr$p z>ZH?35!~7LHiD7yo7-zzH18eTSAZjW>7-q5TYzDvJ$$S$Z@q)h)ZnY(3YBl+_ZK~* zd6T1UEKdrzmv2xc>eFj2^eQPu;gqBdB@TLqWgPk|#WAS0c@!t08Ph)b>F3 zGP}9_Pfp;kelV05nUfnb%*Oa{h;3Yi^B5xyDM~1r@o%v#RYi-%EYfSYY&02eW#bGb zu8(H8i9zhyn%?kx5Txx^6 z2i}CK(HeQ_R2_u?PFp#6CK zjr}k8Cx#C?DFgP`uN<;}x*Gd$-JgG3J_i3s>fk@_Po}b|JNz=Dm+<{^51m=mO;n4B&azYm{>+VhB{iyxuW+j>w@>VHcJyoSBQi=hu0;p zPw3Aj?%Ai^UeD{ySPIqsf|v0L&f_fmE7oh(s|jwbkK5^AQ9F|;a5V}EdSE?fyxdgf zHTq!f0;+-V{0oF+l_~>rMGk?f~m^wDXlxqt1@+)6Zv?BNR$+%$i z*NF93f}~4d9H2C7@?IibyqUtLL!XZW2ap4fkkxMqDZuZ>`+AfWJQ%~O2WR}NoA=OP zieg@q!mP z?=qU=EE6L0_UpzXt0qwX2tF~}c|;`#MUY2TMz6k({hpkiSz>Dxt*4-PtkAdAA*0hn zk~CK6#V=*^m5 zg$tB6rSO-=9l>GAl^DjJBHdk0wD0(L!OrcZ?qmtYbl+}s(@rtE-O=RTx*1cZq~u~5 zQPVt(IB=*?Pm;Le%#i1SFxHY|>=Y$^RF-FGAUSkBpn`|+p!4RHyv-Q(XgZ5Xg5W}J z8RcT?+4FdVQ>z~9kP5By8eM95f_LDnsnA%K;i6`OpcuJS=^n|6nH-B2EhH=dLbO@Z zuw=Ug>7gsu33`Pzy3Lji0x8OCH={?VRqFEi;@oDIS<*?dG@9X1*tlYCm4YUIMhyfo zJ~=K@-X$D z<-4dH<-5o#yMj%f@U{nfWYVdrREJ}_o4&|c*_+M6gk z-Up9-i~jM-bwR;Bf0&C5wteli>r7ZjGi+mHk3aC4mS5 zPC^{w+G%menlWun+&<#i&DJ41thvk;OKZEB`S%sZ6 zzYpO2x_Ce@fa0LuIeC=7gRHN#os!MQ7h}m9k3@u68K2$&;_mSe2`>uvV<`RgC)TKX z`J}&Kb%*f{Oznj$%-QafB}Zb$Pi%@D&^ZTcgJ0+Bk6-iOJ-P|Q10)5ie2u0JzKb2r z2C@{f?ZBcPw5%h&aKG+6%Qvhw(t1Y{hZ82YE4(Tlk`2VCgE&1x;AUt+5U*$%>P|iWLeb_PJL!VX=b4#>#QM;TGjFHBNRy+d{v>2cVXFyqaLd300 zFHWrc8lB1KSOH3dkJClJ%A5oE^31WrQZ3^-3`Zk?1GqoV7Wr62=V9C=(;#R zhzXAT03)d z9OdZ|;CjSnqQeqF-CUNR=x9x76JYnpr|T+6u#$y=7cMVG72k4f*BJIG>l1NNvyv6NQzr4U`r;= z&%W1Ri2sI5p|8%q5~zM-AMptHj_eX7FzJN7t(%+2dA)efyFbePBsClxY_yMqWbEdT z+jm?SZgH3mCzU?e^psnyd8UK zfZ$^_^}C1WYB1-$m4qwT@#=wsAq$9Xj=%IRvc#V?1azEi|RSc;M zQn;3%Gjk3D)R+3`gZplB>Pt;g?#EiwRzxON;% z#P5IK*YAh1Md<$o21R}j^8Y#t#`fP`nErnb@&CkI{`XNXulcVIXwLcS%VE4i4-!8a zpj-q)#TqXkFg&z4G9pG45A-$B_Lfacr)H85ge*yqTLAb(oY1$6Xu7Rc%^aVOmzsKd z=WEXA40~hm@7FKD9t14nSRt)m0XWkP1YbAE009nIupf`md=v&J;C}estaY0%^Z;;lf>5AF-y%Xf1QEK(}4n+ zhKsTx^bQSpwM=UWd3WRcpEQfw>P%zuhLeEdY}s%cGitMZa14Ui*Mzm%=(7<#b2gHmJ?kdeymT7H+Z8k8tgd zp-dhC)R!P!)w(n%RgOi%^)LGZX)yxC%@f@d4x@IRbq{elrCHyIuphEE6qd6l6O`;B zi0WQg;j`hcu51uYTBSSYNvY{Lkn$iu=Ae0g6o1cSTRwXmEvNcNI zv;)Z_?g>?aG`Zp}*gY8%LGI}{>J#`x;v=*ykuY@z2Erz>@b*)tMp2>=C20MI8|{Z2 z9hbyDJ7d#MdWK&fyZB>Jdm!#x_uRw%>`OuM!&QMim}baa76{L|VAuq%1UpXVHsClm zPD4}hjj{lj`)aaD;x|PJ9v@?8gZ!t5hER6!b~HJ_l9P|(h&R6js3mAfrC|c+fcH^1 zPF*w*_~+k%_~6|eE;-x}zc%qi-D-UpTcAg|5@FCEbYw6FhECLo+mVn^>@s-RqkhuDbDmM~lo<4sa`|9|$AltN_;g>$|B}Qs zpWVSnKNq69{}?|I`EOT~owb>vzQg|?@OEL`xKtkxLeMnWZ@ejqjJ%orYIs!jq3 zTfqdNelN8sLy2|MAkv`bxx`RN?4Dq{EIvjMbjI57d*`pO?Ns{7jxNsbUp=rF$GCut z7#7Dm#Gvh}E8~2Tyhj2reA%=ji|G6yr%@QV{(90cE{JYOW$0F|2MO+TM^`cAu$B7s zmBV^{IqUIbw5~muv}st`dDdIxSU@Eb>xf3$qwEcg;H+vp1^ArN@A)RtQ4hrid2B{9 zb~pG8?SC3#xctpJXWRGXt=cx6Cw!IqoJrK)kuLL&`UYYB{R6Dw)k9nKy>R#q_X|V* z%zVsST$=d(HozVBc|=9<175^~M$v$hL9azT^)TL7BIA#qt>N2^iWvMQgt;!YZt~cv zn!x^OB!3mOVj>^^{mloGiJhLI4qy3Vt-148>9j~d8coH)q|Cg5P89Xj>>hjtzq5iT z%go41Nhi}x7ZztTWj|deVpj>Oc#IrI{NxIm;qhnuNlvNZ0}d=DVa}=H0}Vi-I+wKK z*1uD=0_)b-!9S^5#(%_>3jcS-mv^;yFtq$1)!wGk2QP%=EbpoW++nvbFgbun1Eqri z<%yp)iPo|>^$*IHm@*O74Jve%nSmDeNGrZ&)N9 z)1rSz4ib+_{4ss2rSXRiDy zgh(descvk^&W|y)Oj#V@#)C658!**J#=ckpxGniX#zs0tA~NG>E#Hn3Q3wdKBfMG& zK}2y#|FLt}E`UQ6t3jK#G&e22bMBc3=C)LyqU706frdCAqa;~Q0L5)KJ4?@h*FFu4 z!s=hOC;G?Q)BRKJ1q_XJ9W5LLejp1L*187&5Bo4Of)k>T=WpQl3v#4iX$574fW`p+ z3m}r-F8Gjv1m3yTia=+2An1+E&psbXKjH2{<1xMb37`|D<%7c`0`~m0r>AQD^%nUJ`%PxS>)*{i zg?VHw)ju!$@$>xGszUyM_BsCF3*%>rxVZ8vrYB?PvDBBHQWz04T&UpxKU7{ zrb~8R4W>e)){FrKo^O5ts8O^r^t70=!se(2-(8&aTdaFU2;SR=dyECLBp|MVU@JIt z)z$TAHMKRnyX*5;O<*xm+(>Fo41G;Tk0w01ilh#uFJa{teQne`QCOHZp`&du5gkAWr@9Ywz%@P@KB0bD{lXo7PmrPC%J!A z%orlB>F}qRa$`XC2Ai_4L56#h2GWm;>sScPxhMO5a*guk2 z+56H}PZnq-sxASPn!B~W#8B1W=OQPf-lEbhOh%>%{AND;w%w;t<8%a%HNk`LQ0GpT z6au2l)=Brql2Fq{Kw316jHdW-WF<{46(Xad0uxi%3aEARVi*dKaR^jjW)$<$7QEiF z0uK-~dQ@|hxT5M|t$pBl+9IJig2o;?4>qY%<|sZ4Rk0Dc{ud;zd`g$&UcwLjY))aV z4jh&lc(;hjQaWB)K9EB@b^I)LQ~N_;SFEEWA&}`)g!E7-wzF%J8)yZaSOeR=igBiM zaU=T>5*oyz3jYaqv-RSC;r$%d^Z(cbLGwTQiT+3KCMt*OBOD@rPZ}8;)1_*l<5aBp zjl{A?HiE$Y6$NWUgPY(x@k^9)A|CC#nqZ?B&q-ceGE;Y7F{@0{lQuPnsj0~YX(VoZ zdJ})6X8821kH4_0vt$gocDeSve(SuROm_bM98&+q72$1m(x?A;;)@TWyuVXQV!{#( z41CN;(vq_a|56Yny*sb>5`lt+>?dvF0++3L!wQ_eJmXi)z_1UAmNi80_bG^|J$GZs zK^|0X@8jq9pyPt$dpiWWAG)mNg7X_BME=&UYoq>nc0gtk_YoXNb5hYb!hG ztf(P(6Bcy6`wroiv-5NLLjVBx&|;W6WwKMmB+ph%7$AJfV95||OktlFlTMqdKP0i#Y*rj`(XeYUz=adk`3hA(LvO`y z|0%R3GMWC#x}RbCNX_Cf;_wEOS}%lqj#-CXQDIpi8Qis%Radz>q0vjbY&8DdR>jXU zmvR%au!=9lMN?P=hzQpNGOJRw?Cn8@B@kEp4r5$bgdM0?Fdua~*H~mGTf}17rZog% z!Kj#>m=l>Po$A`_fcT-pHy*aya+n%rXmG0CJ6a{nF%>TfyzKC2Dit7a;!8r;X^G$~ zS03MClV}lI)S^Py2I2rLnpjR64L!#Fl!mCP0td}~3GFB3?F31>5JCwIC zC~8VAun2Z}@%MZ{PlIWpU@CJ06F_<61le-_Ws+FSmJ@j>XyyV(BH@K!JRR^~iGjAh zQ+NnRD1C)ttcyijf*{xky2tyhTpJvac8m%=FR-LL@s>rN`?kMDGf2yMliwkYj= zwEEJ0wlFp%TmE6|fiti_^wVrxJ#gh7z@f0+P!kS>c>;BHH)N`PW0JHTqA?B~fz6H+ zdQq>iwU2Kne+4kR2e~l2`>(-^qqujX*@|w7k>s=e)Y-lwoI{$Tx_2}&y$9LZzKG-w z{TH06d?a9;01ze%EvqDCEt;qAaOYdf@X)zT)ScQs**7gQ**A5+o9p#P*X5~lMpNl2 z6p=Ecy7#f++P2sk;I2Nd`w-!5Y^3QHV0RVy2<55pqQ z&Q&b+JIKTf&6N(UjwrECT(BwKhkdpc#(Aq= zyG*N2frC~4B2Ko7O)bOHP8(}XKc;_(GP&+{?#dJ;Y$YXT$y<%YZmc>C?Sik?i?6E1 zk~VKGMLlNws0d#wk-11tBrAf?Tbes4F)oqxr_*7R-?Yn4IlyyP_ce6(J&tXSFI~P^ zYG1K1&Y@OY%nE}Gsa8~iq!!=l4a+yi7?Rxi#owl|2CnVfey<;AkI<2^CN^r`;-)ob zX7Ccao0G6Ic0ENcm7#3(8Y>}hb9aL6Gi?llW(Kss_CW07Z*0rgVhbod7+2-z3EC%( zq7QLJy|>bn^fyDVwISg;I%*4-lpnL5wLoe=B5sV^!Vdseg%7piW`#>KU*HD}MZ&J=jCFG;)9zqX;~A15Xsg;+mAtJruykiiD4Qc5$;lWT@^-j>F$$|0*{U zmrM6Kwy7I0>uJ&DC#8>dW7&)!1!_uGQ@Mvr)n^bH?_w|*J_E0?B{C&x%7+%$9&Umb zMv=?f8jwV=X`(6MfQLkyXGt_A~#T^(h~B7+v?~%F6k&ziM^m_Cqb!a zf0y+(L*8N@-&FfWsxPx%V97(F{QW`L&>2NJyB_}HBTWa|xRs*TT-y}_qovhF=%OCJ zf)sDf8#yYtG3ySQ*(qqz9dXI;CfS6yLi>4H9w9ii-!j5NwHL>oEN83>IsEP+V_1~u z`?}q?(o8RjDY5V?z9HC@t*0V_hFqA|HyZ8k)T!UJQ`KEKMLlNlIq<$2s!x;)o#SW0?w*zVYU?yc(v(2qyZg z0(^T!7Qzhpm)`?PLS7z|(>s+ZUO?_>f0y8LjB9{7he}@4-%l99L!vhyLW=yQr!);4vCSd-wC1QX-%H=?#UM-D_Wg8t3W z0*rY0Q4xwb5i(lBSOs^u(IgRSP$j!PkhbcIr^rh}e})V_kU5jW{q)m0CALP$`wKi& z?444cDxl;D;SqSw0^h%eA6Ro@BhxmD!}qpGb6OxRi6;iFai!)ctW|gmF3jQz2*O}Z z*TPvZAxFr1-Dd!53U_WQMQh$aauyVf;O60e>&G;Mg83(TOZt!6;s2KT{}By>k&-_m zA1YA0q3ID6fx`!qxy=@dYO@Rn%rEb~7P_%;Dxvl(WAfiJUtti0?~ah#_1`K#A}P2n z7^D~GQL#`hC}2w`btD`i%)VBWnn*jWF=d!kI*6T5-wBdsT)$EZD=mrn&EhxJQ^3>1 zbLeDA3&BIDAv=kWsp0t6>a3lITA;khMX^(B8Ecb^U%P-|RNGB@XLq*Q5a zR9aZ8RFNDYvD`dcva-5ti*`CcV%ltLG;emYG)5Hvo^Boe6!Fu0ekZ(k<<5G3_4>Mg z-?ILGT9yB`Gy?Cnu(PO#(bsKyf9>@F_MJQFZFaBE?dA7x40K@HNwA20g&JE&q z6&$MUcmsL)Sq;;@a9!*!?ct(XynVCJutm{pZ5w3Xci1lQ!9oB`xCdL! z6i6sX5X8iljX<8L4KC)P_hyjfBo3W=8BfQ5^inG|_NhXI*k)fvrDRq;Mtl#IdM%t^ zo(9yQnnQj}I{C__YBGYykMvG(5)bL%7>X@vm&+vnDMvZ(QMVC;#;@DZ9#6!r74JA`7phVA#`JE` z>BU^K@B>jj8Maz2m^>t$!%J^m)e|Ylem4L>e=OHtOVBCDy{0or$Np^VjdNl=g3xT8 zqsE*&O{Q9{>LhP;F2vpR<1t@fO4^Fbd{cO753U@l zLFAlS*(cze1w03?ZyLxG9S&n_udo?=8ddzgt#cv5fKd+uyogyl;44IK1&z^wj=!YK zzUD&kgK%`pt9A4nks?WMImECKCAt*xUXcPbo9e1&PmWU$X9~!}HO|j@r(`+=V^^Lc zcLMKF*Yj`EaS|pmb1uaDbkZvx6m%4{=z+MdgTuv?mT=4T&n?h7T_tQNFYhz$`~(DF zx4T%9nS-@(gWPm3?tZwJIpHDGWzAJ__zZKP;Hw>~%&n=s$Pn?6CaJ>bJzY?o)(O#~ z1fxWpkgP7ukZGyitR1C364Jp*?#{WzBom;9o=XrY;V#_Y5@5*}T5v*hcW#I;Sb)H; z6^g4&{fOcGP0zWCURc5J$ExdSY5s?r-^r#;|BS)8NjQH2--6b}!Q-Aa$mx_pNnz4q z(1_zCdqOu|4b4oo+-*jjTTV_j3WmL9=u`0(l@>00B5Vg?4f?fqwWRCX*2JwC(Yd+i z5A-Rm0r4e~4ceSJnEmWF6Nk>Q;(7sYyQ<-CgPa1fO8m6_pu=Maf0e2hd92Q#i7j?U z-VR;%F~r=@Xs>J2`Nx))UK=X`Shhg3AWzbwE<#%hM+KSQ)y~F!~7j*2}qu zgT9Z6kE4Z|n9Leb=N0%JnFI$AeNrV+!>E(WT7dyOjN~44BhNVL4(%Eo(1JGjS^)Oc zjSPsu`3wT8k`$>Na;G3pMU(9;+ov}PpiRt6*)WNMy(rEUak-14^(K`73yJ1#LZna? zS)ypsH=xt_ z1V%Pk;E@JqJeE1&xI}|JylZJSsu+mw#r=)G*5DBGv*`Q|1AC+!MW979QEZ{H5*8ZW z_U8EI1(M1LDjG^#yy~(OGH)?SdmR~=ma_^2Q#k>)`v#$t=~Ih|79!ZutXQTK^S&w` z1)ONotPDL(cz!_@bFBBOo6W@;7Zz--d9JaOs{)ss4P|Mr%>FaiMR=(fn-Y3SA->6~ zp`5h}dOcY_YfweZB*^el7qqa$&_r-Lg-I+9~U z`JxVCD<$VmoiR$g^3dU%7Sij)XYi*?$#ihSxCBHGOaRRr|Lo9+E}O~M>I}tnokI`}F32Aty#b8rpABEKl|B;*o8ge^^)Kyk z0!(>gFV=c)Q2Y%>gz+sa3xYTUy_X`rK5ca{{erC9WJ3EPKG{|Nng_-78kAD{oh_=K zn*wopK3cG}MBJf%6=}9YouD;zyWbjRt%A#pWc1zb3@FB`_Q~~UI!uvse(FQfl zUt=Qy2DSjwpzAUJ048~^;@Yo{C56R_8nZEeF}vm)0xoYe0y|tYI!>Y(d}mSro0`z; zeb6Eg*(a2{5Ypj8S$-_~L)+IlozZn|Iak`$jQKd63hldhts0=m>k~HC&`@|~;XaG6 zLVxC))8>^?13P*mV#ydlkC0V6AWK(BjWpqu| zbh7#bkKuL<kv5;Emm4zkF;X>rfbzAc7!Z)i};f=*bypYUD zho5-B5n;)FP(nzq8FG3TH?7l0vS{G}G9@~zxY>CqbX^mb$|JncS3I_2RD@?I9bz>LbX13A0N_LQmd(!3AxqmR_;3bJavc81%v z)Q~pDm0d1VrVe~>X?GOUOz94e6Nbt|fe6(S@cN64Gy6{i*TPukTmfvgPR>+qe>)@w z8mS6=rvR0~cqVfEWFsL|kZ3t~m-iV}va(IjJ;Hh4R9uISa6;@9d{D+7CwskGx!7MGZ6|rdE_I{cMD}-` zoi0%doDSznN-Evavf!_d@UNJt*Fl;hNrnVT2Fal8iBh(LU^l>8I1%x!q=6A@zO6O} zs0R@~z(6E;t~6L7tclb6A}zwwIvS;W`?F>>P)INWt6N9r4JbH*;&^6B!lHNAY+v3R zwCVoTTSL`1XtRZ_9vWH*(HcV?PImcNBOtbC4{U(v-HA~xMdpP8<);Xv0y_e1i%t|f zdyL`MtgjoC^Z-wGt@&6(9Wx>;qYcYwopK7H4iejT?T|>BSm)-fV&7yB;ANW4ZRzzc z?^;uh#-bDq@QjjBiIf-00TSw~)V;r?BHNEpDb(dLsJ_Z!zT7<{oC-V^NTEs|MeD0- zzuH~jmz>@&JaYIW>X&?~S>~+R!;wQOq|+{tI&#vV^n%|7ksh!vXzONlSb4zc!X;}> zMaUjix==sr4oMiHxL@~MPL%PrMzU{DPuz`9zWln9XnqKqNo3TZc;22OZ{ zy(90FLmd!qHIv!b-q){c(0@VYnzE(k5#rf~N5m{u-X za_J$`vM`7Bh@_`N%&n~35!O^m^pyWGR65?W@EH_fG}veT4I>@L72iny$1yuwBopv> zsSxe4Htw2+2f`M-+7|iva$OjEp*e=6r{J`{W_IyMTo#x0Yayp+V8z~17Hx&~6G%t? zN=#7bc$BWFl&qzMvU^iRl>Rvj(_`fR9T%ZBYX1?fg((%9FgbGrBl_7^rRQW9GA*@E zLN~c4F@W|oNmH$kHZ)4U$u(P4S;GSPDy671d;6L8z}?RfSb0PHN)PsKViOm_PLB-7 z+-+jjpC&oGWj(BQ{|L#DFOC3+-%fvGOOx^u^Ysxsq)Ox4^;}rM$!;(?`m@wtkXb~%u$Zx% za#IBD9hq=no-2H90jB}1^>TfWp)=Sb1v9w#UAHvYbn1PpHFbB+hwSXWK(ta=^8VN< z^j!PhT^ZXf#;?$ZWkn?(vJ20u-_SsGO1os)z;s=hI)d6iN-4mC9>EtcU@Mybflo@| z82lRHB)FEu4k@P9W+a)>t{^Jl;)gL&tWZBy(gWmfXX8XiUdnU>LtbceRd2RogiprV zK3KHRpSd5n#Hy5wQ!-Fg;{(9?K%pRuAEZwPR-E)JGeljq?MUmP=K$zkEO46*td&DL z%C4c|+^C204zq3rsTdE?%Y;lc1vKitClZ79P)GU-k`VCL5(kX_>5D{)C18r$^duj) zab$~pZ#$FLi^ihhytr80x6p2DsA3IsHPguaQ&s4izcL;7qGj1rPQM)4uc!I=d^j7S zs{`eqUlX0}s<8@_Iij-NBLD<2BE3VJ&k4Z6H;z?!7!7-XeeC-aX{Tl6ml!93m*cFJ z#Z5Q7fr}UC|2wXN*{|KEWPZ(V^*agnsVlrYkAd651IAl&yHxt9OnMCJBht5xn*lR2&NabYN zSWC^|d16K9!d@LjLiX4uEhz;%>2G#@i;bdI;t=8bK>y@P)WT!mDr~z}pG- zRg0M$Qpz0mbKF!xENTw8!Wwu{`9|04Gou}nTQ_L@`rl58B6UT^4~-?*}V`fYfKSaDIH zavlsK6XsL9-WmdH$C72oMpwJp)?;)Z4K6Es0B$SXP*QhM!gvpdUyI?}p1c2yYhY~r z_VvRqI~hi$_97U@cE5#Z{Zhy&EqB*`vAMpf?Ya?h{;uuk-}E1T!ah4kx_Q*9mOjl* zv62c1x-eMCSfQ*b3b|P6*~#_2>fN2y=iJQy-I$q_TIV>AHLGvxzY#v#{w}OBR>mny zZ+4AXVq%F7d*h&{U!c8&&KUXS@X->Bu@pTF71|eeQVYw8ns~h`7|n?)2@d35c_1Jn zeG)5*kFZ<}MejgYN(?7Nw?Mod)k5v*wm{$@osr)Ywv-QvXpeI;3Qku^T}zo`go?co z|65!$tORilITCe4GfhNoqaj~NtO|@obiA%Tub@&qQ)*Sn14oz#=<2osGcxe*+@PL< zyx=_nR&*Un8g$Iu#el1FV8xS6kKlqt6Q_nLmsoyCCicctlpM=xVMApO3V7u00mxNJ zn8H5H7~1cY0)_}KJSfc2QSG+HDoQlkX^Iwi_%Qb4&1XPlDw$%cwf-dlhzTK+<_D-) z&P@=34aLr)@%x%0WcLNFBZ4im4biAYc zX48#WytT#YP@@jEfGgaR&J#HZzJa@HjxyMYHe{pLPnxkn;~Nj*Rk*wS5*frI0o^@# z&G3U*-hF=Y_v1Euf&ZeY$+hsoi~%M`iq}OU5nnKjI6qCo7#tk{_f3pIO(8(pMmgCr#+;(8d(-5n@oY{gBKSFB;sfY zEGd8%M6}wgw88w$*dURSw+YzI2N!gycd}~V$*T@AlPt*-f=web80-YsRGL; zIurEoITNgt(oy6p0G%)TAq})jmI~qDOTd#8SWUAuE(*k}kk&NIGfR#?MWZ&@WgOiL z>$#C7>im5ft}NgVUz#o-;GS~3h`u>vuPTQ6J_?slXE&+uSm7V8X2xqGN*g32wQVF? z60uDVd}|BtzXW}IHl+O9$Y${gL@oN<={bc5POfF*UaM4*ulAX=jeCFG9716kCF{ap z+Aa!D*;gIqFWp_D0@7TOln&`G=|&m}X{5WP1i2vScNypR7x`wGaTX8H zJ@~rx)5+w$k^uMixVE%C0WLCO~Q+tBA;H0@eFG) z9eC{^DN&Wg*!QSPZ&6UQTXd8o&~Nom);LFsVoC&=vbu|xNN`s-1=AH*8)z4To#%#y zdd$@UB#=RyuU6;>-mgB-YAnr|4VG~L%5Zu?2?e8cV@hX1%$C z-Y!`@^OUFtA7Pe=$M(LJiXU=J1!QUEtKOP0NQ3X zL0EH2;5m@t@SxuG%G+4`P52~ZYSYtf<5_!E_05F>!Og3NVhP<3((hbndMVWA>MlDv zn$&G-7+NQ3%TTa+SwC{12rdHZ(>d@r=%m6}QzK^c#Jf1mYV4ihwfN65H)@P8$MxDc zTjl)d2R0#MAxtC@z=02~@CN4)F3cc@}c$eNk#9s}m0 zCQU1m>8KltX-7??Rz`KAa9O`78vwc z96b`^On^}8Uq2X$nJstj(oDH3I)|mIuLz zwkCtM6CN9f((dN*4jqG4{_r(Wh z2u?7~;PfTgKZy`BNs+soV7l`vUoj0Zs59#tk&2GGS#}^vM~n9_o1()DH&=e+1J8g6 z?KqAZE{5+wu z^h1JTDHbTO>mUG#C?;6@CZ1@94=<&=#wE65{;Up>sTq@gJ?nsNSa6zE7ZoR|eSK`& ziwVJeio-qK&1`}djVaTPBHAtX-iedlv!W}@HqzoQ&gu~oM(#ZleNhagi2S^z0$`*2 zvXv*_l*3vp7N$6SniJ6keA;%N);Z;F2X+yzHXEKK>|!l-K+oBIB9Rg(r?T)}`0nwz zW>J5H2T!yBBQv!CV3wS!?e?ao$JZGHB3>?^p;I0oEq1rFbn-K-z1;UX^Zco(t|y{F z&aaht8|ducgto&gzsFOSGgDA6d{NN+DwNR7IvD2_ztxv{`PTvRQAD{R>ii;bqI6H$ zi~7*gkXL6sk*D( zRfRn^T)TGZOa5H8)%KL|b$feS+tmm`x=ir7xA_SFtXdrfwMW*l6LlqDsdN9czC4LZ zxQ1hx2G%}RlTH8PFjxmCx{XLh9X)5F)BD@x`3Yu(w&|MQ@Wn))MQ5P40oe6lq zj6&YQ)Y$fsl?yoMn2DRKmBXL&;#5@wIec)ey+_r)wLWKQ$%Nl|=)1S>2v2Br1GB0z z{26J4KqT_fthh6KL4A_nUGh|M?rQeB3d2M>f>?eF=%>&KBi ztb~177I8YO@8HV-(xw2pP4vCgNM_ODMc*XT)Vb84bZ$(aRZCi0SD4Vb5~0yzn-7uD z8&6`h4|PfG#@4O=sM;eev2gieyH}I*Rnq8!MO>k8@S&aMNX9c!hpUjKeRDUN*M<4& z`yP541rMR2;EXAYLf51%0hfLwoLO*VT(v!KEHyrD(8{a*@p_=xOtG6Ck0QfS>k&u_69rGu_Jt&YG97L`S7&3_{l%EQ)VAjX z2UV7D9)#I1Jv#8Fd6X+dOxjZTXFW0vpAv0)rZ!Ck6!Fz&&ZCezKS|5 z__!pv3>!#(zZ}MQfb=Bz4!aBypX`XnE#6B?yfTCmP8;tZVe#%QC2|cSbs$Q7mx9Wk zrhgq}S`lflHu@AX)_|0m0Dgy%FGt|ZP!H;(BN8Ff)p``6P$lT2Z4~=eFDFmYJt6Yd zs+IG46y)X4Cg=VU%>5u$6hq|9hlX$~MPeX{3SWik%ZBMETV^`}7l|$=T9oPv=>MfAuVpVuT?xQI-5MnhAwB~WKF3p#jb^%x)hgQ5w zEYy^HY%m(3qgTb0>_xhyGy49WgkavN*iwr9){qxmZ}0h)}ji`R&Z0sEAcs4@JVrXS$uNXI67&^So5DE z_wSSV)|hizP*Za+cCTn0^tCx`&1B`kM^^O^qqM)Or4WgFyEKhu_AWCV(8q?&7iiv8?d=$)b z1MCx)Px;%)v~QO*(UKzoMpj-f68L&<9G&jy%k26a6l~xWa27d=0zy9Y?Knv>uTy3B z#R4dYL0;(wG{B!VU<) zL0dQ}cE7}kSnh!@UA2Nn@KkO8%G$oaXs^?*bXW`@IS`edO zPr)lZK}u7D_99TTzwi<#blDq<%z2HzF#{9rVJal40r))tDNA4@UK9YkbOz5og)RphDfLoH8TaTJ5@i1x@Ntowsmz3c5mldGTpqbAC8z+-y z3YUgK2;tdm95YQ4$o=gR_I;ot|JG0jq~!w!JryDgGKTgLd#SK)h0Z1kh907bO~U(% zT6jiFnX@TWSv@xNo`&z|2;9Rf1$ArDtzSTk!BFYr;&ymtj4Bt1vK|q*ut&Efy?Wd; zk}_qM;ziWm-`?rC{al#%^wRcw6wOCC6Gv|Oa7>zIK{tOroHE9p3-q;DwTZq9(y|SP zOB|hi75t%%z@ZErp@owZiI?H$xHMR7h2k#XwmQmT>7xof5gx@XC`fVWVA~cioSE&K zoAYasmf;04$arj zg1&eL7=I?+WRf^o3qFw^#Y?d9v=-_zeL94x2|usB_;~yo&#*;J>I2Yf+qzIM|Bzwn zf!lXOXQspLmvN-cJ7Fy^Z9K-=NwWY4W8RL-q!b82mgurWTar+^3SwpU*Swg_MY|-s469h*lM(kJ74z%e#v1B%~p6k+k`Zr4M;9Y)5 zrQ#%yC8mb5QdUfV#)WRwxc!2-9CA{=B zX*|`We_=f<%xhLdJy`#KbR#+lj|R6pJG@ZTcZtr=Ff(n00MTQyi<~xkl6_QIxuYG4 zAn6QsfWJSaT0)kmDQ#9{(H8{k;(F3zbIvl5oA9MZn}6VxAW4VEuDJQJ_tvW3^8<=i zgp3DjuXDefv#|&0?0j(&4lc6i2+%kQ@a&fm9)1GxAuGZrRy#lIac(Y6!xvAGHrz|( z)4AuuEkq7`w4@FDUqah3+{y7xTbMo!P#&kbRy-1zFRXRTL}Q62x?q@Ltwnr zqyF|*{ZdFu!MG|}fKcf)Jk0y#Qk3t&@IZLWry+1U{!CF4(R_B8fZnVnvN#y`yJk&8 z5o|-I$t$7DEs@z0(ie7=MpaKrn9UfAR;(N*a)J1eej0*KIXkIFx?K6bYtjN0RG<87MN5Ph zVo*0Xd;_STda7fc?U{jG%U9FOdo7NOGFCBEBwR&j;4Q&)m*JVsL7mSZgs;+{K}z*uLldQDk~pDMMpTRSMayDpW3jXcP-aFaK4SRwhOg43SAApaG6v=#1q zJc}I6RObkNMZVE@gW2>|4+xVVmeNu`#F_MzWq24w2tz{n%bb;&u07(#9!N=hc`@qKm@EtkN&lDJr;L zvk}HQSsd&o7#d_Yb%Py=9{clqy|F19S81|cMmz<+n!5J&3Ck5~Y}=}arb30r5}^V2 zwD^K-=syNKf8H+4r==Oz7M~|D34$w9WiTg+r6;uognB=hj*}U3^eWO|j0up?kWWmA zbEER8t!`eQ+ApRkQmsrzPN32!_e#P_Bfh6aGOTD3gOGBH=Ob&R+Zi30Sc%Aea9H~7 zEB4j%17ym*rkGd>UA_HLZ^3@`9`Eu;NC;;HEL3An;iEgR+j-;5@XGL#4o02(SG@?! zmNW>y;+PQTA_i>3r%-PIQ`x*!@b_24mk5(I-0 zzIJW*ZBIgn{B;FFhh;m=5q`WK>P;)21@!H0ON)E1P2mW93!PsfiMK!~#1#~LLfyQC z=}TF_5|H{5J7GF~A2vvJiJs7KH5%w}$Y@iz%2sMQefiYTC#VW!XWSEusTc6L|ImO) zFuc>MCylPg;Rn_By}7kLshEh9A0guK0m6Y_KKvx}_MX5@{;8^|M4lHz59q-^n>s3N%P-)wu*Apy1c*uY%ls6{?1UoxSMsVN7r!vmY$4U1ZpCFZp zSB*$nRK#ut<0W7!D`6u+bGR?I9e<3Zx6iW5FM1YNJ5roEjQwT4gD$elG@b7S?XgGj z6?8Gv(sGLkkFv-Bz!vs_FSNi1>W-{uoLZyfxL5}8Z{yqaEK9mx*?8EyKbB&|oe3nO z8VPv6K-BGik_oh;MUxzP=SHYz+sWoU*_Pc|ZAp%rEG2OgkyA{O@|sV48aj}*$c=#ReFzE9^##pCm4G| z2ExX>|7BshOX&F%0r(Syy*@UGUX!?ky}6Zz8#t5q|1GZL;`G!$N@DbUPo4((w_%ge zvSuqV7dVNPK^Ue9v@t}A{2cJ=Vt!H6_jWRDXA_0fHLnagK+aM{WcrW(C(d1S@nS3RlL zUYh7&54coZVswV%&><$802)Ds6(5Ty!)=(|2PPPUY}b*5H@uVe7@L=Qb0@q9St`u+ zN_!X`!fP90I@Pzd3+=S%-p@UT)RD36;vT`l)y>59$+Nk(IHfmD3&VHLW5m_Y`<9v9=7o^jo4Lz36MNl!%1 z3c{>#C-z6vmYddm?8F5!nukB?&9Qdzs!KMBj{!#L!8zi1kBIRuP=&b|uHG%D0++Ww zKF=0w;?gq+M!;#eX^_}Pr4<(R>gE(Ur;1)gwTux=f1IQG>fb4lRG zauq6JTk=W;nN0r%g|iMMZts2#+~Kw1kA-3nBBM<2&r;0npESg~K6u!!V7Y-zgy%jr z!=09xB~ev~Jcp)_SGwX7G$-j)q(48uz%aSH{(e4l252lUj``uz&I8@A_=KdyUZ?@Q(rXR552h$Wp&%Sm$b-Okpa9CMXW*$|8A3#-)8|R{nX6* zrI}P?wPY7piep=yrIXLRu5>57uq2UvzR<1~NwK~f8JrI9srnbs2UA;5UgdfyLRR&X zAXqb}GL2YZjX`a)UZ~1kU9Bst!uiUq9|M?TT{2V70AVJ|-z~5F6{)i=C=%eGKF6%Y z7Ft=6dZdWTXx8KXRhtxFSRyM*AuF=@3GUfDy+`L!cV z`(^xDDBY+K4#OC;>}DddEs8FK>ce{#!e2#ud;xxKyt5wP;!mD`4l^XIWLkqgMWo%f zaflwyB3@QC!jweeSK)r;DGG-cCu&bG3U3{ikLdi;H(v7DU?2%M?3qCC8b93Hb2PJ8 z@QeX-JYCs{mGVMLlFvfm&_dn3r$3Xx;jR^+ts(ChilDJchx+!Diue#c4B z*?P;?K7WLbI!9T{JovmNd>w<{$E!;H66`ObfV*qFGyRM4F5w9=Avky7CqrbX!vrp)1mkD1rC#mdLXdN5pFSJ z*(*Zoh!M$6Z&r2Qz%JRl;UnMd*_o@|;^NH2X#LxwMlEsQulGJjB@VuxX*cV4`Lws> zjl|ByKhtDk-fUo=Yh_xY^aZC}aF!_|(lIkA7TzQRY(t0p>Gd&tc> zes@Omai_pyi@$|MbZVE&ERRd{jvv1`xy40nO-yXFC#y+=4&S)Sp)+(Djck1bYeH4! zm3cZ@u`K`0Js)Lp=f+iJs`n|0M3vE<8>IBf1WpRk4Sn<9nsijK^v9}F8FXx52olT* z%Rek&eO%wFlj3mYQhb}!v=YZXUUOO=$D~YwDZ#~m7 z44|QAFF^b`OSw!ZP+^L^zK)1>UerWGO_E%p^2sP({CtErlFQfrt$O>4 zcuslow^_3ri0HuWcigZz2w%Q*7cm;>40)1o@kz}pysE50TzoIPQwuXFW}elhNffQq ztZ)$Oz@XwhOmbLQ@ zHdq2g<@TQ%lSARCV#zL2X2O~fLkuTD81 z;n(NWjoQXwD1@m_!wBJ5PzLd0<=A+CCKTW<`dnOI=yAmO5HaW9zyjJ<0ws*rHnyd_&^78n&clLII+-hONNCDg>?d-5cWDLC_b)9n6o{P1CU-$7L407s-_ z-pN>_?^HhHRDQmVX3NRF#4(=Jdi27iXbVZSm@Te&4UHIPDSbLIRgksrcMi!}LH8kx zi1kkV?^GlM!Caxc9^)p1vBDD=F(&PD^l79>spQ`#vz{QD@ z9VQiviBfRP&y$x0E-FU?(j7DNYgz5FnO9-1U7Fj10D;J3`ywYGRtdNp5Y>Qo+1-P@|$#4vrd!{It&D4(5 z88MK>t&(M*q{{bk+gKz8BV8NoUls7#Pa(Gk7HG*!WO1MnoAKw=-;D)9T2XpobRN@;R9$ zdDZ*TNdMDRe3pcxxWT#?Gvz6$N>L_At8M<_Nu!G9BUfJBQ zeod4i4j8la+F6~Ch&@o#a%JWXtFx6-@5vSL5;@>X>|ze$N=4Jovjt5>8c*=P)os?J z=UlsoH#$Jz7vfg0g=+%Jf)w{Z(Z%^d5W}1#^0}%BgEhRzNs8I2&P7V?GtK0o$CS>y zS%AH91idyPyNX-#5}K5@2VRQ>?Da%6Q(1)*NzRxW9-2LG&+L zW9v~&N*UPrd!ao6TTvM1O*2z1?grU81wdZsv-2#9){B=Yo58FPq{90cNRy?PdBzqr zbXR&i)#}mnzKE|yj_#pCV$njDr<`4a;0d&q@G_^+74Q(M$6rW^ZRcZS?r=zYm%#Gj z!Sc1I-ZxAVPnlVmU2ukuW86&QC4@4nDGZNmY%^`PdC5+u~%7?p{5Ihg@E{qe%G7|%$x8>B2lP60{y^WAi!)2f5_jj zyAZ&Czma_OcZ!1f$!-?4yN(KE{v8Flf2F|VM_l1=DI&Z}(RBvZ-?=MJurdV+bx}qc zMM>r#Mp-#9xf(Dlj7$ur%9-=K=m+1QT9ro_U?#&Wv%M{`+o5WT)8b>jv9 z{(W;{+`KsjQAHU^2{m;l1<5DCcK8k!lt%~8FU9>xGEa>%xpxcvNwk|}rEBVH6gs&y zcc%2{>C}&E29pz0OWd`^u-ES8cTVPzX`)(qt=d?&K@&=Rotx78SlqgrEVG_qUo)_mC$8U`F#qlHOCD&RSroexT?YJLzvne^0W z@;=|QRR6AVW@n3W0fEJOGM5gbEhzW#FFa{0FL+k>kgt~r3DnajgxZvn2mk*LWvgsJNdYFw~S!X4cFe+Q;Q-_W%N z9+%cg5D+rIfU$v>NB;`!-|$Y|w(+s#2VpgER|yU}|IL~d1DHEF1OAnnMj?dmwqP?|!Tm)27hExl-^LX;b^(CT z!UODGtX!?!0czl=9(xOLEjt>6{g40iN!)JVBc;&q!{D7LBTNX0>kPC%g@yXJ??CR3 z^oF;AH}dO}OTni1fx&;Ra!+t5|8G{gf|ZL4*w`O!41NfJAE&N>zi#R(&V#)+FzyN% z_g90{z|?BLiTfv@hp{u@$1u7B_-1N#iJ#RBzM2BR!2c8QKQ->n9NpJB+kXlz_@(`y zApg-W%GVs=-$=u6Jp_Mfr34rf;5=qxnT`lG`0>Z&B#n)_ODW`1+jPPicN} zhgOBZJau)7R=(j9e&@_!Y{d>iX#+|6|i>`&Q={(}Kji+O zpFcjFOMd9Ss|3O?C362PVeDvZY6)PztKhZE=cg?HTJXn${I25H4xgVwR(eM*+@Z8Irh^0H1^@(vM%fLB8x9<0IcS*cf20Th OJOEd-=rxTO#Qy`$*1Hh^ literal 0 HcmV?d00001 diff --git a/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties b/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..c954cec91c --- /dev/null +++ b/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip diff --git a/spring-jmeter-jenkins/README.md b/spring-jmeter-jenkins/README.md new file mode 100644 index 0000000000..49c18122a2 --- /dev/null +++ b/spring-jmeter-jenkins/README.md @@ -0,0 +1,55 @@ +BASIC CRUD API with Spring Boot +================================ + +This is the code of a simple API for some CRUD operations realised for a seminar at [FGI](www.fgi-ud.org) using Spring Boot. + +### Demo +* API: The online version **is**/**will be** hosted here: https://fgi-tcheck.herokuapp.com +* Mobile version is also opensource and located here: https://github.com/valdesekamdem/tcheck-mobile + +### Features +#### Currently Implemented +* CRUD + * Student + +#### To DO +* Validations of input with: [Spring Data Rest Validators](http://docs.spring.io/spring-data/rest/docs/2.1.0.RELEASE/reference/html/validation-chapter.html) + + +### Requirements + +- Maven +- JDK 8 +- MongoDB + +### Running + +To build and start the server simply type + +```bash +$ mvn clean install +$ mvn spring-boot:run -Dserver.port=8989 +``` + +### Available CRUD + +You can see what crud operation are available using curl: + +```bash +$ curl localhost:8080 +``` +You can view existing student objects with this command: + +```bash +$ curl localhost:8080/students +``` +Or create a new one via a POST: + +```bash +$ curl -X POST -H "Content-Type:application/json" -d '{ "firstName" : "Dassi", "lastName" : "Orleando", "phoneNumber": "+237 545454545", "email": "mymail@yahoo.fr" }' localhost:8080/students +``` + + +Now with default configurations it will be available at: [http://localhost:8080](http://localhost:8080) + +Enjoy it :) \ No newline at end of file diff --git a/spring-jmeter-jenkins/mvnw b/spring-jmeter-jenkins/mvnw new file mode 100755 index 0000000000..a1ba1bf554 --- /dev/null +++ b/spring-jmeter-jenkins/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/spring-jmeter-jenkins/mvnw.cmd b/spring-jmeter-jenkins/mvnw.cmd new file mode 100644 index 0000000000..2b934e89dd --- /dev/null +++ b/spring-jmeter-jenkins/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/spring-jmeter-jenkins/pom.xml b/spring-jmeter-jenkins/pom.xml new file mode 100644 index 0000000000..38b5f98e45 --- /dev/null +++ b/spring-jmeter-jenkins/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + spring-jmeter-jenkins + 0.0.1-SNAPSHOT + jar + + spring-jmeter-jenkins + Run and Show JMeter test with Jenkins + + + parent-boot-5 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-5 + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-data-rest + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java b/spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java new file mode 100644 index 0000000000..3bc1f64f41 --- /dev/null +++ b/spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; + +@SpringBootApplication +@EnableMongoRepositories +public class SpringJMeterJenkinsApplication { + public static void main(String[] args) { + SpringApplication.run(SpringJMeterJenkinsApplication.class, args); + } +} diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java b/spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java new file mode 100644 index 0000000000..0f6150fc48 --- /dev/null +++ b/spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java @@ -0,0 +1,66 @@ +package com.baeldung.domain; + +import javax.validation.constraints.NotNull; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +@Document(collection = "STUDENT") +public class Student implements Serializable { + + @Id + private String id; + @NotNull + private String firstName; + private String lastName; + @NotNull + private String phoneNumber; + private String email; + + public String getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public String toString() { + return "Student{" + + "firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", phoneNumber='" + phoneNumber + '\'' + + ", email='" + email + '\'' + + '}'; + } +} diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java b/spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java new file mode 100644 index 0000000000..d0ca7d8510 --- /dev/null +++ b/spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; +import com.baeldung.domain.Student; + +public interface StudentRepository extends MongoRepository { +} diff --git a/spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx b/spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx new file mode 100644 index 0000000000..49ce2dec1d --- /dev/null +++ b/spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx @@ -0,0 +1,96 @@ + + + + + + false + false + + + + + + + + continue + + false + 1 + + 5 + 1 + 1507776008000 + 1507776008000 + false + + + + + + + + + localhost + 8989 + + + /students + GET + true + false + true + false + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + + + + + + + 10 + + + + + + + true + + + + diff --git a/spring-jmeter-jenkins/src/main/resources/application.properties b/spring-jmeter-jenkins/src/main/resources/application.properties new file mode 100644 index 0000000000..c7d86e14b0 --- /dev/null +++ b/spring-jmeter-jenkins/src/main/resources/application.properties @@ -0,0 +1,14 @@ +# the db host +spring.data.mongodb.host=localhost +# the connection port (defaults to 27107) +spring.data.mongodb.port=27017 +# The database's name +spring.data.mongodb.database=JMeter-Jenkins + +# Or this +# spring.data.mongodb.uri=mongodb://localhost/JMeter-Jenkins + +# spring.data.mongodb.username= +# spring.data.mongodb.password= + +spring.data.mongodb.repositories.enabled=true \ No newline at end of file diff --git a/spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationTests.java b/spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationTests.java new file mode 100644 index 0000000000..b39a5605b1 --- /dev/null +++ b/spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationTests.java @@ -0,0 +1,16 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class SpringJMeterJenkinsApplicationTests { + + @Test + public void contextLoads() { + } + +} From d14411e2b471f2d6987bfd040be730a222d0659a Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Mon, 23 Oct 2017 10:58:07 +0200 Subject: [PATCH 076/836] BAEL-1250 Initializing Arrays in Java --- .../com/baeldung/array/ArrayInitializer.java | 26 +++++++++++++++++++ .../baeldung/array/ArrayInitializerTest.java | 22 +++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java index 0c9bf1834e..fd00c74e7f 100644 --- a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java +++ b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java @@ -45,4 +45,30 @@ public class ArrayInitializer { Arrays.fill(array, 0, 3, -50); return array; } + + public static int[] initializeArrayUsingArraysCopy() { + int array[] = { 1, 2, 3, 4, 5 }; + int[] copy = Arrays.copyOf(array, 5); + return copy; + } + + public static int[] initializeLargerArrayUsingArraysCopy() { + int array[] = { 1, 2, 3, 4, 5 }; + int[] copy = Arrays.copyOf(array, 6); + return copy; + } + + public static int[] initializeArrayUsingArraysSetAll() { + int[] array = new int[20]; + + for (int i = 0; i < 20; i++) { + Arrays.setAll(array, p -> { + if (p > 9) + return 0; + else + return p; + }); + } + return array; + } } diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java index 0797a524c4..d3afad7b00 100644 --- a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java +++ b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java @@ -5,7 +5,10 @@ import static com.baeldung.array.ArrayInitializer.initializeArrayAtTimeOfDeclara import static com.baeldung.array.ArrayInitializer.initializeArrayAtTimeOfDeclarationMethod3; import static com.baeldung.array.ArrayInitializer.initializeArrayInLoop; import static com.baeldung.array.ArrayInitializer.initializeArrayRangeUsingArraysFill; +import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysCopy; import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysFill; +import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysSetAll; +import static com.baeldung.array.ArrayInitializer.initializeLargerArrayUsingArraysCopy; import static com.baeldung.array.ArrayInitializer.initializeMultiDimensionalArrayInLoop; import static org.junit.Assert.assertArrayEquals; @@ -38,11 +41,28 @@ public class ArrayInitializerTest { assertArrayEquals(new int[] { 1, 2, 3, 4, 5 }, initializeArrayAtTimeOfDeclarationMethod3()); } + @Test public void whenInitializeArrayUsingArraysFill_thenCorrect() { assertArrayEquals(new long[] { 30, 30, 30, 30, 30 }, initializeArrayUsingArraysFill()); } - public void whenInitializeArrayRangeUsingArraysFill() { + @Test + public void whenInitializeArrayRangeUsingArraysFill_thenCorrect() { assertArrayEquals(new int[] { -50, -50, -50, 0, 0 }, initializeArrayRangeUsingArraysFill()); } + + @Test + public void whenInitializeArrayRangeUsingArraysCopy_thenCorrect() { + assertArrayEquals(new int[] { 1, 2, 3, 4, 5 }, initializeArrayUsingArraysCopy()); + } + + @Test + public void whenInitializeLargerArrayRangeUsingArraysCopy_thenCorrect() { + assertArrayEquals(new int[] { 1, 2, 3, 4, 5, 0 }, initializeLargerArrayUsingArraysCopy()); + } + + @Test + public void whenInitializeLargerArrayRangeUsingArraysSetAll_thenCorrect() { + assertArrayEquals(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, initializeArrayUsingArraysSetAll()); + } } From 65d6e0127fa31ae92f0aaa25a96ee9b6c4f2972e Mon Sep 17 00:00:00 2001 From: Graham Cox Date: Tue, 24 Oct 2017 12:51:14 +0100 Subject: [PATCH 077/836] Updated test names --- .../baeldung/kotlin/junit5/CalculatorTest5.kt | 20 +++++++++---------- .../com/baeldung/kotlin/junit5/SimpleTest5.kt | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/CalculatorTest5.kt b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/CalculatorTest5.kt index dd35805044..40cd9adc99 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/CalculatorTest5.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/CalculatorTest5.kt @@ -7,12 +7,12 @@ class CalculatorTest5 { private val calculator = Calculator() @Test - fun testAddition() { + fun whenAdding1and3_thenAnswerIs4() { Assertions.assertEquals(4, calculator.add(1, 3)) } @Test - fun testDivideByZero() { + fun whenDividingBy0_thenErrorOccurs() { val exception = Assertions.assertThrows(DivideByZeroException::class.java) { calculator.divide(5, 0) } @@ -21,7 +21,7 @@ class CalculatorTest5 { } @Test - fun testSquares() { + fun whenSquaringNumbers_thenCorrectAnswerGiven() { Assertions.assertAll( Executable { Assertions.assertEquals(1, calculator.square(1)) }, Executable { Assertions.assertEquals(4, calculator.square(2)) }, @@ -31,9 +31,9 @@ class CalculatorTest5 { @TestFactory fun testSquaresFactory() = listOf( - DynamicTest.dynamicTest("1 squared") { Assertions.assertEquals(1,calculator.square(1))}, - DynamicTest.dynamicTest("2 squared") { Assertions.assertEquals(4,calculator.square(2))}, - DynamicTest.dynamicTest("3 squared") { Assertions.assertEquals(9,calculator.square(3))} + DynamicTest.dynamicTest("when I calculate 1^2 then I get 1") { Assertions.assertEquals(1,calculator.square(1))}, + DynamicTest.dynamicTest("when I calculate 2^2 then I get 4") { Assertions.assertEquals(4,calculator.square(2))}, + DynamicTest.dynamicTest("when I calculate 3^2 then I get 9") { Assertions.assertEquals(9,calculator.square(3))} ) @TestFactory @@ -44,7 +44,7 @@ class CalculatorTest5 { 4 to 16, 5 to 25) .map { (input, expected) -> - DynamicTest.dynamicTest("$input squared") { + DynamicTest.dynamicTest("when I calculate $input^2 then I get $expected") { Assertions.assertEquals(expected, calculator.square(input)) } } @@ -59,14 +59,14 @@ class CalculatorTest5 { @TestFactory fun testSquaresFactory3() = squaresTestData .map { (input, expected) -> - DynamicTest.dynamicTest("$input squared") { + DynamicTest.dynamicTest("when I calculate $input^2 then I get $expected") { Assertions.assertEquals(expected, calculator.square(input)) } } @TestFactory fun testSquareRootsFactory3() = squaresTestData .map { (expected, input) -> - DynamicTest.dynamicTest("Square root of $input") { + DynamicTest.dynamicTest("I calculate the square root of $input then I get $expected") { Assertions.assertEquals(expected.toDouble(), calculator.squareRoot(input)) } } @@ -76,7 +76,7 @@ class CalculatorTest5 { Tag("logarithms") ) @Test - fun testLogarithms() { + fun whenIcalculateLog2Of8_thenIget3() { Assertions.assertEquals(3.0, calculator.log(2, 8)) } } diff --git a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/SimpleTest5.kt b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/SimpleTest5.kt index c04ab568f7..70d3fb90bf 100644 --- a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/SimpleTest5.kt +++ b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/junit5/SimpleTest5.kt @@ -6,14 +6,14 @@ import org.junit.jupiter.api.Test class SimpleTest5 { @Test - fun testEmpty() { + fun whenEmptyList_thenListIsEmpty() { val list = listOf() Assertions.assertTrue(list::isEmpty) } @Test @Disabled - fun testMessage() { + fun when3equals4_thenTestFails() { Assertions.assertEquals(3, 4) { "Three does not equal four" } From 26f495afa7dd942bd2de3165b6c4ff5b409837f0 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Wed, 25 Oct 2017 15:34:13 +0200 Subject: [PATCH 078/836] BAEL-1250 Initializing Arrays in Java --- .../src/main/java/com/baeldung/array/ArrayInitializer.java | 7 +++++++ .../test/java/com/baeldung/array/ArrayInitializerTest.java | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java index fd00c74e7f..7759e282e6 100644 --- a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java +++ b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java @@ -2,6 +2,8 @@ package com.baeldung.array; import java.util.Arrays; +import org.apache.commons.lang.ArrayUtils; + public class ArrayInitializer { public static int[] initializeArrayInLoop() { @@ -71,4 +73,9 @@ public class ArrayInitializer { } return array; } + + public static char[] initializeArrayUsingArraysUtilClone() { + char[] array = new char[] {'a', 'b', 'c'}; + return ArrayUtils.clone(array); + } } diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java index d3afad7b00..6826a5186b 100644 --- a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java +++ b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java @@ -8,6 +8,7 @@ import static com.baeldung.array.ArrayInitializer.initializeArrayRangeUsingArray import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysCopy; import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysFill; import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysSetAll; +import static com.baeldung.array.ArrayInitializer.initializeArrayUsingArraysUtilClone; import static com.baeldung.array.ArrayInitializer.initializeLargerArrayUsingArraysCopy; import static com.baeldung.array.ArrayInitializer.initializeMultiDimensionalArrayInLoop; import static org.junit.Assert.assertArrayEquals; @@ -65,4 +66,8 @@ public class ArrayInitializerTest { public void whenInitializeLargerArrayRangeUsingArraysSetAll_thenCorrect() { assertArrayEquals(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, initializeArrayUsingArraysSetAll()); } + + public void whenInitializeArrayUsingArraysUtilClone_thenCorrect() { + assertArrayEquals(new char[] { 'a', 'b', 'c' }, initializeArrayUsingArraysUtilClone()); + } } From 9ce32992a791f5d890c14123da9bb27d3079ba06 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Wed, 25 Oct 2017 15:53:15 +0200 Subject: [PATCH 079/836] small fix --- .../com/baeldung/array/ArrayInitializer.java | 16 ++++++++-------- .../com/baeldung/array/ArrayInitializerTest.java | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java index 474cbe42a9..0ba6c342d9 100644 --- a/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java +++ b/core-java/src/main/java/com/baeldung/array/ArrayInitializer.java @@ -26,17 +26,17 @@ public class ArrayInitializer { } static String[] initializeArrayAtTimeOfDeclarationMethod1() { - String array[] = new String[]{"Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda"}; + String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" }; return array; } static int[] initializeArrayAtTimeOfDeclarationMethod2() { - int[] array = new int[]{1, 2, 3, 4, 5}; + int[] array = new int[] { 1, 2, 3, 4, 5 }; return array; } static int[] initializeArrayAtTimeOfDeclarationMethod3() { - int array[] = {1, 2, 3, 4, 5}; + int array[] = { 1, 2, 3, 4, 5 }; return array; } @@ -53,13 +53,13 @@ public class ArrayInitializer { } static int[] initializeArrayUsingArraysCopy() { - int array[] = {1, 2, 3, 4, 5}; + int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5); return copy; } static int[] initializeLargerArrayUsingArraysCopy() { - int array[] = {1, 2, 3, 4, 5}; + int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 6); return copy; } @@ -70,9 +70,9 @@ public class ArrayInitializer { Arrays.setAll(array, p -> p > 9 ? 0 : p); return array; } - - public static char[] initializeArrayUsingArraysUtilClone() { - char[] array = new char[] {'a', 'b', 'c'}; + + static char[] initializeArrayUsingArraysUtilClone() { + char[] array = new char[] { 'a', 'b', 'c' }; return ArrayUtils.clone(array); } } diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java index 6826a5186b..7265fa20e5 100644 --- a/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java +++ b/core-java/src/test/java/com/baeldung/array/ArrayInitializerTest.java @@ -67,6 +67,7 @@ public class ArrayInitializerTest { assertArrayEquals(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, initializeArrayUsingArraysSetAll()); } + @Test public void whenInitializeArrayUsingArraysUtilClone_thenCorrect() { assertArrayEquals(new char[] { 'a', 'b', 'c' }, initializeArrayUsingArraysUtilClone()); } From ead7528c9c2bddfcee98b526bfc951d5410eb9a5 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Thu, 26 Oct 2017 10:17:25 +0200 Subject: [PATCH 080/836] BAEL-1171 java.lang.String API --- .../java/com/baeldung/string/StringTest.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/string/StringTest.java b/core-java/src/test/java/com/baeldung/string/StringTest.java index 0e325950b0..fe1a69aa23 100644 --- a/core-java/src/test/java/com/baeldung/string/StringTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.IllegalFormatException; import java.util.regex.PatternSyntaxException; @@ -29,11 +30,17 @@ public class StringTest { } @Test - public void whenGetBytes_thenCorrect() { - byte[] byteArray = "abcd".getBytes(); - byte[] expected = new byte[] { 97, 98, 99, 100 }; + public void whenGetBytes_thenCorrect() throws UnsupportedEncodingException { + byte[] byteArray1 = "abcd".getBytes(); + byte[] byteArray2 = "efgh".getBytes(StandardCharsets.US_ASCII); + byte[] byteArray3 = "ijkl".getBytes("UTF-8"); + byte[] expected1 = new byte[] { 97, 98, 99, 100 }; + byte[] expected2 = new byte[] { 101, 102, 103, 104 }; + byte[] expected3 = new byte[] { 105, 106, 107, 108 }; - assertArrayEquals(expected, byteArray); + assertArrayEquals(expected1, byteArray1); + assertArrayEquals(expected2, byteArray2); + assertArrayEquals(expected3, byteArray3); } @Test @@ -123,6 +130,7 @@ public class StringTest { @Test public void whenCallLastIndexOf_thenCorrect() { assertEquals(2, "foo".lastIndexOf("o")); + assertEquals(2, "foo".lastIndexOf(111)); } @Test From ef4ee45a18de65b0c81bbe8da16c0b063b2201a5 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Thu, 26 Oct 2017 11:48:45 +0200 Subject: [PATCH 081/836] BAEL-1263 Daemon Threads in Java --- .../baeldung/concurrent/daemon/NewThread.java | 9 +++++ .../concurrent/daemon/DaemonThreadTest.java | 33 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java create mode 100644 core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java new file mode 100644 index 0000000000..a9433a8333 --- /dev/null +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java @@ -0,0 +1,9 @@ +package com.baeldung.concurrent.daemon; + +public class NewThread extends Thread { + + public void run() { + for (int i = 0; i < 10; i++) + System.out.println("New Thread is running..."); + } +} diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java new file mode 100644 index 0000000000..96f79cd0dd --- /dev/null +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java @@ -0,0 +1,33 @@ +package com.baeldung.concurrent.daemon; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class DaemonThreadTest { + + @Test + public void whenCallIsDaemon_thenCorrect() { + NewThread daemonThread = new NewThread(); + NewThread userThread = new NewThread(); + daemonThread.setDaemon(true); + daemonThread.start(); + userThread.start(); + + assertTrue(daemonThread.isDaemon()); + assertFalse(userThread.isDaemon()); + } + + @Test(expected = IllegalThreadStateException.class) + public void givenUserThread_whenSetDaemonWhileRunning_thenIllegalThreadStateException() { + NewThread daemonThread = new NewThread(); + daemonThread.start(); + daemonThread.setDaemon(true); + } + + @Test + public void givenUserThread_whenStartThread_thenFalse() { + NewThread daemonThread = new NewThread(); + } +} From 5a23a6908198a709bd24edf987b8e2bd6c0cbc77 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Fri, 27 Oct 2017 10:17:01 +0200 Subject: [PATCH 082/836] merge with fork --- .../test/java/com/baeldung/string/StringTest.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/string/StringTest.java b/core-java/src/test/java/com/baeldung/string/StringTest.java index 2f8aec9887..e88b2d7c2c 100644 --- a/core-java/src/test/java/com/baeldung/string/StringTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringTest.java @@ -5,10 +5,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -<<<<<<< HEAD -======= import java.io.UnsupportedEncodingException; ->>>>>>> ef4ee45a18de65b0c81bbe8da16c0b063b2201a5 import java.nio.charset.StandardCharsets; import java.util.IllegalFormatException; import java.util.regex.PatternSyntaxException; @@ -33,13 +30,6 @@ public class StringTest { } @Test -<<<<<<< HEAD - public void whenGetBytes_thenCorrect() { - byte[] byteArray = "abcd".getBytes(); - byte[] expected = new byte[] { 97, 98, 99, 100 }; - - assertArrayEquals(expected, byteArray); -======= public void whenGetBytes_thenCorrect() throws UnsupportedEncodingException { byte[] byteArray1 = "abcd".getBytes(); byte[] byteArray2 = "efgh".getBytes(StandardCharsets.US_ASCII); @@ -51,7 +41,6 @@ public class StringTest { assertArrayEquals(expected1, byteArray1); assertArrayEquals(expected2, byteArray2); assertArrayEquals(expected3, byteArray3); ->>>>>>> ef4ee45a18de65b0c81bbe8da16c0b063b2201a5 } @Test @@ -234,4 +223,4 @@ public class StringTest { assertEquals("200", String.valueOf(l)); } -} +} \ No newline at end of file From 1be0d76f8c12837683846b0ba1d3da4307d8339a Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sun, 29 Oct 2017 12:59:55 +0200 Subject: [PATCH 083/836] BAEL-1263 Daemon Threads in Java --- .../main/java/com/baeldung/concurrent/daemon/NewThread.java | 5 +++-- .../com/baeldung/concurrent/daemon/DaemonThreadTest.java | 5 ----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java index a9433a8333..6ddcb954a1 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/daemon/NewThread.java @@ -3,7 +3,8 @@ package com.baeldung.concurrent.daemon; public class NewThread extends Thread { public void run() { - for (int i = 0; i < 10; i++) - System.out.println("New Thread is running..."); + while (true) + for (int i = 0; i < 10; i++) + System.out.println("New Thread is running..."); } } diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java index 96f79cd0dd..2c4eeb63d6 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/daemon/DaemonThreadTest.java @@ -25,9 +25,4 @@ public class DaemonThreadTest { daemonThread.start(); daemonThread.setDaemon(true); } - - @Test - public void givenUserThread_whenStartThread_thenFalse() { - NewThread daemonThread = new NewThread(); - } } From d7c207145ad799983f5ade9bd1a8b7787258f1d2 Mon Sep 17 00:00:00 2001 From: Jose Carvajal Date: Mon, 30 Oct 2017 13:39:39 +0100 Subject: [PATCH 084/836] Renamed unit tests --- ...ts.java => MultipleOutputsServiceApplicationUnitTest.java} | 2 +- ...java => MultipleOutputsWithConditionsServiceUnitTest.java} | 4 ++-- ...ApplicationTests.java => MyLoggerApplicationUnitTest.java} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/{MultipleOutputsServiceApplicationTests.java => MultipleOutputsServiceApplicationUnitTest.java} (96%) rename spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/{MultipleOutputsWithConditionsServiceApplicationTests.java => MultipleOutputsWithConditionsServiceUnitTest.java} (92%) rename spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/{MyLoggerApplicationTests.java => MyLoggerApplicationUnitTest.java} (96%) diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationUnitTest.java similarity index 96% rename from spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java rename to spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationUnitTest.java index 196d4f0d23..225ed73ff7 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationUnitTest.java @@ -17,7 +17,7 @@ import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MultipleOutputsServiceApplication.class) @DirtiesContext -public class MultipleOutputsServiceApplicationTests { +public class MultipleOutputsServiceApplicationUnitTest { @Autowired private MyProcessor pipe; diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceUnitTest.java similarity index 92% rename from spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java rename to spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceUnitTest.java index a74ee61be6..8628b209cb 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceUnitTest.java @@ -17,7 +17,7 @@ import com.baeldung.spring.cloud.stream.rabbit.processor.MyProcessor; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MultipleOutputsWithConditionsServiceApplication.class) @DirtiesContext -public class MultipleOutputsWithConditionsServiceApplicationTests { +public class MultipleOutputsWithConditionsServiceUnitTest { @Autowired private MyProcessor pipe; @@ -28,7 +28,7 @@ public class MultipleOutputsWithConditionsServiceApplicationTests { @Test public void whenSendMessage_thenResponseIsInAOutput() { whenSendMessage(1); - thenPayloadInChannelIs(pipe.anotherOutput(), 1); + thenPayloadInChannelIs(pipe.anOutput(), 1); } @Test diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationUnitTest.java similarity index 96% rename from spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java rename to spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationUnitTest.java index b939af25fc..1541af3cb5 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationTests.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationUnitTest.java @@ -17,7 +17,7 @@ import com.baeldung.spring.cloud.stream.rabbit.model.LogMessage; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MyLoggerServiceApplication.class) @DirtiesContext -public class MyLoggerApplicationTests { +public class MyLoggerApplicationUnitTest { @Autowired private Processor pipe; From d9368899219b8d67c9cb3cc68057eb4be469253e Mon Sep 17 00:00:00 2001 From: hgomez Date: Sat, 4 Nov 2017 17:43:04 -0400 Subject: [PATCH 085/836] first version --- libraries/pom.xml | 15 ++++ .../DailyMotionExample.java | 74 +++++++++++++++++++ .../googlehttpclientguide/DailyMotionUrl.java | 22 ++++++ .../baeldung/googlehttpclientguide/Video.java | 23 ++++++ .../googlehttpclientguide/VideoFeed.java | 20 +++++ .../googlehttpclientguide/logging.properties | 10 +++ 6 files changed, 164 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionExample.java create mode 100644 libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionUrl.java create mode 100644 libraries/src/main/java/com/baeldung/googlehttpclientguide/Video.java create mode 100644 libraries/src/main/java/com/baeldung/googlehttpclientguide/VideoFeed.java create mode 100644 libraries/src/main/java/com/baeldung/googlehttpclientguide/logging.properties diff --git a/libraries/pom.xml b/libraries/pom.xml index 25c1113fea..9384f58493 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -622,6 +622,21 @@ bcpkix-jdk15on 1.58 + + com.google.http-client + google-http-client + 1.23.0 + + + com.google.http-client + google-http-client-jackson2 + 1.23.0 + + + com.google.http-client + google-http-client-gson + 1.23.0 + diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionExample.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionExample.java new file mode 100644 index 0000000000..dd559f3aa2 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionExample.java @@ -0,0 +1,74 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.http.HttpRequest; +import com.google.api.client.http.HttpRequestFactory; +import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.http.HttpResponseException; +import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.JsonObjectParser; +import com.google.api.client.json.gson.GsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; + +/** + * + * @author Hugo + */ +public class DailyMotionExample { + + static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); + static final JsonFactory JSON_FACTORY = new JacksonFactory(); + //static final JsonFactory JSON_FACTORY = new GsonFactory(); + + private static void run() throws Exception { + HttpRequestFactory requestFactory + = HTTP_TRANSPORT.createRequestFactory( + new HttpRequestInitializer() { + + public void initialize(HttpRequest request) { + request.setParser(new JsonObjectParser(JSON_FACTORY)); + } + }); + DailyMotionUrl url = new DailyMotionUrl("https://api.dailymotion.com/videos/"); + url.fields = "id,tags,title,url"; + HttpRequest request = requestFactory.buildGetRequest(url); + VideoFeed videoFeed = request.execute().parseAs(VideoFeed.class); + if (videoFeed.list.isEmpty()) { + System.out.println("No videos found."); + } else { + if (videoFeed.hasMore) { + System.out.print("First "); + } + System.out.println(videoFeed.list.size() + " videos found:"); + for (Video video : videoFeed.list) { + System.out.println(); + System.out.println("-----------------------------------------------"); + System.out.println("ID: " + video.id); + System.out.println("Title: " + video.title); + System.out.println("Tags: " + video.tags); + System.out.println("URL: " + video.url); + } + } + } + + public static void main(String[] args) { + try { + try { + run(); + return; + } catch (HttpResponseException e) { + System.err.println(e.getMessage()); + } + } catch (Throwable t) { + t.printStackTrace(); + } + System.exit(1); + } + +} diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionUrl.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionUrl.java new file mode 100644 index 0000000000..0f77cdd2f6 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/DailyMotionUrl.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.http.GenericUrl; +import com.google.api.client.util.Key; + +/** + * + * @author Hugo + */ + public class DailyMotionUrl extends GenericUrl { + + public DailyMotionUrl(String encodedUrl) { + super(encodedUrl); + } + + @Key public String fields; + } diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/Video.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/Video.java new file mode 100644 index 0000000000..62622deaf5 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/Video.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.util.Key; +import java.util.List; + +/** + * + * @author Hugo + */ + public class Video { + @Key public String id; + + @Key public List tags; + + @Key public String title; + + @Key public String url; + } \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/VideoFeed.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/VideoFeed.java new file mode 100644 index 0000000000..6b62f61924 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/VideoFeed.java @@ -0,0 +1,20 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.util.Key; +import java.util.List; + +/** + * + * @author Hugo + */ + public class VideoFeed { + @Key public List