Author: jkuhnert
Date: Sun Mar 18 18:21:45 2007
New Revision: 519782
URL: http://svn.apache.org/viewvc?view=rev&rev=519782
Log:
Fixes TAPESTRY-996.
RequestLocaleManager was being extremely picky about incoming locale requests
matching filtered locales if the filtered list didn't contain exact matches
when the original filter list has country/language specific listings only.
Modified:
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Dates.html
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java
tapestry/tapestry4/trunk/tapestry.iws
Modified:
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Dates.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Dates.html?view=diff&rev=519782&r1=519781&r2=519782
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Dates.html
(original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Dates.html
Sun Mar 18 18:21:45 2007
@@ -16,7 +16,6 @@
<form jwcid="[EMAIL PROTECTED]" delegate="bean:delegate"
clientValidationEnabled="ognl:clientValidationEnabled"
async="true" updateComponents="dateDisplay" >
-
<table >
<tbody>
<tr>
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java?view=diff&rev=519782&r1=519781&r2=519782
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java
Sun Mar 18 18:21:45 2007
@@ -14,13 +14,6 @@
package org.apache.tapestry.services.impl;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.hivemind.service.ThreadLocale;
import org.apache.tapestry.TapestryConstants;
import org.apache.tapestry.TapestryUtils;
@@ -28,6 +21,8 @@
import org.apache.tapestry.services.RequestLocaleManager;
import org.apache.tapestry.web.WebRequest;
+import java.util.*;
+
/**
* Service tapestry.request.RequestLocaleManager. Identifies the Locale
provided by the client
* (either in a Tapestry-specific cookie, or interpolated from the HTTP header.
@@ -111,16 +106,24 @@
if (_acceptedLocaleNamesSet.isEmpty())
return getLocale(requestLocaleName);
- while (true)
+ while (requestLocaleName.length() > 0)
{
if (_acceptedLocaleNamesSet.contains(requestLocaleName))
return getLocale(requestLocaleName);
requestLocaleName = stripTerm(requestLocaleName);
+ }
- if (requestLocaleName.length() == 0)
- return _defaultLocale;
+ // now try "best match"
+
+ for (Iterator it = _acceptedLocaleNamesSet.iterator(); it.hasNext();) {
+
+ String locale = (String) it.next();
+ if (locale.startsWith(localeName))
+ return getLocale(locale);
}
+
+ return _defaultLocale;
}
private String stripTerm(String localeName)
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java?view=diff&rev=519782&r1=519781&r2=519782
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java
Sun Mar 18 18:21:45 2007
@@ -14,17 +14,16 @@
package org.apache.tapestry.services.impl;
-import static org.easymock.EasyMock.expect;
-
-import java.util.Locale;
-
import org.apache.hivemind.service.ThreadLocale;
import org.apache.tapestry.BaseComponentTestCase;
import org.apache.tapestry.TapestryConstants;
import org.apache.tapestry.services.CookieSource;
import org.apache.tapestry.web.WebRequest;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.util.Locale;
+
/**
* Tests for [EMAIL PROTECTED]
org.apache.tapestry.services.impl.RequestLocaleManagerImpl}.
*
@@ -48,7 +47,7 @@
return threadLocale;
}
- public void testSuppliedByRequest()
+ public void test_Supplied_By_Request()
{
CookieSource source = newMock(CookieSource.class);
@@ -103,22 +102,22 @@
verify();
}
- public void testJustLanguage()
+ public void test_Just_Language()
{
attempt("en", Locale.ENGLISH);
}
- public void testLanguageAndCountry()
+ public void test_Language_And_Country()
{
attempt("fr_FR", Locale.FRANCE);
}
- public void testWithVariant()
+ public void test_With_Variant()
{
attempt("en_US_Bahstohn", new Locale("en", "US", "Bahstohn"));
}
- public void testPersist()
+ public void test_Persist()
{
Locale locale = Locale.SIMPLIFIED_CHINESE;
@@ -140,7 +139,7 @@
verify();
}
- public void testPersistNoChange()
+ public void test_Persist_No_Change()
{
CookieSource source = newMock(CookieSource.class);
@@ -180,7 +179,7 @@
verify();
}
- public void testGetLocaleValuesAreCached()
+ public void test_Get_Locale_Values_Are_Cached()
{
RequestLocaleManagerImpl manager = new RequestLocaleManagerImpl();
@@ -194,7 +193,7 @@
* Test when filtering of incoming locales is disabled.
*/
- public void testFilterDisabled()
+ public void test_Filter_Disabled()
{
RequestLocaleManagerImpl manager = new RequestLocaleManagerImpl();
@@ -207,19 +206,31 @@
* Test with filtering enabled.
*/
- public void testFilterEnabled()
+ public void test_Filter_Enabled()
{
RequestLocaleManagerImpl manager = new RequestLocaleManagerImpl();
manager.setAcceptedLocales("en,fr");
manager.initializeService();
- assertEquals(Locale.ENGLISH, manager.filterRequestedLocale("en"));
- assertEquals(Locale.ENGLISH, manager.filterRequestedLocale("en_US"));
- assertEquals(Locale.FRENCH, manager.filterRequestedLocale("fr"));
- assertEquals(Locale.FRENCH, manager.filterRequestedLocale("fr_FR"));
+ assertEquals(manager.filterRequestedLocale("en"), Locale.ENGLISH);
+ assertEquals(manager.filterRequestedLocale("en_US"), Locale.ENGLISH);
+ assertEquals(manager.filterRequestedLocale("fr"), Locale.FRENCH);
+ assertEquals(manager.filterRequestedLocale("fr_FR"), Locale.FRENCH);
// Unrecognized locales filter to the first accepted locale.
- assertEquals(Locale.ENGLISH,
manager.filterRequestedLocale("foo_bar_BAZ"));
+ assertEquals(manager.filterRequestedLocale("foo_bar_BAZ"),
Locale.ENGLISH);
+ }
+
+ public void test_Filter_Best_Guess()
+ {
+ RequestLocaleManagerImpl manager = new RequestLocaleManagerImpl();
+ manager.setAcceptedLocales("en_US,fr_FR");
+ manager.initializeService();
+
+ assertEquals(manager.filterRequestedLocale("en"), Locale.US);
+ assertEquals(manager.filterRequestedLocale("en_GB"), Locale.US);
+ assertEquals(manager.filterRequestedLocale("fr"), Locale.FRANCE);
+ assertEquals(manager.filterRequestedLocale("fr_FR"), Locale.FRANCE);
}
-}
\ No newline at end of file
+}
Modified: tapestry/tapestry4/trunk/tapestry.iws
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry.iws?view=diff&rev=519782&r1=519781&r2=519782
==============================================================================
--- tapestry/tapestry4/trunk/tapestry.iws (original)
+++ tapestry/tapestry4/trunk/tapestry.iws Sun Mar 18 18:21:45 2007
@@ -18,16 +18,9 @@
<component name="ChangeListManager">
<list default="true" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.iws"
afterPath="$PROJECT_DIR$/tapestry.iws" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-annotations/tapestry-annotations.iml"
afterPath="$PROJECT_DIR$/tapestry-annotations/tapestry-annotations.iml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-contrib/tapestry-contrib.iml"
afterPath="$PROJECT_DIR$/tapestry-contrib/tapestry-contrib.iml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java"
afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java"
/>
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.ipr"
afterPath="$PROJECT_DIR$/tapestry.ipr" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-framework/tapestry-framework.iml"
afterPath="$PROJECT_DIR$/tapestry-framework/tapestry-framework.iml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-examples/TimeTracker/TimeTracker.iml"
afterPath="$PROJECT_DIR$/tapestry-examples/TimeTracker/TimeTracker.iml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-examples/Workbench/Workbench.iml"
afterPath="$PROJECT_DIR$/tapestry-examples/Workbench/Workbench.iml" />
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tapestry.iml"
afterPath="$PROJECT_DIR$/tapestry.iml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java"
afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-portlet/tapestry-portlet.iml"
afterPath="$PROJECT_DIR$/tapestry-portlet/tapestry-portlet.iml" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-examples/Workbench/src/context/Dates.html"
afterPath="$PROJECT_DIR$/tapestry-examples/Workbench/src/context/Dates.html" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java"
afterPath="$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java"
afterPath="$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java"
/>
</list>
</component>
<component name="ChangesViewManager" flattened_view="true" />
@@ -337,14 +330,14 @@
</UpdatedFiles>
</UpdateInfo>
</component>
- <component name="RunManager" selected="TestNG.TestBindingSource">
- <tempConfiguration default="false" name="TestBindingSource" type="TestNG"
factoryName="TestNG" enabled="false" merge="false">
+ <component name="RunManager" selected="TestNG.TestRequestLocaleManager">
+ <tempConfiguration default="false" name="TestRequestLocaleManager"
type="TestNG" factoryName="TestNG" enabled="false" merge="false">
<module name="tapestry-framework" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" value="org.apache.tapestry.services.impl" />
- <option name="MAIN_CLASS_NAME"
value="org.apache.tapestry.services.impl.TestBindingSource" />
+ <option name="MAIN_CLASS_NAME"
value="org.apache.tapestry.services.impl.TestRequestLocaleManager" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
@@ -548,7 +541,7 @@
<option name="PERFORM_COMMIT_IN_BACKGROUND" value="false" />
<option name="PUT_FOCUS_INTO_COMMENT" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
- <option name="LAST_COMMIT_MESSAGE" value="Fixes TAPESTRY-937. Simple
stupid indexOf check using > 1 instead of > -1. I'm sure I added this bug
at some point." />
+ <option name="LAST_COMMIT_MESSAGE" value="Fixes
TAPESTRY-996. RequestLocaleManager was being extremely picky about
incoming locale requests matching filtered locales if the filtered list didn't
contain exact matches when the original filter list has country/language
specific listings only." />
<option name="SAVE_LAST_COMMIT_MESSAGE" value="true" />
<option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
@@ -568,6 +561,7 @@
<MESSAGE value="Fixes TAPESTRY-872. The documented usage of
PageAttachListener stated that page properties should be restored before the
listener is called. Modified logic so that RequestCycle calls firePageAttached
directly and removed the firePageAttached call within AbstractPage.attach" />
<MESSAGE value="Upgraded commons-fileupload/commons-io." />
<MESSAGE value="Fixes TAPESTRY-937. Simple stupid indexOf check using >
1 instead of > -1. I'm sure I added this bug at some point." />
+ <MESSAGE value="Fixes TAPESTRY-996. RequestLocaleManager was
being extremely picky about incoming locale requests matching filtered locales
if the filtered list didn't contain exact matches when the original filter list
has country/language specific listings only." />
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
@@ -584,109 +578,115 @@
<option name="myLastEditedConfigurable" value="Project Default" />
</component>
<component name="editorHistoryManager">
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/event/PageAttachListener.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="30" column="39" selection-start="1193"
selection-end="1193" vertical-scroll-proportion="0.22998296">
- <folding />
+ <state line="18" column="38" selection-start="754" selection-end="754"
vertical-scroll-proportion="0.07666099">
+ <folding>
+ <element signature="imports" expanded="true" />
+ </folding>
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/UploadPart.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-contrib/src/java/org/apache/tapestry/contrib/table/model/ITableColumn.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="79" column="34" selection-start="2084"
selection-end="2084" vertical-scroll-proportion="0.7410562">
+ <state line="28" column="21" selection-start="1137"
selection-end="1137" vertical-scroll-proportion="0.2128821">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/tapestry-framework/pom.xml">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="62" column="20" selection-start="2337"
selection-end="2337" vertical-scroll-proportion="0.40971038">
+ <state line="36" column="0" selection-start="1190"
selection-end="1190" vertical-scroll-proportion="0.2044293">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/ServletMultipartDecoder.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="33" column="1" selection-start="1144"
selection-end="1144" vertical-scroll-proportion="0.26831347">
+ <state line="72" column="8" selection-start="2473"
selection-end="2473" vertical-scroll-proportion="0.6516184">
<folding />
</state>
</provider>
</entry>
- <entry
file="jar://$USERPROFILE$/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar!/org/apache/commons/fileupload/servlet/ServletFileUpload.class">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderFilter.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="16" column="0" selection-start="985" selection-end="985"
vertical-scroll-proportion="0.19413288">
+ <state line="34" column="20" selection-start="1253"
selection-end="1253" vertical-scroll-proportion="0.19165248">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java">
+ <entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="18" column="38" selection-start="754" selection-end="754"
vertical-scroll-proportion="0.07666099">
- <folding>
- <element signature="imports" expanded="true" />
- </folding>
+ <state line="203" column="40" selection-start="7952"
selection-end="7952" vertical-scroll-proportion="0.42248723">
+ <folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/pom.xml">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/binding/BindingConstants.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="15" column="0" selection-start="705" selection-end="705"
vertical-scroll-proportion="0.19165248">
+ <state line="42" column="31" selection-start="1286"
selection-end="1286" vertical-scroll-proportion="0.5263158">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-contrib/src/java/org/apache/tapestry/contrib/table/model/ITableColumn.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="28" column="21" selection-start="1137"
selection-end="1137" vertical-scroll-proportion="0.2128821">
+ <state line="215" column="0" selection-start="6208"
selection-end="6208" vertical-scroll-proportion="0.56558776">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="36" column="0" selection-start="1190"
selection-end="1190" vertical-scroll-proportion="0.2044293">
+ <state line="61" column="0" selection-start="1882"
selection-end="1882" vertical-scroll-proportion="0.51107323">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java">
+ <entry file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/pom.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="72" column="8" selection-start="2473"
selection-end="2473" vertical-scroll-proportion="0.6516184">
+ <state line="96" column="11" selection-start="3434"
selection-end="3434" vertical-scroll-proportion="0.4250426">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderFilter.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-examples/TimeTracker/src/context/Home.html">
+ <provider editor-type-id="HtmlPreview">
+ <state />
+ </provider>
<provider selected="true" editor-type-id="text-editor">
- <state line="34" column="20" selection-start="1253"
selection-end="1253" vertical-scroll-proportion="0.19165248">
+ <state line="43" column="11" selection-start="1531"
selection-end="1531" vertical-scroll-proportion="0.3728223">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/pom.xml">
+ <entry
file="file://$PROJECT_DIR$/tapestry-examples/Workbench/src/context/Dates.html">
+ <provider editor-type-id="HtmlPreview">
+ <state />
+ </provider>
<provider selected="true" editor-type-id="text-editor">
- <state line="203" column="40" selection-start="7952"
selection-end="7952" vertical-scroll-proportion="0.42248723">
+ <state line="18" column="8" selection-start="487" selection-end="487"
vertical-scroll-proportion="0.23519164">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/binding/BindingConstants.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="42" column="31" selection-start="1286"
selection-end="1286" vertical-scroll-proportion="0.5263158">
+ <state line="47" column="4" selection-start="2214"
selection-end="2214" vertical-scroll-proportion="0.4088586">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestBindingSource.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/RequestLocaleManagerImpl.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="215" column="0" selection-start="6208"
selection-end="6208" vertical-scroll-proportion="0.56558776">
+ <state line="115" column="0" selection-start="3646"
selection-end="3646" vertical-scroll-proportion="0.34497446">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/java/org/apache/tapestry/services/impl/BindingSourceImpl.java">
+ <entry
file="file://$PROJECT_DIR$/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestRequestLocaleManager.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="61" column="0" selection-start="1882"
selection-end="1882" vertical-scroll-proportion="0.51107323">
+ <state line="223" column="0" selection-start="6092"
selection-end="6092" vertical-scroll-proportion="0.7572402">
<folding />
</state>
</provider>