[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Limitation of Ozone -- Cant return an iterator



Hello:

In one of my persistent class's implementation, I have a method that 
returns an Interator for a collection:
	public Iterator getDataIterator() {
		return map.getValues().iterator();
	}

When I call this method, the proxy object throws this
Exception:
org.ozoneDB.UnexpectedException: java.io.WriteAbortedException: Writing
aborted by exception; java.io.NotSerializableException:
java.util.HashMap$HashIterator
	at
persistent.ControllerImpl_Proxy.getDataIterator(ControllerImpl_Proxy.java:67)
	at DatabaseTest.doGet(DatabaseTest.java:102)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)
	at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:597)
	at
org.apache.tomcat.servlets.InvokerServlet.service(InvokerServlet.java:257)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at
org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)
	at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
	at
org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:156)
	at
org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
	at java.lang.Thread.run(Thread.java:484)

Here is the generated code in the Proxy:
   public java.util.Iterator getDataIterator () {
      try {
         Object target = link.fetch (this, Lock.LEVEL_READ);
         if (target != null) {
            return
(java.util.Iterator)ResultConverter.substituteOzoneCompatibles
(((persistent.ControllerImpl)target).getDataIterator());
            }
         else {
            Object[] args = {};
            Object result = link.invoke (this, 6, args,
Lock.LEVEL_READ);
            return (java.util.Iterator)result;
            }
         }
      catch (RuntimeException e) {
         e.fillInStackTrace();
         throw e;
         }
      catch (Exception e) {
         e.fillInStackTrace();
         throw new UnexpectedException (e.toString());
         }
      }
   }


Is this a limitation of Ozone in that I cant return an iterator from the
database?
What other such limitations exist?


Thanks,
	Neil.


--
Neil Aggarwal
JAMM Consulting, Inc. -- (972) 612-6056, http://www.JAMMConsulting.com
Custom Internet Development -- Java, JSP, servlets, databases