[mapguide-commits] r7229 - in sandbox/jng/swig-java/UnitTest/Common: . JavaApiExTest JavaApiExTest/.idea JavaApiExTest/.idea/copyright JavaApiExTest/.idea/inspectionProfiles JavaApiExTest/.idea/scopes JavaApiExTest/src

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Nov 26 08:16:52 PST 2012


Author: jng
Date: 2012-11-26 08:16:51 -0800 (Mon, 26 Nov 2012)
New Revision: 7229

Added:
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/.name
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/ant.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/compiler.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright/profiles_settings.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/encodings.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/inspectionProfiles/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/misc.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/modules.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes/scope_settings.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/uiDesigner.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/vcs.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/workspace.xml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/MapGuideApiExTest.iml
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/AssertException.java
   sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/MapGuideApiTest.java
Log:
#9, #2114: Add a test console java application (IntelliJ IDEA format) to exercise the collection implementation of the enhanced java wrapper api. This requires resolution of #2189, #2190 for all of its tests to pass (the collection bugs were discovered running this test suite)


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest
___________________________________________________________________
Added: svn:ignore
   + out

Added: bugtraq:number
   + true


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea
___________________________________________________________________
Added: bugtraq:number
   + true

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/.name
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/.name	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/.name	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1 @@
+MapGuideApiExTest
\ No newline at end of file

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/ant.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/ant.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/ant.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AntConfiguration">
+    <defaultAnt bundledAnt="true" />
+  </component>
+</project>
+

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/compiler.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/compiler.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/compiler.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <option name="DEFAULT_COMPILER" value="Javac" />
+    <resourceExtensions />
+    <wildcardResourcePatterns>
+      <entry name="?*.properties" />
+      <entry name="?*.xml" />
+      <entry name="?*.gif" />
+      <entry name="?*.png" />
+      <entry name="?*.jpeg" />
+      <entry name="?*.jpg" />
+      <entry name="?*.html" />
+      <entry name="?*.dtd" />
+      <entry name="?*.tld" />
+      <entry name="?*.ftl" />
+    </wildcardResourcePatterns>
+    <annotationProcessing enabled="false" useClasspath="true" />
+  </component>
+</project>
+


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright
___________________________________________________________________
Added: bugtraq:number
   + true

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright/profiles_settings.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright/profiles_settings.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/copyright/profiles_settings.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,5 @@
+<component name="CopyrightManager">
+  <settings default="">
+    <module2copyright />
+  </settings>
+</component>
\ No newline at end of file

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/encodings.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/encodings.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/encodings.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/inspectionProfiles
___________________________________________________________________
Added: bugtraq:number
   + true

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/misc.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/misc.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/misc.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EntryPointsManager">
+    <entry_points version="2.0" />
+  </component>
+  <component name="ProjectResources">
+    <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+  <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false">
+    <option name="USER" value="" />
+    <option name="PASSWORD" value="" />
+    <option name="mySSHConnectionTimeout" value="30000" />
+    <option name="mySSHReadTimeout" value="30000" />
+    <option name="LAST_MERGED_REVISION" />
+    <option name="MERGE_DRY_RUN" value="false" />
+    <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
+    <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
+    <option name="IGNORE_SPACES_IN_MERGE" value="false" />
+    <option name="DETECT_NESTED_COPIES" value="true" />
+    <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
+    <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
+    <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
+    <option name="FORCE_UPDATE" value="false" />
+    <option name="IGNORE_EXTERNALS" value="false" />
+    <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
+  </component>
+</project>
+

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/modules.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/modules.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/modules.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/MapGuideApiExTest.iml" filepath="$PROJECT_DIR$/MapGuideApiExTest.iml" />
+    </modules>
+  </component>
+</project>
+


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes
___________________________________________________________________
Added: bugtraq:number
   + true

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes/scope_settings.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes/scope_settings.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/scopes/scope_settings.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+  <state>
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </state>
+</component>
\ No newline at end of file

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/uiDesigner.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/uiDesigner.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/uiDesigner.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
+

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/vcs.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/vcs.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/vcs.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+  </component>
+</project>
+

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/workspace.xml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/workspace.xml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/.idea/workspace.xml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="f24f429b-81bb-475f-9057-46f372ac8279" name="Default" comment="" />
+    <ignored path="MapGuideApiExTest.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="DaemonCodeAnalyzer">
+    <disable_hints />
+  </component>
+  <component name="DebuggerManager">
+    <line_breakpoints>
+      <breakpoint url="file://$PROJECT_DIR$/src/MapGuideApiTest.java" line="1026" class="MapGuideApiTest" package="">
+        <option name="ENABLED" value="true" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+    </line_breakpoints>
+    <breakpoint_any>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+      <breakpoint>
+        <option name="NOTIFY_CAUGHT" value="true" />
+        <option name="NOTIFY_UNCAUGHT" value="true" />
+        <option name="ENABLED" value="false" />
+        <option name="LOG_ENABLED" value="false" />
+        <option name="LOG_EXPRESSION_ENABLED" value="false" />
+        <option name="SUSPEND_POLICY" value="SuspendAll" />
+        <option name="COUNT_FILTER_ENABLED" value="false" />
+        <option name="COUNT_FILTER" value="0" />
+        <option name="CONDITION_ENABLED" value="false" />
+        <option name="CLASS_FILTERS_ENABLED" value="false" />
+        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+        <option name="CONDITION" value="" />
+        <option name="LOG_MESSAGE" value="" />
+      </breakpoint>
+    </breakpoint_any>
+    <breakpoint_rules />
+    <ui_properties />
+  </component>
+  <component name="FavoritesManager">
+    <favorites_list name="MapGuideApiExTest" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="MapGuideApiTest.java" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/MapGuideApiTest.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="1227" column="57" selection-start="58790" selection-end="58790" vertical-scroll-proportion="0.9583333">
+              <folding>
+                <element signature="method#testReadOnlyLayerCollection#0;class#MapGuideApiTest#0" expanded="false" />
+                <element signature="method#testStringCollection#0;class#MapGuideApiTest#0" expanded="false" />
+                <element signature="method#testPropertyCollection#0;class#MapGuideApiTest#0" expanded="false" />
+                <element signature="method#testClassDefinitionCollection#0;class#MapGuideApiTest#0" expanded="false" />
+                <element signature="e#54940#54954#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FindManager">
+    <FindUsagesManager>
+      <setting name="OPEN_NEW_TAB" value="false" />
+    </FindUsagesManager>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="changedFiles">
+      <list>
+        <option value="$PROJECT_DIR$/src/AssertException.java" />
+        <option value="$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgFeatureSchemaCollection.java" />
+        <option value="$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgPropertyDefinitionCollection.java" />
+        <option value="$PROJECT_DIR$/src/MapGuideApiTest.java" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="1721" />
+    <option name="y" value="53" />
+    <option name="width" value="1218" />
+    <option name="height" value="928" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectReloadState">
+    <option name="STATE" value="0" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+    <panes>
+      <pane id="Scope">
+        <subPane subId="Project Files">
+          <PATH>
+            <PATH_ELEMENT USER_OBJECT="Root">
+              <option name="myItemId" value="" />
+              <option name="myItemType" value="" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="PackagesPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="External Libraries" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="External Libraries" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiEx.jar" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="mapguide" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="External Libraries" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiEx.jar" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="MapGuideApiExTest" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="GoToFile.includeJavaFiles" value="false" />
+    <property name="project.structure.last.edited" value="Modules" />
+    <property name="project.structure.proportion" value="0.15" />
+    <property name="options.splitter.main.proportions" value="0.3" />
+    <property name="MemberChooser.sorted" value="false" />
+    <property name="recentsLimit" value="5" />
+    <property name="options.lastSelected" value="reference.projectsettings.compiler.javacompiler" />
+    <property name="project.structure.side.proportion" value="0.2" />
+    <property name="MemberChooser.copyJavadoc" value="false" />
+    <property name="GoToClass.toSaveIncludeLibraries" value="false" />
+    <property name="MemberChooser.showClasses" value="true" />
+    <property name="GoToClass.includeLibraries" value="false" />
+    <property name="dynamic.classpath" value="false" />
+    <property name="options.searchVisible" value="true" />
+    <property name="options.splitter.details.proportions" value="0.2" />
+  </component>
+  <component name="RunManager" selected="Application.Console">
+    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
+      <module name="" />
+      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" />
+      <option name="PROGRAM_PARAMETERS" />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="Remote" factoryName="Remote">
+      <option name="USE_SOCKET_TRANSPORT" value="true" />
+      <option name="SERVER_MODE" value="false" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <option name="VM_PARAMETERS" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="moduleWithDependencies" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application">
+      <option name="MAIN_CLASS_NAME" value="MapGuideApiTest" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/../../../Web/bin/release" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="moduleWithDependencies" />
+      </option>
+      <envs />
+      <patterns />
+      <method>
+        <option name="AntTarget" enabled="false" />
+        <option name="BuildArtifacts" enabled="false" />
+        <option name="Make" enabled="true" />
+        <option name="Maven.BeforeRunTask" enabled="false" />
+      </method>
+    </configuration>
+    <configuration default="false" name="Console" type="Application" factoryName="Application">
+      <option name="MAIN_CLASS_NAME" value="MapGuideApiTest" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/../../../Web/bin/release" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="MapGuideApiExTest" />
+      <envs />
+      <RunnerSettings RunnerId="Debug">
+        <option name="DEBUG_PORT" value="" />
+        <option name="TRANSPORT" value="0" />
+        <option name="LOCAL" value="true" />
+      </RunnerSettings>
+      <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Debug" />
+      <ConfigurationWrapper RunnerId="Run" />
+      <method />
+    </configuration>
+    <list size="1">
+      <item index="0" class="java.lang.String" itemvalue="Application.Console" />
+    </list>
+    <configuration name="<template>" type="WebApp" default="true" selected="false">
+      <Host>localhost</Host>
+      <Port>5050</Port>
+    </configuration>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="f24f429b-81bb-475f-9057-46f372ac8279" name="Default" comment="" />
+      <created>1353932158797</created>
+      <updated>1353932158797</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="1721" y="53" width="1218" height="928" extended-state="0" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="JetGradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3484163" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23243712" sideWeight="0.6049223" order="1" side_tool="true" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23243712" sideWeight="0.059585493" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32642487" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Documentation" active="false" anchor="right" auto_hide="true" internal_type="DOCKED" type="FLOATING" visible="false" weight="0.32928944" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" x="839" y="583" width="636" height="307" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
+    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
+    <option name="CHECK_NEW_TODO" value="true" />
+    <option name="myTodoPanelSettings">
+      <value>
+        <are-packages-shown value="false" />
+        <are-modules-shown value="false" />
+        <flatten-packages value="false" />
+        <is-autoscroll-to-source value="false" />
+      </value>
+    </option>
+    <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
+    <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
+    <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
+    <option name="ENABLE_BACKGROUND_PROCESSES" value="false" />
+    <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
+    <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
+    <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
+    <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
+    <option name="SHORT_DIFF_HORISONTALLY" value="true" />
+    <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
+    <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
+    <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
+    <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
+    <option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
+    <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
+    <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
+    <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
+    <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
+    <option name="LAST_COMMIT_MESSAGE" />
+    <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
+    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
+    <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
+    <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
+    <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
+    <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
+    <option name="ACTIVE_VCS_NAME" />
+    <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
+    <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
+    <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
+    <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+  </component>
+  <component name="antWorkspaceConfiguration">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="FILTER_TARGETS" value="false" />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MapGuideJavaApiExJNI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="2904" column="0" selection-start="270715" selection-end="270715" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/AssertException.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="12" column="54" selection-start="284" selection-end="284" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgSerializable.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="22" column="67" selection-start="712" selection-end="712" vertical-scroll-proportion="0.32258064" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgNamedSerializable.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="16" column="50" selection-start="516" selection-end="516" vertical-scroll-proportion="0.32258064" />
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files (x86)/Java/jdk1.6.0_33/src.zip!/java/lang/String.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="1004" column="0" selection-start="38011" selection-end="38011" vertical-scroll-proportion="0.03307393" />
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files (x86)/Java/jdk1.6.0_33/src.zip!/java/lang/StringBuilder.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="429" column="0" selection-start="12939" selection-end="12939" vertical-scroll-proportion="0.032258064" />
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files (x86)/Java/jdk1.6.0_33/src.zip!/java/lang/ClassLoader.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="322" column="0" selection-start="11967" selection-end="11967" vertical-scroll-proportion="0.24408014" />
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files (x86)/Java/jdk1.6.0_33/src.zip!/java/lang/Object.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="133" column="0" selection-start="6113" selection-end="6113" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files (x86)/Java/jdk1.6.0_33/src.zip!/java/util/ArrayList.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="215" column="0" selection-start="8342" selection-end="8342" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgFeatureSchemaCollection.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="210" column="26" selection-start="6412" selection-end="6412" vertical-scroll-proportion="0.0" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgFeatureSchema.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="79" column="51" selection-start="2059" selection-end="2059" vertical-scroll-proportion="0.60830325" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgByteProperty.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="16" column="14" selection-start="491" selection-end="491" vertical-scroll-proportion="-0.6895943" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgBatchPropertyCollection.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="116" column="0" selection-start="3461" selection-end="3461" vertical-scroll-proportion="0.33212996" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgPropertyDefinitionCollection.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="248" column="13" selection-start="7649" selection-end="7649" vertical-scroll-proportion="0.33212996" />
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/org/osgeo/mapguide/MgLayerCollection.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="172" column="71" selection-start="4032" selection-end="4922" vertical-scroll-proportion="0.6502732" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/MapGuideApiTest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="1227" column="57" selection-start="58790" selection-end="58790" vertical-scroll-proportion="0.9583333" />
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArtifactsStructureConfigurable.UI">
+        <settings>
+          <artifact-editor />
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="FacetStructureConfigurable.UI">
+        <settings>
+          <last-edited>No facets are configured</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="GlobalLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="JdkListConfigurable.UI">
+        <settings>
+          <last-edited>1.6</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ModuleStructureConfigurable.UI">
+        <settings>
+          <last-edited>MapGuideApiExTest</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectJDKs.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>
+

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/MapGuideApiExTest.iml
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/MapGuideApiExTest.iml	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/MapGuideApiExTest.iml	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="1.6" jdkType="JavaSDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library" exported="">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES>
+          <root url="jar://$MODULE_DIR$/../../../Web/src/WEB-INF/lib/MapGuideApiEx-sources.jar!/" />
+        </SOURCES>
+      </library>
+    </orderEntry>
+  </component>
+</module>
+


Property changes on: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src
___________________________________________________________________
Added: bugtraq:number
   + true

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/AssertException.java
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/AssertException.java	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/AssertException.java	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,12 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: Jackie Ng
+ * Date: 26/11/12
+ * Time: 11:46 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class AssertException extends RuntimeException {
+    public AssertException(String msg) {
+        super(msg);
+    }
+}

Added: sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/MapGuideApiTest.java
===================================================================
--- sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/MapGuideApiTest.java	                        (rev 0)
+++ sandbox/jng/swig-java/UnitTest/Common/JavaApiExTest/src/MapGuideApiTest.java	2012-11-26 16:16:51 UTC (rev 7229)
@@ -0,0 +1,1237 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: Jackie Ng
+ * Date: 26/11/12
+ * Time: 11:37 PM
+ * To change this template use File | Settings | File Templates.
+ */
+import org.osgeo.mapguide.*;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This test harness is to exercise the java.util.Collection implementation of the MapGuide proxy classes that implement it
+ * and the common usage scenarios involving them
+ */
+public class MapGuideApiTest {
+
+    static List<AssertException> assertFailures;
+    static String sessionId;
+    static String mapName;
+
+    public static void main(String [] args) {
+        assertFailures = new ArrayList<AssertException>();
+        MapGuideJavaApiEx.MgInitializeWebTier("C:\\Program Files\\OSGeo\\MapGuide\\Web\\www\\webconfig.ini");
+
+        MgUserInformation userInfo = new MgUserInformation("Administrator", "admin");
+        MgSiteConnection siteConn = new MgSiteConnection();
+        siteConn.open(userInfo);
+
+        MgSite site = siteConn.getSite();
+        sessionId = site.createSession();
+        userInfo.setMgSessionId(sessionId);
+
+        MgMap map = new MgMap(siteConn);
+        MgResourceService resSvc = (MgResourceService)siteConn.createService(MgServiceType.ResourceService);
+        MgResourceIdentifier mdfId = new MgResourceIdentifier("Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition");
+        mapName = mdfId.getName();
+        map.create(mdfId, mapName);
+
+        MgSelection sel = new MgSelection(map);
+        sel.save(resSvc, mapName);
+
+        MgResourceIdentifier mapStateId = new MgResourceIdentifier("Session:" + sessionId + "//" + mapName + "." + MgResourceType.Map);
+        map.save(resSvc, mapStateId);
+
+        System.out.println("Running tests");
+        runTests(siteConn, map);
+        System.exit(assertFailures.size());
+    }
+
+    private static void assertCondition(boolean condition, String failureMsg) {
+        if (!condition)
+            throw new AssertException(failureMsg);
+    }
+
+    private static void runTests(MgSiteConnection siteConn, MgMap map) {
+        System.out.print(testFeatureSchemaCollection() ? "." : "F");
+        System.out.print(testClassDefinitionCollection() ? "." : "F");
+        System.out.print(testPropertyDefinitionCollection() ? "." : "F");
+        System.out.print(testPropertyCollection() ? "." : "F");
+        System.out.print(testStringCollection() ? "." : "F");
+        System.out.print(testReadOnlyLayerCollection(siteConn, map) ? "." : "F");
+        System.out.print(testLayerCollection(siteConn, map) ? "." : "F");
+        System.out.print(testLayerGroupCollection(siteConn, map) ? "." : "F");
+        System.out.println();
+        if (assertFailures.size() > 0) {
+            int i = 1;
+            for (AssertException ex : assertFailures) {
+                System.out.println("Assertion Failure: " + i);
+                ex.printStackTrace(System.out);
+                i++;
+            }
+        }
+    }
+
+    private static boolean testReadOnlyLayerCollection(MgSiteConnection siteConn, MgMap map) {
+        try {
+
+            MgFeatureQueryOptions query1 = new MgFeatureQueryOptions();
+            query1.setFilter("Autogenerated_SDF_ID < 4");
+
+            MgFeatureQueryOptions query2 = new MgFeatureQueryOptions();
+            query2.setFilter("Autogenerated_SDF_ID < 4");
+
+            MgLayerCollection layers = map.getLayers();
+            MgLayerBase item1 = layers.getItem("Parcels");
+            MgLayerBase item2 = layers.getItem("Buildings");
+
+            MgFeatureReader fr1 = item1.selectFeatures(query1);
+            MgFeatureReader fr2 = item2.selectFeatures(query2);
+
+            MgResourceService resSvc = (MgResourceService)siteConn.createService(MgServiceType.ResourceService);
+            MgSelection sel = new MgSelection(map);
+            sel.open(resSvc, map.getName());
+            sel.fromXml(""); //Clear
+            try {
+                sel.addFeatures(item1, fr1, 0);
+                sel.addFeatures(item2, fr2, 0);
+            } finally{
+                fr1.close();
+                fr2.close();
+            }
+
+            sel.save(resSvc);
+
+            //Now we can test the collection
+            MgReadOnlyLayerCollection items = sel.getLayers();
+
+            assertCondition(items.getCount() == 2, "Expected 2 items");
+
+            //NOTE: Possible bug in ordering of MgReadOnlyLayerCollection here (I had to reverse the order of layers
+            //being tested) Nevertheless, were testing that the ordering (whether correct or not) is the same when iterated
+            //in both the classical and iterative methods
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Buildings"), "Expected item #" + (i+1) + " to be Buildings");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Parcels"), "Expected item #" + (i+1) + " to be Parcels");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgLayerBase item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Buildings"), "Expected item #" + (i+1) + " to be Buildings");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Parcels"), "Expected item #" + (i+1) + " to be Parcels");
+                        break;
+                }
+                i++;
+            }
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testStringCollection() {
+        try {
+            MgStringCollection items = new MgStringCollection();
+            String item1 = "Item1";
+            String item2 = "Item2";
+            String item3 = "Item3";
+            String item4 = "Item4";
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (String item : items) {
+                String itemName = item;
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<String> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<String> testCollection = new ArrayList<String>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgClassDefinition()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof String, "Expected item to be String");
+            }
+            String[] fitems = facade.toArray(new String[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new String[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new String[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testPropertyCollection() {
+        try {
+            MgPropertyCollection items = new MgPropertyCollection();
+            MgProperty item1 = new MgStringProperty("Item1", "Hello World");
+            MgProperty item2 = new MgInt32Property("Item2", 42);
+            MgProperty item3 = new MgBooleanProperty("Item3", false);
+            MgProperty item4 = new MgByteProperty("Item4", (short)4);
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgProperty item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgProperty> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgProperty> testCollection = new ArrayList<MgProperty>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgClassDefinition()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            i = 0;
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgProperty, "Expected item to be MgProperty");
+                switch(i) {
+                    case 0:
+                        assertCondition(o instanceof MgStringProperty, "Expected item to be MgStringProperty");
+                        break;
+                    case 1:
+                        assertCondition(o instanceof MgBooleanProperty, "Expected item to be MgBooleanProperty");
+                        break;
+                }
+                i++;
+            }
+
+            MgProperty[] fitems = facade.toArray(new MgProperty[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgProperty[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgProperty[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testClassDefinitionCollection() {
+        try {
+            MgFeatureSchema parent = new MgFeatureSchema("Parent", "");
+            MgClassDefinitionCollection items = parent.getClasses();
+            MgClassDefinition item1 = new MgClassDefinition(); item1.setName("Item1");
+            MgClassDefinition item2 = new MgClassDefinition(); item2.setName("Item2");
+            MgClassDefinition item3 = new MgClassDefinition(); item3.setName("Item3");
+            MgClassDefinition item4 = new MgClassDefinition(); item4.setName("Item4");
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgClassDefinition item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgClassDefinition> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgClassDefinition> testCollection = new ArrayList<MgClassDefinition>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgFeatureSchema()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgClassDefinition, "Expected item to be MgClassDefinition");
+            }
+            MgClassDefinition[] fitems = facade.toArray(new MgClassDefinition[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgClassDefinition[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgClassDefinition[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testFeatureSchemaCollection() {
+        try {
+            MgFeatureSchemaCollection items = new MgFeatureSchemaCollection();
+            MgFeatureSchema item1 = new MgFeatureSchema("Item1", "");
+            MgFeatureSchema item2 = new MgFeatureSchema("Item2", "");
+            MgFeatureSchema item3 = new MgFeatureSchema("Item3", "");
+            MgFeatureSchema item4 = new MgFeatureSchema("Item4", "");
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgFeatureSchema item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgFeatureSchema> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgFeatureSchema> testCollection = new ArrayList<MgFeatureSchema>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgClassDefinition()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgFeatureSchema, "Expected item to be MgFeatureSchema");
+            }
+            MgFeatureSchema[] fitems = facade.toArray(new MgFeatureSchema[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgFeatureSchema[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgFeatureSchema[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testPropertyDefinitionCollection() {
+        try {
+            MgClassDefinition parent = new MgClassDefinition();
+            parent.setName("Parent");
+            MgPropertyDefinitionCollection items = parent.getProperties();
+            MgPropertyDefinition item1 = new MgDataPropertyDefinition("Item1");
+            MgPropertyDefinition item2 = new MgDataPropertyDefinition("Item2");
+            MgPropertyDefinition item3 = new MgDataPropertyDefinition("Item3");
+            MgPropertyDefinition item4 = new MgDataPropertyDefinition("Item4");
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgPropertyDefinition item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgPropertyDefinition> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgPropertyDefinition> testCollection = new ArrayList<MgPropertyDefinition>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgFeatureSchema()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgPropertyDefinition, "Expected item to be MgPropertyDefinition");
+            }
+            MgPropertyDefinition[] fitems = facade.toArray(new MgPropertyDefinition[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgPropertyDefinition[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgPropertyDefinition[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testLayerCollection(MgSiteConnection siteConn, MgMap map) {
+        try {
+            map.open(mapName);
+            MgResourceService resSvc = (MgResourceService)siteConn.createService(MgServiceType.ResourceService);
+            MgLayerCollection items = map.getLayers();
+            items.clear();
+            MgResourceIdentifier ldfId = new MgResourceIdentifier("Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition");
+            MgLayerBase item1 = new MgLayer(ldfId, resSvc);
+            item1.setName("Item1");
+            MgLayerBase item2 = new MgLayer(ldfId, resSvc);
+            item2.setName("Item2");
+            MgLayerBase item3 = new MgLayer(ldfId, resSvc);
+            item3.setName("Item3");
+            MgLayerBase item4 = new MgLayer(ldfId, resSvc);
+            item4.setName("Item4");
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgLayerBase item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgLayerBase> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgLayerBase> testCollection = new ArrayList<MgLayerBase>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgFeatureSchema()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgLayerBase, "Expected item to be MgLayerBase");
+            }
+            MgLayerBase[] fitems = facade.toArray(new MgLayerBase[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgLayerBase[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgLayerBase[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+
+    private static boolean testLayerGroupCollection(MgSiteConnection siteConn, MgMap map) {
+        try {
+            map.open(mapName);
+            MgResourceService resSvc = (MgResourceService)siteConn.createService(MgServiceType.ResourceService);
+            MgLayerGroupCollection items = map.getLayerGroups();
+            items.clear();
+            MgResourceIdentifier ldfId = new MgResourceIdentifier("Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition");
+            MgLayerGroup item1 = new MgLayerGroup("Item1");
+            MgLayerGroup item2 = new MgLayerGroup("Item2");
+            MgLayerGroup item3 = new MgLayerGroup("Item3");
+            MgLayerGroup item4 = new MgLayerGroup("Item4");
+
+            //Items inserted the MapGuide API way
+            items.addItem(item1);
+            items.addItem(item2);
+            items.addItem(item3);
+
+            assertCondition(items.getCount() == 3, "Expected 3 items");
+            assertCondition(!items.isEmpty(), "Expected non-empty item collection");
+
+            int i = 0;
+            //Looping the classic way
+            for (i = 0; i < items.getCount(); i++) {
+                switch (i){
+                    case 0:
+                        assertCondition(items.getItem(i).getName().equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(items.getItem(i).getName().equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(items.getItem(i).getName().equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+            }
+
+            //Looping the iterative way
+            i = 0;
+            for (MgLayerGroup item : items) {
+                String itemName = item.getName();
+                switch (i){
+                    case 0:
+                        assertCondition(itemName.equals("Item1"), "Expected item #" + (i+1) + " to be Item1");
+                        break;
+                    case 1:
+                        assertCondition(itemName.equals("Item2"), "Expected item #" + (i+1) + " to be Item2");
+                        break;
+                    case 2:
+                        assertCondition(itemName.equals("Item3"), "Expected item #" + (i+1) + " to be Item3");
+                        break;
+                }
+                i++;
+            }
+
+            items.clear();
+            assertCondition(items.getCount() == 0, "Expected empty item collection");
+            assertCondition(items.isEmpty(), "Expected empty item collection");
+
+            //Now test through java.util.Collection facade
+            Collection<MgLayerGroup> facade = items;
+            //add()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //contains()
+            assertCondition(facade.contains(item1), "item1 should exist");
+            assertCondition(facade.contains(item2), "item2 should exist");
+            assertCondition(facade.contains(item3), "item3 should exist");
+
+            ArrayList<MgLayerGroup> testCollection = new ArrayList<MgLayerGroup>();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+
+            //containsAll()
+            assertCondition(facade.containsAll(testCollection), "All items in test collection should match");
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item4);
+            assertCondition(!facade.containsAll(testCollection), "Should not have matched test collection");
+
+            facade.clear();
+            assertCondition(facade.size() == 0, "Expected 0 items");
+            assertCondition(facade.isEmpty(), "Expected empty item collection");
+
+            //addAll()
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item2);
+            testCollection.add(item3);
+            assertCondition(facade.addAll(testCollection), "Expected addAll() success");
+            assertCondition(facade.size() == 3, "Expected 3 items");
+            assertCondition(!facade.isEmpty(), "Expected non-empty item collection");
+
+            //remove()
+            assertCondition(!facade.remove(item4), "Expected remove() of non-existent item to return false");
+            assertCondition(!facade.remove(new MgFeatureSchema()), "Expected remove() of different type to return false");
+            assertCondition(facade.remove(item2), "Expected remove() of item2 to return true");
+
+            //removeAll()
+            testCollection.remove(item2);
+            assertCondition(facade.removeAll(testCollection), "Expected removeAll() to succeed");
+
+            //retainAll()
+            assertCondition(facade.add(item1), "Could not add item1 the java.util.Collection way");
+            assertCondition(facade.add(item2), "Could not add item2 the java.util.Collection way");
+            assertCondition(facade.add(item3), "Could not add item3 the java.util.Collection way");
+            assertCondition(facade.size() == 3, "Expected 3 schemas");
+            assertCondition(!facade.isEmpty(), "Expected non-empty schema collection");
+
+            testCollection.clear();
+            testCollection.add(item1);
+            testCollection.add(item3);
+            assertCondition(facade.retainAll(testCollection), "Expected retainAll() to succeed");
+            assertCondition(facade.contains(item1), "Expected item1 to exist");
+            assertCondition(!facade.contains(item2), "Expected item2 to not exist");
+            assertCondition(facade.contains(item3), "Expected item3 to exist");
+
+            //toArray()
+            Object[] itemArray = facade.toArray();
+            assertCondition(itemArray != null, "Expected non-null item array");
+            assertCondition(itemArray.length == 2, "Expected 2 item array");
+            for (Object o : itemArray) {
+                assertCondition(o instanceof MgLayerGroup, "Expected item to be MgLayerBase");
+            }
+            MgLayerGroup[] fitems = facade.toArray(new MgLayerGroup[0]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgLayerGroup[1]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 2, "Expected 2 item array");
+
+            fitems = facade.toArray(new MgLayerGroup[3]);
+            assertCondition(fitems != null, "Expected non-null item array");
+            assertCondition(fitems.length == 3, "Expected 3 item array");
+            assertCondition(fitems[0] != null, "Expected non-null item #1");
+            assertCondition(fitems[1] != null, "Expected non-null item #2");
+            assertCondition(fitems[2] == null, "Expected null item #3");
+
+            return true;
+        }
+        catch (MgException ex) {
+            assertCondition(false, ex.getMessage());
+        }
+        catch (AssertException ex) {
+            assertFailures.add(ex);
+        }
+        return false;
+    }
+}



More information about the mapguide-commits mailing list