1345 return proxyPersistenceDelegate;
1346 }
1347 }
1348 catch(Exception e) {}
1349 // else if (type.getDeclaringClass() != null) {
1350 // return new DefaultPersistenceDelegate(new String[]{"this$0"});
1351 // }
1352
1353 String typeName = type.getName();
1354 PersistenceDelegate pd = (PersistenceDelegate)getBeanAttribute(type, "persistenceDelegate");
1355 if (pd == null) {
1356 pd = internalPersistenceDelegates.get(typeName);
1357 if (pd != null) {
1358 return pd;
1359 }
1360 internalPersistenceDelegates.put(typeName, defaultPersistenceDelegate);
1361 try {
1362 String name = type.getName();
1363 Class c = Class.forName("java.beans.MetaData$" + name.replace('.', '_')
1364 + "_PersistenceDelegate");
1365 pd = (PersistenceDelegate)c.newInstance();
1366 internalPersistenceDelegates.put(typeName, pd);
1367 }
1368 catch (ClassNotFoundException e) {
1369 String[] properties = getConstructorProperties(type);
1370 if (properties != null) {
1371 pd = new DefaultPersistenceDelegate(properties);
1372 internalPersistenceDelegates.put(typeName, pd);
1373 }
1374 }
1375 catch (Exception e) {
1376 System.err.println("Internal error: " + e);
1377 }
1378 }
1379
1380 return (pd != null) ? pd : defaultPersistenceDelegate;
1381 }
1382
1383 private static String[] getConstructorProperties(Class<?> type) {
1384 String[] names = null;
1385 int length = 0;
|
1345 return proxyPersistenceDelegate;
1346 }
1347 }
1348 catch(Exception e) {}
1349 // else if (type.getDeclaringClass() != null) {
1350 // return new DefaultPersistenceDelegate(new String[]{"this$0"});
1351 // }
1352
1353 String typeName = type.getName();
1354 PersistenceDelegate pd = (PersistenceDelegate)getBeanAttribute(type, "persistenceDelegate");
1355 if (pd == null) {
1356 pd = internalPersistenceDelegates.get(typeName);
1357 if (pd != null) {
1358 return pd;
1359 }
1360 internalPersistenceDelegates.put(typeName, defaultPersistenceDelegate);
1361 try {
1362 String name = type.getName();
1363 Class c = Class.forName("java.beans.MetaData$" + name.replace('.', '_')
1364 + "_PersistenceDelegate");
1365 @SuppressWarnings("deprecation")
1366 Object tmp = c.newInstance();
1367 pd = (PersistenceDelegate)tmp;
1368 internalPersistenceDelegates.put(typeName, pd);
1369 }
1370 catch (ClassNotFoundException e) {
1371 String[] properties = getConstructorProperties(type);
1372 if (properties != null) {
1373 pd = new DefaultPersistenceDelegate(properties);
1374 internalPersistenceDelegates.put(typeName, pd);
1375 }
1376 }
1377 catch (Exception e) {
1378 System.err.println("Internal error: " + e);
1379 }
1380 }
1381
1382 return (pd != null) ? pd : defaultPersistenceDelegate;
1383 }
1384
1385 private static String[] getConstructorProperties(Class<?> type) {
1386 String[] names = null;
1387 int length = 0;
|