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