[mapguide-commits] r7220 - in sandbox/jng/swig-java: . Common/Foundation/Data Common/Foundation/Exception Common/PlatformBase/Services Web/src/HttpHandler Web/src/JavaApi/org/osgeo/mapguide Web/src/JavaApiEx

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Nov 23 06:28:51 PST 2012


Author: jng
Date: 2012-11-23 06:28:48 -0800 (Fri, 23 Nov 2012)
New Revision: 7220

Added:
   sandbox/jng/swig-java/Web/src/JavaApiEx/DIFFERENCES.txt
Modified:
   sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.cpp
   sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.h
   sandbox/jng/swig-java/Common/Foundation/Exception/Exception.cpp
   sandbox/jng/swig-java/Common/Foundation/Exception/Exception.h
   sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.cpp
   sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.h
   sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.cpp
   sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.h
   sandbox/jng/swig-java/Web/src/HttpHandler/HttpUtil.cpp
   sandbox/jng/swig-java/Web/src/JavaApi/org/osgeo/mapguide/AppThrowable.java
   sandbox/jng/swig-java/Web/src/JavaApiEx/java.i
   sandbox/jng/swig-java/Web/src/JavaApiEx/javaextensions.i
   sandbox/jng/swig-java/setenvironment.bat
Log:
#9: Now that I've thought about it, the previous submission is not the way to go. We should not break existing applications left and right to accommodate this new Java wrapper. This Java wrapper is "new" so there is no compatibility history to deal with, whereas the other wrappers do. Even with naming conflicts, we should shape this Java wrapper to fit into the existing C++ API instead of the other way round. So this submission reverts all the C++ API changes from the previous submission, restoring C++ method names to what they originally were. 

Instead, we apply the appropriate SWIG directives to ensure that the java proxy classes in this new wrapper do not have naming conflicts on methods that previously conflicted. For the record, the name changes in this new java wrapper are:

 - MgPropertyDefinition.Delete      is now MgPropertyDefinition.markAsDeleted
 - MgClassDefinition.Delete         is now MgClassDefinition.markAsDeleted
 - MgFeatureSchema.Delete           is now MgFeatureSchema.markAsDeleted
 - MgException.GetStackTrace        is now MgException.getExceptionStackTrace
 - MgBatchPropertyCollection.Add    is now MgBatchPropertyCollection.addItem
 - MgClassDefinitionCollection.Add  is now MgClassDefinitionCollection.addItem
 - MgFeatureSchemaCollection.Add    is now MgFeatureSchemaCollection.addItem
 - MgIntCollection.Add              is now MgIntCollection.addItem
 - MgPropertyCollection.Add         is now MgPropertyCollection.addItem
 - MgStringCollection.Add           is now MgStringCollection.addItem

This submission also implements java.util.Collection for most collection classes except MgIntCollection (stupid java primitive types not being objects, thereby breaking my convenient swig macro!). Not sure what to do with this one class, probably need a specialized implementation.

The closeable interface implementation has also been disabled. We should only implement java interfaces where necessary or convenient and the value/benefits/side-effects of having the readers implement Closeable is not yet known.

Modified: sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.cpp
===================================================================
--- sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.cpp	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.cpp	2012-11-23 14:28:48 UTC (rev 7220)
@@ -200,7 +200,7 @@
 /// <returns>
 /// Returns nothing.
 /// </returns>
-void MgPropertyDefinition::MarkDeleted()
+void MgPropertyDefinition::Delete()
 {
     m_isDeleted = true;
 }

Modified: sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.h
===================================================================
--- sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.h	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/Foundation/Data/PropertyDefinition.h	2012-11-23 14:28:48 UTC (rev 7220)
@@ -188,13 +188,13 @@
     ///
     /// <!-- Syntax in .Net, Java, and PHP -->
     /// \htmlinclude DotNetSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude JavaSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude PHPSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     ///
     /// \return
@@ -202,9 +202,7 @@
     ///
     /// \since 2.2
 	///
-	/// \remarks
-    /// This method used to be called Delete prior to [MGOS VERSION]
-    void MarkDeleted();
+    void Delete();
 
 EXTERNAL_API:
 

Modified: sandbox/jng/swig-java/Common/Foundation/Exception/Exception.cpp
===================================================================
--- sandbox/jng/swig-java/Common/Foundation/Exception/Exception.cpp	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/Foundation/Exception/Exception.cpp	2012-11-23 14:28:48 UTC (rev 7220)
@@ -545,7 +545,7 @@
 /// \brief
 /// Retrieve the formatted exception stack trace for the specified locale.
 ///
-STRING MgException::GetExceptionStackTrace(CREFSTRING locale) throw()
+STRING MgException::GetStackTrace(CREFSTRING locale) throw()
 {
     //
     // Format:
@@ -593,9 +593,9 @@
 /// \brief
 /// Retrieve the formatted stack trace for the specified locale.
 ///
-STRING MgException::GetExceptionStackTrace() throw()
+STRING MgException::GetStackTrace() throw()
 {
-    return GetExceptionStackTrace(GetLocale());
+    return GetStackTrace(GetLocale());
 }
 
 

Modified: sandbox/jng/swig-java/Common/Foundation/Exception/Exception.h
===================================================================
--- sandbox/jng/swig-java/Common/Foundation/Exception/Exception.h	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/Foundation/Exception/Exception.h	2012-11-23 14:28:48 UTC (rev 7220)
@@ -90,21 +90,19 @@
     ///
     /// <!-- Syntax in .Net, Java, and PHP -->
     /// \htmlinclude DotNetSyntaxTop.html
-    /// string GetExceptionStackTrace() throw();
+    /// string GetStackTrace() throw();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude JavaSyntaxTop.html
-    /// String GetExceptionStackTrace() throw();
+    /// String GetStackTrace() throw();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude PHPSyntaxTop.html
-    /// string GetExceptionStackTrace() throw();
+    /// string GetStackTrace() throw();
     /// \htmlinclude SyntaxBottom.html
     ///
     /// \return
     /// Call stack trace with method parameters
     ///
-	/// \remarks
-    /// This method used to be called GetStackTrace prior to [MGOS VERSION]
-    STRING GetExceptionStackTrace() throw();
+    STRING GetStackTrace() throw();
 
 EXTERNAL_API:
 
@@ -148,9 +146,7 @@
     /// \return
     /// Formatted exception stack trace
     ///
-	/// \remarks
-    /// This method used to be called GetStackTrace prior to [MGOS VERSION]
-    STRING GetExceptionStackTrace(CREFSTRING locale) throw();
+    STRING GetStackTrace(CREFSTRING locale) throw();
 
     ///////////////////////////////////////////////////////////////////////////
     /// \brief

Modified: sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.cpp
===================================================================
--- sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.cpp	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.cpp	2012-11-23 14:28:48 UTC (rev 7220)
@@ -396,7 +396,7 @@
 /// <returns>
 /// Returns nothing.
 /// </returns>
-void MgClassDefinition::MarkDeleted()
+void MgClassDefinition::Delete()
 {
     m_isDeleted = true;
 }

Modified: sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.h
===================================================================
--- sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.h	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/PlatformBase/Services/ClassDefinition.h	2012-11-23 14:28:48 UTC (rev 7220)
@@ -305,13 +305,13 @@
     ///
     /// <!-- Syntax in .Net, Java, and PHP -->
     /// \htmlinclude DotNetSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude JavaSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude PHPSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     ///
     /// \return
@@ -319,9 +319,7 @@
     ///
     /// \since 2.2
 	///
-	/// \remarks
-    /// This method used to be called Delete prior to [MGOS VERSION]
-    void MarkDeleted();
+    void Delete();
 
 EXTERNAL_API:
     //////////////////////////////////////////////////////////////////

Modified: sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.cpp
===================================================================
--- sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.cpp	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.cpp	2012-11-23 14:28:48 UTC (rev 7220)
@@ -111,7 +111,7 @@
 }
 
 //////////////////////////////////////////////////////////////
-void MgFeatureSchema::MarkDeleted()
+void MgFeatureSchema::Delete()
 {
     m_isDeleted = true;
 }

Modified: sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.h
===================================================================
--- sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.h	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Common/PlatformBase/Services/FeatureSchema.h	2012-11-23 14:28:48 UTC (rev 7220)
@@ -187,13 +187,13 @@
     ///
     /// <!-- Syntax in .Net, Java, and PHP -->
     /// \htmlinclude DotNetSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude JavaSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     /// \htmlinclude PHPSyntaxTop.html
-    /// void MarkDeleted();
+    /// void Delete();
     /// \htmlinclude SyntaxBottom.html
     ///
     /// \return
@@ -201,9 +201,7 @@
     ///
     /// \since 2.2
 	///
-	/// \remarks
-    /// This method used to be called Delete prior to [MGOS VERSION]
-    void MarkDeleted();
+    void Delete();
 
 INTERNAL_API:
     void Dispose();

Modified: sandbox/jng/swig-java/Web/src/HttpHandler/HttpUtil.cpp
===================================================================
--- sandbox/jng/swig-java/Web/src/HttpHandler/HttpUtil.cpp	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Web/src/HttpHandler/HttpUtil.cpp	2012-11-23 14:28:48 UTC (rev 7220)
@@ -50,7 +50,7 @@
                 STRING strCurrentTime = currentTime.ToXmlString(false);
 
                 STRING message = exception->GetExceptionMessage();
-                STRING stackTrace = exception->GetExceptionStackTrace();
+                STRING stackTrace = exception->GetStackTrace();
                 ACE_OS::fprintf(fp, ACE_TEXT("<%s>\n"), MG_WCHAR_TO_TCHAR(strCurrentTime));
                 ACE_OS::fprintf(fp, ACE_TEXT(" Error: %s\n"), MG_WCHAR_TO_TCHAR(message));
 

Modified: sandbox/jng/swig-java/Web/src/JavaApi/org/osgeo/mapguide/AppThrowable.java
===================================================================
--- sandbox/jng/swig-java/Web/src/JavaApi/org/osgeo/mapguide/AppThrowable.java	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Web/src/JavaApi/org/osgeo/mapguide/AppThrowable.java	2012-11-23 14:28:48 UTC (rev 7220)
@@ -43,7 +43,7 @@
     {
         try
         {
-            System.out.println(((MgException)this).GetExceptionStackTrace());
+            System.out.println(((MgException)this).GetStackTrace());
         }
         catch (MgException e)
         {

Added: sandbox/jng/swig-java/Web/src/JavaApiEx/DIFFERENCES.txt
===================================================================
--- sandbox/jng/swig-java/Web/src/JavaApiEx/DIFFERENCES.txt	                        (rev 0)
+++ sandbox/jng/swig-java/Web/src/JavaApiEx/DIFFERENCES.txt	2012-11-23 14:28:48 UTC (rev 7220)
@@ -0,0 +1,47 @@
+JavaApiEx differences from JavaApi
+==================================
+
+1. MgException/AppThrowable is no longer a checked exception
+
+AppThrowable now extends RuntimeException making it (and MgException and its subclasses) unchecked exceptions, all methods in the MapGuide API no longer have the (throws MgException) clause.
+
+2. Method names follow Java conventions
+
+All method names in the Java proxy classes are now in lowerCamelCase instead of the MapGuide-default UpperCamelCase
+
+ eg. Instead of this:
+
+	MgSiteConnection siteConn = new MgSiteConnection();
+	MgUserInformation userInfo = new MgUserInfomration(sessionId);
+	siteConn.Open(userInfo);
+	MgFeatureService featureSvc = (MgFeatureService)siteConn.CreateService(MgServiceType.FeatureService);
+	MgFeatureSchemaCollection schema = featureSvc.DescribeSchema(new MgResourceIdentifier("Library://Samples/Sheboygan/Data/Parcels.FeatureSource"), "SHP_Schema");
+
+ It is now this:
+
+	MgSiteConnection siteConn = new MgSiteConnection();
+	MgUserInformation userInfo = new MgUserInfomration(sessionId);
+	siteConn.open(userInfo); //Note the lowercase
+	MgFeatureService featureSvc = (MgFeatureService)siteConn.CreateService(MgServiceType.FeatureService);
+	MgFeatureSchemaCollection schema = featureSvc.describeSchema(new MgResourceIdentifier("Library://Samples/Sheboygan/Data/Parcels.FeatureSource"), "SHP_Schema"); //Note the lowercase
+
+3. The following MapGuide collection classes now implement java.util.Collection<T>:
+
+ - MgBatchPropertyCollection (T is MgPropertyCollection)
+ - MgClassDefinitionCollection (T is MgClassDefinition)
+ - MgFeatureSchemaCollection (T is MgFeatureSchema)
+ - MgPropertyCollection (T is MgProperty)
+ - MgStringCollection (T is String)
+
+4. To avoid naming conflicts with SWIG generated code and methods from inherited java classes or interfaces as a result of the above changes, the following class methods have been renamed in the Java MapGuide API:
+
+ - MgPropertyDefinition.Delete      is now MgPropertyDefinition.markAsDeleted
+ - MgClassDefinition.Delete         is now MgClassDefinition.markAsDeleted
+ - MgFeatureSchema.Delete           is now MgFeatureSchema.markAsDeleted
+ - MgException.GetStackTrace        is now MgException.getExceptionStackTrace
+ - MgBatchPropertyCollection.Add    is now MgBatchPropertyCollection.addItem
+ - MgClassDefinitionCollection.Add  is now MgClassDefinitionCollection.addItem
+ - MgFeatureSchemaCollection.Add    is now MgFeatureSchemaCollection.addItem
+ - MgIntCollection.Add              is now MgIntCollection.addItem
+ - MgPropertyCollection.Add         is now MgPropertyCollection.addItem
+ - MgStringCollection.Add           is now MgStringCollection.addItem

Modified: sandbox/jng/swig-java/Web/src/JavaApiEx/java.i
===================================================================
--- sandbox/jng/swig-java/Web/src/JavaApiEx/java.i	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Web/src/JavaApiEx/java.i	2012-11-23 14:28:48 UTC (rev 7220)
@@ -15,8 +15,6 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-%include "javaextensions.i"
-
 %typemap(jni) STRINGPARAM "jstring"
 %typemap(jtype) STRINGPARAM "String"
 %typemap(jstype) STRINGPARAM "String"
@@ -97,6 +95,8 @@
 }
 %typemap(javain) BYTE_ARRAY_OUT "$javainput"
 
+%include "javaextensions.i"
+
 ///////////////////////////////////////////////////////////
 // Global functions
 //

Modified: sandbox/jng/swig-java/Web/src/JavaApiEx/javaextensions.i
===================================================================
--- sandbox/jng/swig-java/Web/src/JavaApiEx/javaextensions.i	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/Web/src/JavaApiEx/javaextensions.i	2012-11-23 14:28:48 UTC (rev 7220)
@@ -15,10 +15,179 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
+//---------------------- Java interface decorations ------------------------------//
+
 //NOTE: If we're eventually targeting JDK7, change to AutoCloseable for automatic try-with-resources syntax support
-%typemap(javainterfaces) MgReader "java.io.Closeable"
-%typemap(javainterfaces) MgFeatureReader "java.io.Closeable"
-%typemap(javainterfaces) MgDataReader "java.io.Closeable"
-%typemap(javainterfaces) MgSqlDataReader "java.io.Closeable"
-%typemap(javainterfaces) MgLongTransactionReader "java.io.Closeable"
-%typemap(javainterfaces) MgSpatialContextReader "java.io.Closeable"
\ No newline at end of file
+//%typemap(javainterfaces) MgReader "java.io.Closeable"
+//%typemap(javainterfaces) MgFeatureReader "java.io.Closeable"
+//%typemap(javainterfaces) MgDataReader "java.io.Closeable"
+//%typemap(javainterfaces) MgSqlDataReader "java.io.Closeable"
+//%typemap(javainterfaces) MgLongTransactionReader "java.io.Closeable"
+//%typemap(javainterfaces) MgSpatialContextReader "java.io.Closeable"
+
+//---------------------- Renames to avoid Java/C++ API clashes ---------------------------//
+
+//Already defined in Java Exception so rename our proxy method
+%rename(getExceptionStackTrace) MgException::GetStackTrace;
+
+//delete() is the name of the standard SWIG release method called on finalize(). Unfortunately this conflicts with
+//MgPropertyDefinition::Delete, MgClassDefinition::Delete and MgFeatureSchema::Delete when java proxy clases for these
+//classes are generated
+//
+//So rename the java proxies to these methods. This is the most minimally destructive change of all the available options
+//available to us
+%rename(markAsDeleted) MgPropertyDefinition::Delete;
+%rename(markAsDeleted) MgClassDefinition::Delete;
+%rename(markAsDeleted) MgFeatureSchema::Delete;
+
+//If we want to implement java.util.Collection, we need to rename this incompatible API (as add() is expected to 
+//return boolean in the java.util.Collection API)
+%rename(addItem) MgBatchPropertyCollection::Add;
+%rename(addItem) MgClassDefinitionCollection::Add;
+%rename(addItem) MgFeatureSchemaCollection::Add;
+%rename(addItem) MgIntCollection::Add;
+%rename(addItem) MgPropertyCollection::Add;
+%rename(addItem) MgStringCollection::Add;
+
+//This is a helper macro to implement the bulk of the java.util.Collection interface for any proxy class
+//that needs one
+//
+//Kinda like C++ templates for Java without the suck. And we all know how much Java generics suck :D
+%define IMPLEMENT_MG_JAVA_COLLECTION_API(collection_type, item_type)
+//Necessary imports
+%typemap(javaimports) collection_type %{
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.util.NoSuchElementException;
+%}
+//Java Interfaces implemented by the java proxy class
+%typemap(javainterfaces) collection_type "Collection<item_type>"
+//This is the java.util.Collection implementation that is injected into each java proxy class
+%typemap(javacode) collection_type %{
+
+    class ItemIterator implements Iterator<item_type> {
+        private collection_type _collection;
+        private int _pos;
+        
+        public ItemIterator(collection_type c) { 
+            _collection = c; 
+            _pos = -1;
+        }
+        
+        public boolean hasNext() {
+            return _pos + 1 <= _collection.getCount();
+        }
+        
+        public item_type next() {
+            _pos++;
+            if (_pos >= _collection.getCount())
+                throw new NoSuchElementException();
+            return _collection.getItem(_pos);
+        }
+        
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    public boolean add(item_type item) {
+        this.addItem(item);
+        return true;
+    }
+
+    public boolean addAll(Collection<? extends item_type> c) {
+        int added = 0;
+        for (item_type item : c) {
+            this.addItem(item);
+            added++;
+        }
+        return added > 0;
+    }
+
+    public boolean contains(Object o) {
+        if (o instanceof item_type) {
+            return this.contains((item_type)o);
+        }
+        return false;
+    }
+
+    public boolean containsAll(Collection<?> c) {
+        for (Object o : c) {
+            if (!this.contains(o))
+                return false;
+        }
+        return true;
+    }
+
+    public boolean isEmpty() { return this.getCount() == 0; }
+
+    public Iterator<item_type> iterator() { return new ItemIterator(this); }
+
+    public boolean remove(Object o) {
+        if (o instanceof item_type) {
+            return this.remove((item_type)o);
+        }
+        return false;
+    }
+
+    public boolean removeAll(Collection<?> c) {
+        int removed = 0;
+        for (Object o : c) {
+            if (this.remove(o))
+                removed++;
+        }
+        return removed > 0;
+    }
+
+    public boolean retainAll(Collection<?> c) {
+        int removed = 0;
+        ArrayList<item_type> remove = new ArrayList<item_type>();
+        for (int i = 0; i < this.getCount(); i++) {
+            item_type item = this.getItem(i);
+            if (!c.contains(item))
+                remove.add(item);
+        }
+        if (remove.size() > 0) {
+            return this.removeAll(remove);
+        } else {
+            return false;
+        }
+    }
+
+    public int size() { return this.getCount(); }
+
+    public Object[] toArray() {
+        int count = this.getCount();
+        Object[] items = new Object[count];
+        for (int i = 0; i < count; i++) {
+            items[i] = this.getItem(i);
+        }
+        return items;
+    }
+
+    public <item_type> item_type[] toArray(item_type[] a) {
+        Object[] items = this.toArray();
+        if (a.length >= items.length) {
+            for (int i = 0; i < items.length; i++) {
+                a[i] = (item_type)items[i];
+            }
+            for (int i = items.length; i < a.length; i++) {
+                a[i] = null;
+            }
+            return a;
+        } else {
+            return (item_type[])items;
+        }
+    }
+
+%}
+%enddef
+
+//Plug the stock implementation for our MapGuide collection classes
+IMPLEMENT_MG_JAVA_COLLECTION_API(MgBatchPropertyCollection, MgPropertyCollection)
+IMPLEMENT_MG_JAVA_COLLECTION_API(MgClassDefinitionCollection, MgClassDefinition)
+IMPLEMENT_MG_JAVA_COLLECTION_API(MgFeatureSchemaCollection, MgFeatureSchema)
+//IMPLEMENT_MG_JAVA_COLLECTION_API(MgIntCollection, Integer)
+IMPLEMENT_MG_JAVA_COLLECTION_API(MgPropertyCollection, MgProperty)
+IMPLEMENT_MG_JAVA_COLLECTION_API(MgStringCollection, String)
\ No newline at end of file

Modified: sandbox/jng/swig-java/setenvironment.bat
===================================================================
--- sandbox/jng/swig-java/setenvironment.bat	2012-11-23 08:40:00 UTC (rev 7219)
+++ sandbox/jng/swig-java/setenvironment.bat	2012-11-23 14:28:48 UTC (rev 7220)
@@ -56,7 +56,7 @@
 rem running
 rem ==================================================
 
-IF "%JAVA_HOME%" == "" SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_31
+IF "%JAVA_HOME%" == "" SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_33
 IF "%DOXYGEN%" == "" SET DOXYGEN=%MG_DEV%\BuildTools\doxygen
 IF "%GNUWIN32%" == "" SET GNUWIN32=C:\Program Files (x86)\GnuWin32\bin
 IF "%SEVENZ%" == "" SET SEVENZ=%MG_DEV%\BuildTools\WebTools\7-Zip



More information about the mapguide-commits mailing list