You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2002/05/20 22:49:09 UTC
cvs commit: jakarta-commons-sandbox/simplestore/src/xmldb/org/apache/commons/simplestore/xmldb XmlDbPersistenceManagerFactory.java XmlDbStorage.java
baliuka 02/05/20 13:49:09
Modified: simplestore/src/test/org/apache/commons/simplestore
TestAll.java TestSample.java TestXmlDbStorage.java
simplestore/src/xmldb/org/apache/commons/simplestore/xmldb
XmlDbPersistenceManagerFactory.java
XmlDbStorage.java
Log:
Fixed XMLDB Storage implementation
Revision Changes Path
1.13 +3 -3 jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestAll.java
Index: TestAll.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestAll.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TestAll.java 18 May 2002 20:43:47 -0000 1.12
+++ TestAll.java 20 May 2002 20:49:09 -0000 1.13
@@ -59,7 +59,7 @@
/**
*@author Gerhard Froehlich <a href="mailto:g-froehlich@gmx.de">
* g-froehlich@gmx.de</a>
- *@version $Id: TestAll.java,v 1.12 2002/05/18 20:43:47 baliuka Exp $
+ *@version $Id: TestAll.java,v 1.13 2002/05/20 20:49:09 baliuka Exp $
*/
public class TestAll extends TestCase {
public TestAll(String testName) {
@@ -68,8 +68,8 @@
public static Test suite() {
TestSuite suite = new TestSuite();
- // suite.addTest(TestSample.suite());
- // suite.addTest(TestEnhancer.suite());
+ suite.addTest(TestSample.suite());
+ suite.addTest(TestEnhancer.suite());
suite.addTest(TestXmlDbStorage.suite());
return suite;
}
1.29 +17 -3 jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestSample.java
Index: TestSample.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestSample.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- TestSample.java 18 May 2002 20:43:47 -0000 1.28
+++ TestSample.java 20 May 2002 20:49:09 -0000 1.29
@@ -72,7 +72,7 @@
/**
*@author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
* baliuka@mwm.lt</a>
- *@version $Id: TestSample.java,v 1.28 2002/05/18 20:43:47 baliuka Exp $
+ *@version $Id: TestSample.java,v 1.29 2002/05/20 20:49:09 baliuka Exp $
*/
public class TestSample extends TestCase implements org.apache.commons.simplestore.tools.Constants{
@@ -118,6 +118,7 @@
public void testCreate() throws java.lang.Exception {
Transaction transaction = pm.getTransaction();
try{
+
transaction.begin();
TestPersistentClassType object1 = (TestPersistentClassType) pm.createInstance(TestPersistentClassType.class);
Object oid = pm.getOID(object1);
@@ -165,7 +166,7 @@
transaction.commit();
-
+
}catch( Exception e){
e.printStackTrace();
transaction.commit();
@@ -179,7 +180,7 @@
java.util.Set objects = pm.findAll(TestPersistentClassType.class);
-
+
assertTrue("Cache findAll ", objects == pm.findAll(TestPersistentClassType.class) );
java.util.Iterator it = objects.iterator();
@@ -194,6 +195,19 @@
object.getIntVal();
object.getFloatVal();
object.getStrVal1();
+
+ TestPersistentClassType parent = object.getParent();
+ if(parent != null){
+ java.util.Iterator iterator = parent.getChildren().iterator();
+ boolean found = false;
+ while(iterator.hasNext()){
+ Object next = iterator.next();
+ if( next.equals(object) ){
+ found = true;
+ }
+ }
+ assertTrue("Loop Collection",found );
+ }
}
1.2 +2 -1 jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestXmlDbStorage.java
Index: TestXmlDbStorage.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestXmlDbStorage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestXmlDbStorage.java 18 May 2002 20:44:39 -0000 1.1
+++ TestXmlDbStorage.java 20 May 2002 20:49:09 -0000 1.2
@@ -64,7 +64,7 @@
/**
*@author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
* baliuka@mwm.lt</a>
- *@version $Id: TestXmlDbStorage.java,v 1.1 2002/05/18 20:44:39 baliuka Exp $
+ *@version $Id: TestXmlDbStorage.java,v 1.2 2002/05/20 20:49:09 baliuka Exp $
*/
public class TestXmlDbStorage extends TestSample {
@@ -90,6 +90,7 @@
XmlDbPersistenceManagerFactory factory = new XmlDbPersistenceManagerFactory();
factory.setDriver("org.apache.xindice.client.xmldb.DatabaseImpl");
factory.setUrl("xmldb:xindice:///db/addressbook");
+ factory.setRootNode("document");
factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
pm = factory.getPersistenceManager();
1.2 +18 -2 jakarta-commons-sandbox/simplestore/src/xmldb/org/apache/commons/simplestore/xmldb/XmlDbPersistenceManagerFactory.java
Index: XmlDbPersistenceManagerFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/xmldb/org/apache/commons/simplestore/xmldb/XmlDbPersistenceManagerFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XmlDbPersistenceManagerFactory.java 17 May 2002 18:33:55 -0000 1.1
+++ XmlDbPersistenceManagerFactory.java 20 May 2002 20:49:09 -0000 1.2
@@ -71,7 +71,7 @@
/**
*@author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
* baliuka@mwm.lt</a>
- *@version $Id: XmlDbPersistenceManagerFactory.java,v 1.1 2002/05/17 18:33:55 baliuka Exp $
+ *@version $Id: XmlDbPersistenceManagerFactory.java,v 1.2 2002/05/20 20:49:09 baliuka Exp $
*/
public class XmlDbPersistenceManagerFactory implements PersistenceManagerFactory{
@@ -92,6 +92,8 @@
/** Holds value of property loader. */
private ClassLoader loader;
+ /** Holds value of property rootNode. */
+ private String rootNode = "document";
/** Creates a new instance of XmlDbPersistenceManagerFactory */
public XmlDbPersistenceManagerFactory() {
@@ -125,7 +127,7 @@
}
}
- } );
+ }, rootNode );
ContextImpl context = new ContextImpl(
mclass, new DefaultTypeConverter(),
new RandomOIDGenerator(),
@@ -210,4 +212,18 @@
this.maxStrongRef = maxStrongRef;
}
+ /** Getter for property rootNode.
+ * @return Value of property rootNode.
+ */
+ public String getRootNode() {
+ return this.rootNode;
+ }
+
+ /** Setter for property rootNode.
+ * @param rootNode New value of property rootNode.
+ */
+ public void setRootNode(String rootNode) {
+ this.rootNode = rootNode;
+ }
+
}
1.4 +298 -207 jakarta-commons-sandbox/simplestore/src/xmldb/org/apache/commons/simplestore/xmldb/XmlDbStorage.java
Index: XmlDbStorage.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/xmldb/org/apache/commons/simplestore/xmldb/XmlDbStorage.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XmlDbStorage.java 19 May 2002 12:57:45 -0000 1.3
+++ XmlDbStorage.java 20 May 2002 20:49:09 -0000 1.4
@@ -85,14 +85,14 @@
/**
*@author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
* baliuka@mwm.lt</a>
- *@version $Id: XmlDbStorage.java,v 1.3 2002/05/19 12:57:45 baliuka Exp $
+ *@version $Id: XmlDbStorage.java,v 1.4 2002/05/20 20:49:09 baliuka Exp $
*/
public class XmlDbStorage extends AbstractStorage {
- final static java.text.SimpleDateFormat DATE_FROMAT =
- new java.text.SimpleDateFormat();
+ final static java.text.SimpleDateFormat DATE_FROMAT =
+ new java.text.SimpleDateFormat();
final static String BEGIN_XUPDATE = "<xu:modifications version=\"1.0\"" +
" xmlns:xu=\"http://www.xmldb.org/xupdate\">\n";
@@ -105,16 +105,27 @@
final static String UPDATE ="org.apache.commons.simplestore.xmldb.XmlDbStorage.UPDATE";
CollectionFactory collectionFactory;
+ String rootNode;
/** Creates a new instance of XmlDbStorage */
- public XmlDbStorage(CollectionFactory collectionFactory) {
+ public XmlDbStorage(CollectionFactory collectionFactory,String rootNode) {
this.collectionFactory = collectionFactory;
+ this.rootNode = rootNode;
}
String getRootNode(){
- return "document";
+ return rootNode;
}
private Collection getCollection(){
- return collectionFactory.getCollection();
+ Collection cl = (Collection) context.getTransactionManager().getTransaction().
+ getAttribute( "Collection" );
+ if(cl == null){
+ cl = collectionFactory.getCollection();
+ context.getTransactionManager().getTransaction().
+ setAttribute( "Collection" , cl );
+ }
+
+
+ return cl;
}
protected String getPath(MetaObject properties){
return "/" + getRootNode() + "/descendant-or-self::" + properties.getMetaClass().getName() +"[@"+
@@ -184,18 +195,18 @@
(XPathQueryService)cl.getService("XPathQueryService", "1.0");
ResourceSet resultSet = service.query(xpath);
-
+
ResourceIterator results = resultSet.getIterator();
while (results.hasMoreResources()) {
XMLResource resource =
(XMLResource) results.nextResource();
- resource.getContentAsSAX(
+ resource.getContentAsSAX(
new Handler(context,mClass,objects,callback)
) ;
}
- cl.close();
+
}catch(XMLDBException xe){
xe.printStackTrace();
throw new StorageException(xe.getMessage(),xe);
@@ -246,23 +257,49 @@
}
private void clearBuff(){
- context.getTransactionManager().
- getTransaction().removeAttribute(UPDATE);
+
+ try{
+
+ context.getTransactionManager().
+ getTransaction().
+ removeAttribute(UPDATE);
+ context.getTransactionManager().getTransaction().
+ removeAttribute( "TransactionService" );
+
+ Collection cl = (Collection)context.getTransactionManager().
+ getTransaction().getAttribute( "Collection" );
+ context.getTransactionManager().getTransaction().
+ removeAttribute( "Collection" );
+
+
+ cl.close();
+ }catch( Exception e ){
+ throw new StorageException(e.getMessage(),e);
+ }
+
}
protected void internalCommit() throws StorageException{
try{
+
StringBuffer updateBuff = (StringBuffer)context.getTransactionManager().
getTransaction().getAttribute(UPDATE);
+ Collection cl = getCollection();
if( updateBuff != null ){
- Collection cl = getCollection();
+
XUpdateQueryService service =(XUpdateQueryService) cl.
getService("XUpdateQueryService", "1.0");
service.update(BEGIN_XUPDATE + updateBuff.toString() + END_XUPDATE);
- clearBuff();
- cl.close();
+ TransactionService transaction =
+ (TransactionService) context.getTransactionManager().
+ getTransaction().getAttribute( "TransactionService");
+ if( transaction != null ){
+ transaction.commit();
+ }
+
}
+ clearBuff();
}catch(XMLDBException xe){
xe.printStackTrace();
@@ -272,11 +309,38 @@
}
protected void internalRollback() throws StorageException{
- clearBuff();
+ try{
+ Collection cl = getCollection();
+ TransactionService transaction =
+ (TransactionService) context.getTransactionManager().getTransaction().
+ getAttribute( "TransactionService");
+
+ if(transaction != null){
+ transaction.rollback();
+ }
+ clearBuff();
+ }catch(XMLDBException xe){
+ xe.printStackTrace();
+ throw new StorageException(xe.getMessage(),xe);
+ }
}
protected void internalBegin() throws StorageException{
- clearBuff();
+ try{
+ Collection cl = getCollection();
+
+ TransactionService transaction =
+ (TransactionService) cl.getService("TransactionService", "1.0");
+ if(transaction != null){
+ context.getTransactionManager().getTransaction().
+ setAttribute( "TransactionService" , transaction );
+
+ transaction.begin();
+ }
+ }catch(XMLDBException xe){
+ xe.printStackTrace();
+ throw new StorageException(xe.getMessage(),xe);
+ }
}
@@ -299,14 +363,14 @@
while (results.hasMoreResources()) {
XMLResource resource =
(XMLResource) results.nextResource();
-
+
resource.getContentAsSAX(
- new Handler(context,mClass,objects,null)
+ new Handler(context,mClass,objects,null)
);
}
- cl.close();
+
}catch(XMLDBException xe){
xe.printStackTrace();
throw new StorageException(xe.getMessage(),xe);
@@ -317,15 +381,17 @@
}
public Object retrieveObject( final Class clasz, Object id ) throws StorageException {
- java.util.Set objects = new java.util.HashSet();
+ java.util.Set objects = new java.util.HashSet();
+ MetaClass mClass = context.getMetaClass(clasz);
+ String xpath = "/"+ getRootNode() + "/descendant-or-self::"+ context.getMetaClass(clasz).getName() + "[@" +
+ mClass.getOIDName() + "='" + id + "']";
+
try{
+
- MetaClass mClass = context.getMetaClass(clasz);
- String xpath = "/"+ getRootNode() + "/descendant-or-self::"+ context.getMetaClass(clasz).getName() + "[" +
- mClass.getOIDName() + "='" + id + "']";
-
+
Collection cl = getCollection();
XPathQueryService service =
@@ -337,25 +403,26 @@
while (results.hasMoreResources()) {
XMLResource resource =
(XMLResource) results.nextResource();
-
- resource.getContentAsSAX(
- new Handler(context,mClass,objects,null)
+
+ resource.getContentAsSAX(
+ new Handler(context,mClass,objects,null)
);
}
- cl.close();
+
}catch(XMLDBException xe){
xe.printStackTrace();
throw new StorageException(xe.getMessage(),xe);
}
if(objects.size() == 0 ){
- throw new ObjectNotFound();
+
+ throw new ObjectNotFound();
}
if(objects.size() != 1 ){
- throw new StorageException("dublicate object",null);
+ throw new StorageException("dublicate object",null);
}
-
+
return objects.iterator().next();
}
@@ -364,15 +431,15 @@
- class Handler extends org.xml.sax.helpers.DefaultHandler{
-
+ class Handler extends org.xml.sax.helpers.DefaultHandler{
+
final MetaClass mClasz;
final Set objects;
final EnumeratorCallback callback;
final java.util.Stack context = new java.util.Stack();
final StringBuffer buffer = new StringBuffer(111);
final Context cntxt;
- Object[] props;
+ Object[] props;
Object id;
Handler( Context cntxt, MetaClass mClasz, Set objects, final EnumeratorCallback callback){
@@ -383,59 +450,37 @@
}
- private void dispatch(final boolean fireOnlyIfMixed)
+ private void dispatch()
throws org.xml.sax.SAXException {
- if (fireOnlyIfMixed && buffer.length() == 0) return;
-
- Object[] ctx = (Object[]) context.peek();
- String name = (String) ctx[0];
- Attributes attrs = (Attributes) ctx[1];
- Object value;
+ String name = (String) context.peek();
try {
-
- if ( name.equals(mClasz.getName()) ) {
+
+ if ( props != null && buffer.length() > 0) {
+
+ int index = mClasz.getPropertyIndex( name );
- value = parse( mClasz.getOIDType(),attrs.getValue(mClasz.getOIDName() ));
-
- Persistent p = (Persistent) cntxt.getCache().get(value);
- if ( p != null ) {
- props = null;
- if( objects.add(p)){
- if( callback != null)
- callback.nextObject(p);
- return;
- }
+ if(mClasz.isReference(index)){
+ props[ index ] = parse(mClasz.getOIDType(),buffer.toString()) ;
+
}
- p = mClasz.newInstance( value );
- MetaObject pc = p.getMetaObject();
- props = pc.getProperties();
- if( objects.add(p)){
- cntxt.getCache().put(value,p);
- if( callback != null)
- callback.nextObject(p);
- return;
+ else{
+
+ props[ index ] =
+ parse(mClasz.getPropertyType(index),
+ buffer.toString()) ;
}
-
-
- }else {
-
- int index = mClasz.getPropertyIndex( name );
-
- props[ index ] = parse(mClasz.getPropertyType(index),buffer.toString()) ;
-
- return ;
-
+ return ;
}
-
} catch (Throwable t) {
t.printStackTrace();
throw new StorageException(t.getMessage(), t);
+ }finally{
+ buffer.delete(0, buffer.length());
}
-
- buffer.delete(0, buffer.length());
+
}
@@ -444,150 +489,196 @@
}
- public void endElement(String str, String str1, String str2) throws org.xml.sax.SAXException {
- dispatch(false);
+ public void endElement(String str, String str1, String name) throws org.xml.sax.SAXException {
+ if (!name.equals(mClasz.getName()) ) {
+ dispatch();
+ }
context.pop();
-
+
}
-
- public void startElement(String str, String str1, String qname, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException {
- dispatch(true);
- context.push(new Object[] {qname, new org.xml.sax.helpers.AttributesImpl(attributes)});
+
+ public void startElement(String str, String str1, String name, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException {
+ context.push(name);
+ if ( name.equals(mClasz.getName()) ) {
+
+ Object value = parse( mClasz.getOIDType(),attributes.getValue(mClasz.getOIDName() ));
+
+ Persistent p = (Persistent) cntxt.getCache().get(value);
+ if ( p != null ) {
+ props = null;
+ if( objects.add(p)){
+ if( callback != null)
+ callback.nextObject(p);
+ return;
+ }
+ }
+ p = mClasz.newInstance( value );
+ MetaObject pc = p.getMetaObject();
+ props = pc.getProperties();
+
+ if( objects.add(p)){
+ cntxt.getCache().put(value,p);
+ if( callback != null)
+ callback.nextObject(p);
+
+ }
+ return;
+
+ }
+
+
}
}
- interface Parser{
- public Object parse( String str );
- public String format( Object obj );
- }
- static abstract class ParserImpl implements Parser{
-
- public String format( Object obj){
- return obj.toString();
- }
-
- }
- final static java.util.Map parseMap = new java.util.HashMap();
- static{
-
- parseMap.put(int.class,new ParserImpl(){
- public Object parse(String str){
- return new Integer( Integer.parseInt(str) );
- }
- });
- parseMap.put(Integer.class,new ParserImpl(){
- public Object parse(String str){
- return new Integer( Integer.parseInt(str) );
- }
- });
- //---------------------------------------
- parseMap.put(byte.class,new ParserImpl(){
- public Object parse(String str){
- return new Byte( Byte.parseByte(str) );
- }
- });
- parseMap.put(Byte.class,new ParserImpl(){
- public Object parse(String str){
- return new Byte( Byte.parseByte(str) );
- }
- });
- //-----------------------------------------
- parseMap.put(short.class,new ParserImpl(){
- public Object parse(String str){
- return new Short( Short.parseShort(str) );
- }
- });
- parseMap.put(Short.class,new ParserImpl(){
- public Object parse(String str){
- return new Short( Short.parseShort(str) );
- }
- });
- //-----------------------------------------
- parseMap.put(long.class,new ParserImpl(){
- public Object parse(String str){
- return new Long( Long.parseLong(str) );
- }
- });
- parseMap.put(Long.class,new ParserImpl(){
- public Object parse(String str){
- return new Long( Long.parseLong(str) );
- }
- });
- //-----------------------------------------
- parseMap.put(float.class,new ParserImpl(){
- public Object parse(String str){
- return new Float( Float.parseFloat(str) );
- }
- });
- parseMap.put(Float.class,new ParserImpl(){
- public Object parse(String str){
- return new Float( Float.parseFloat(str) );
- }
- });
- //-----------------------------------------
- parseMap.put(double.class,new ParserImpl(){
- public Object parse(String str){
- return new Double( Double.parseDouble(str) );
- }
- });
- parseMap.put(Double.class,new ParserImpl(){
- public Object parse(String str){
- return new Double( Double.parseDouble(str) );
- }
- });
- //-----------------------------------------
- parseMap.put(java.util.Date.class,new Parser(){
-
- public String format(Object obj){
- return DATE_FROMAT.format(obj);
+ interface Parser{
+ public Object parse( String str );
+ public String format( Object obj );
+ }
+ static abstract class ParserImpl implements Parser{
+
+ public String format( Object obj){
+ return obj.toString();
+ }
+
+ }
+ final static java.util.Map parseMap = new java.util.HashMap();
+ static{
+ parseMap.put(boolean.class,new ParserImpl(){
+ public Object parse(String str){
+ return Boolean.valueOf(str);
+ }
+ });
+ parseMap.put(Boolean.class,new ParserImpl(){
+ public Object parse(String str){
+ return Boolean.valueOf(str);
+ }
+ });
+ //---------------------------------------
+
+ parseMap.put(int.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Integer( Integer.parseInt(str) );
+ }
+ });
+ parseMap.put(Integer.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Integer( Integer.parseInt(str) );
+ }
+ });
+ //---------------------------------------
+ parseMap.put(byte.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Byte( Byte.parseByte(str) );
+ }
+ });
+ parseMap.put(Byte.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Byte( Byte.parseByte(str) );
+ }
+ });
+ //-----------------------------------------
+ parseMap.put(short.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Short( Short.parseShort(str) );
+ }
+ });
+ parseMap.put(Short.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Short( Short.parseShort(str) );
+ }
+ });
+ //-----------------------------------------
+ parseMap.put(long.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Long( Long.parseLong(str) );
+ }
+ });
+ parseMap.put(Long.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Long( Long.parseLong(str) );
+ }
+ });
+ //-----------------------------------------
+ parseMap.put(float.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Float( Float.parseFloat(str) );
+ }
+ });
+ parseMap.put(Float.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Float( Float.parseFloat(str) );
+ }
+ });
+ //-----------------------------------------
+ parseMap.put(double.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Double( Double.parseDouble(str) );
+ }
+ });
+ parseMap.put(Double.class,new ParserImpl(){
+ public Object parse(String str){
+ return new Double( Double.parseDouble(str) );
+ }
+ });
+ //-----------------------------------------
+ parseMap.put(java.util.Date.class,new Parser(){
+
+ public String format(Object obj){
+ return DATE_FROMAT.format(obj);
+ }
+
+ public Object parse(String str){
+ try{
+ return DATE_FROMAT.parse(str);
+ }catch(Exception e){
+ throw new IllegalArgumentException(str);
+ }
+ }
+ });
+ //-----------------------------------------
+
+
+
+
+ }
+
+ static String format( Object obj ){
+ if( obj == null ){
+ return null;
+ }
+ Class cls = obj.getClass();
+ if ( cls == String.class ){
+ return ( String )obj;
+ }
+ Parser parser = ( Parser)parseMap.get(cls);
+ if( parser == null)
+ throw new IllegalArgumentException(cls.getName() + ":" + obj );
+
+ return parser.format(obj);
+
+
+ }
+ static Object parse( Class cls, String str ){
+ if( str == null){
+ return null;
+ }
+ if( cls == String.class ){
+ return str;
+ }
+ str = str.trim();
+ Parser parser = ( Parser)parseMap.get(cls);
+ if( parser == null)
+ throw new IllegalArgumentException(cls.getName() + ":" + str );
+ try{
+ return parser.parse(str);
+ }catch( Exception e ){
+ throw new IllegalArgumentException(e.getClass().getName() + ":"+ cls.getName() + ":" + str );
}
-
- public Object parse(String str){
- try{
- return DATE_FROMAT.parse(str);
- }catch(Exception e){
- throw new IllegalArgumentException(str);
- }
- }
- });
- //-----------------------------------------
-
-
-
-
- }
-
- static String format( Object obj ){
- if( obj == null ){
- return null;
- }
- Class cls = obj.getClass();
- if ( cls == String.class ){
- return ( String )obj;
- }
- Parser parser = ( Parser)parseMap.get(cls);
- if( parser == null)
- throw new IllegalArgumentException(cls.getName() + ":" + obj );
-
- return parser.format(obj);
-
-
- }
- static Object parse( Class cls, String str ){
- if( str == null || cls == String.class ){
- return str;
- }
- Parser parser = ( Parser)parseMap.get(cls);
- if( parser == null)
- throw new IllegalArgumentException(cls.getName() + ":" + str );
-
- return parser.parse(str);
-
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>