Adding 2.1.0 tag


git-svn-id: https://google-web-toolkit.googlecode.com/svn/tags/2.1.0@9127 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java b/build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
index 7d7db70..49c3001 100644
--- a/build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
+++ b/build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
@@ -81,6 +81,9 @@
         });
 
     String slurpSource = Booklet.slurpSource(position);
+    // The <pre> tag still requires '<' and '>' characters to be escaped
+    slurpSource = slurpSource.replace("<", "&lt;");
+    slurpSource = slurpSource.replace(">", "&gt;");
     return "<blockquote><pre>" + slurpSource + "</pre></blockquote>";
   }
 
diff --git a/samples/expenses/README-MAVEN.txt b/samples/expenses/README-MAVEN.txt
index 40e8546..cbb08be 100644
--- a/samples/expenses/README-MAVEN.txt
+++ b/samples/expenses/README-MAVEN.txt
@@ -4,9 +4,12 @@
 Eclipse. We've tested against Eclipse 3.5. Later versions will likely
 also work, earlier versions may not.
 
-Eclipse users will need to have the m2eclipse, or equivalent, pluigin
-installed. Instructions for how to install the m2eclipse plugin can
-be found here: http://m2eclipse.sonatype.org/installing-m2eclipse.html
+Eclipse users will need to install the following plugin components:
+- Google Plugin for Eclipse (instructions at http://code.google.com/eclipse/)
+- m2eclipse Core
+- Maven Integration for WTP (in m2eclipse extras)
+  Instructions for installing the maven plugins can be found here:
+  http://m2eclipse.sonatype.org/installing-m2eclipse.html
 
 Ensure Eclipse is configured to use Java 1.6 as this sample uses
 AppEngine.
diff --git a/samples/expenses/pom.xml b/samples/expenses/pom.xml
index 5b1b174..e22bf9a 100644
--- a/samples/expenses/pom.xml
+++ b/samples/expenses/pom.xml
@@ -25,11 +25,6 @@
 				<enabled>true</enabled>
 			</snapshots>
 		</repository>
-	<repository>
-            <id>maven-gae-plugin-repo</id>
-            <url>http://maven-gae-plugin.googlecode.com/svn/repository</url>
-            <name>maven-gae-plugin repository</name>
-        </repository>
         <repository>
             <id>spring-maven-release</id>
             <name>Spring Maven Release Repository</name>
@@ -155,7 +150,7 @@
 	<dependency>
             <groupId>com.google.appengine.orm</groupId>
             <artifactId>datanucleus-appengine</artifactId>
-            <version>1.0.7.final</version>
+            <version>1.0.7</version>
         </dependency>
         <!-- must be in main dependencies as well as plugin dependencies below -->
         <dependency>
@@ -416,6 +411,9 @@
             <artifactId>json</artifactId>
             <version>20090211</version>
         </dependency>
+        <!-- Uncomment appengine-local-runtime and appengine-tools-api to be able to run App Engine unit tests -->
+        <!-- With these uncommented, you must run mvn gae:unpack before importing the project into Eclipse -->
+        <!-- 
     <dependency>
             <groupId>com.google.appengine</groupId>
             <artifactId>appengine-local-runtime</artifactId>
@@ -430,6 +428,7 @@
             <scope>system</scope>
             <systemPath>${gae.home}/lib/appengine-tools-api.jar</systemPath>
         </dependency>
+         -->
     <dependency>
     	<groupId>net.sf.jsr107cache</groupId>
     	<artifactId>jsr107cache</artifactId>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ioc/Factory.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ioc/Factory.java
deleted file mode 100644
index f2dfc9e..0000000
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ioc/Factory.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.sample.expenses.client.ioc;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.event.shared.SimpleEventBus;
-import com.google.gwt.place.shared.PlaceController;
-import com.google.gwt.place.shared.PlaceHistoryHandler;
-import com.google.gwt.sample.expenses.client.ExpenseDetails;
-import com.google.gwt.sample.expenses.client.ExpenseTree;
-import com.google.gwt.sample.expenses.client.ExpensesApp;
-import com.google.gwt.sample.expenses.client.ExpensesShell;
-import com.google.gwt.sample.expenses.client.place.ExpensesPlaceHistoryMapper;
-import com.google.gwt.sample.expenses.client.place.ReportListPlace;
-import com.google.gwt.sample.expenses.client.place.ReportPlace;
-import com.google.gwt.sample.expenses.shared.ExpensesRequestFactory;
-
-/**
- * In charge of instantiation.
- * <p>
- * TODO: Use {@link http ://code.google.com/p/google-gin/} to generate this
- */
-public class Factory {
-
-  private final EventBus eventBus = new SimpleEventBus();
-  private final ExpensesRequestFactory requestFactory = GWT.create(ExpensesRequestFactory.class);
-  private final ExpensesPlaceHistoryMapper historyMapper = GWT.create(ExpensesPlaceHistoryMapper.class);
-  private final PlaceHistoryHandler placeHistoryHandler;
-  private final PlaceController placeController = new PlaceController(eventBus);
-
-  public Factory() {
-    requestFactory.initialize(eventBus);
-    historyMapper.setFactory(this);
-    placeHistoryHandler = new PlaceHistoryHandler(historyMapper);
-  }
-
-  public ExpensesApp getExpensesApp() {
-    return new ExpensesApp(requestFactory, eventBus, new ExpensesShell(
-        new ExpenseTree(requestFactory), new ExpenseDetails(requestFactory)),
-        placeHistoryHandler, placeController);
-  }
-
-  public ReportListPlace.Tokenizer getListTokenizer() {
-    return new ReportListPlace.Tokenizer(requestFactory);
-  }
-
-  public ReportPlace.Tokenizer getReportTokenizer() {
-    return new ReportPlace.Tokenizer(getListTokenizer(), requestFactory);
-  }
-}
diff --git a/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java b/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java
index 22c1354..ad072b1 100644
--- a/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java
+++ b/user/src/com/google/gwt/junit/RunStyleHtmlUnit.java
@@ -32,6 +32,9 @@
 
 import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;
 
+import org.w3c.css.sac.CSSParseException;
+import org.w3c.css.sac.ErrorHandler;
+
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.util.ArrayList;
@@ -91,6 +94,25 @@
     public void run() {
       WebClient webClient = new WebClient(browser);
       webClient.setAlertHandler(this);
+      // Adding a handler that ignores errors to work-around
+      // https://sourceforge.net/tracker/?func=detail&aid=3090806&group_id=47038&atid=448266
+      webClient.setCssErrorHandler(new ErrorHandler() {
+
+        public void error(CSSParseException exception) {
+          // ignore
+        }
+
+        public void fatalError(CSSParseException exception) {
+          treeLogger.log(TreeLogger.WARN,
+              "CSS fatal error: " + exception.getURI() + " ["
+                  + exception.getLineNumber() + ":"
+                  + exception.getColumnNumber() + "] " + exception.getMessage());
+        }
+
+        public void warning(CSSParseException exception) {
+          // ignore
+        }
+      });
       webClient.setIncorrectnessListener(this);
       webClient.setThrowExceptionOnFailingStatusCode(false);
       webClient.setThrowExceptionOnScriptError(true);