Alexander Wels has posted comments on this change.

Change subject: engine: Hibernate PersistentCollections
......................................................................


Patch Set 1:

(4 comments)

https://gerrit.ovirt.org/#/c/41810/1/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/hibernate/HibernateCleaner.java
File 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/hibernate/HibernateCleaner.java:

Line 42:             return dirty;
Line 43:         }
Line 44: 
Line 45:         if (!processCollections(dirty, processed)) {
Line 46:             for (String getterName : 
ReflectionUtils.getGetterNames(dirty)) {
> Can we cache all the results of the reflection code here? After all, we'll 
Actually this is the part that loops over all the getters in all the objects 
that are being transferred to the Frontend, so there a ton of different getters 
so caching them might not be the best use of our memory.
Line 47:                 Object object = ReflectionUtils.get(dirty, getterName);
Line 48:                 if (object instanceof AbstractPersistentCollection) {
Line 49:                     // Hibernate persistent class, replace the 
implementation.
Line 50:                     ReflectionUtils.setIfPossible(dirty, getterName, 
doHibernateClean(object, processed));


https://gerrit.ovirt.org/#/c/41810/1/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/hibernate/ReflectionUtils.java
File 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/hibernate/ReflectionUtils.java:

Line 15:         }
Line 16:         return properties;
Line 17:     }
Line 18: 
Line 19:     private static boolean isGetter(Method method) {
> Can be cached
Don't think so see comment in other class, but I think there are some 
optimizations we can do here. Looking into it.
Line 20:         String name = method.getName();
Line 21:         if (!name.startsWith("get")) //$NON-NLS-1$
Line 22:             return false;
Line 23:         if (name.length() == 3)


Line 34:     @SuppressWarnings("unchecked")
Line 35:     public static <T> T get(Object object, String methodName) {
Line 36:         try {
Line 37:             Class<? extends Object> xClass = object.getClass();
Line 38:             Method method = xClass.getMethod(methodName);
> Cache
Don't think so see comment in other class, but I think there are some 
optimizations we can do here. Looking into it.
Line 39:             return (T) method.invoke(object);
Line 40:         } catch (Exception e) {
Line 41:             throw new RuntimeException(e);
Line 42:         }


Line 56:         }
Line 57:     }
Line 58: 
Line 59:     private static Method getMethod(Class<?> Clazz, String name) {
Line 60:         Method[] methods = Clazz.getMethods();
> Cache
Don't think so see comment in other class, but I think there are some 
optimizations we can do here. Looking into it.
Line 61:         for (Method method : methods) {
Line 62:             if (method.getName().equals(name))
Line 63:                 return method;
Line 64:         }


-- 
To view, visit https://gerrit.ovirt.org/41810
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I4eac0864e844ad8e1885134df69f976c784b3960
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Liran Zelkha <lzel...@redhat.com>
Gerrit-Reviewer: Tomas Jelinek <tjeli...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to