Vojtech Szocs has posted comments on this change.

Change subject: userportal,webadmin: messages locale unit test
......................................................................


Patch Set 4:

(6 comments)

http://gerrit.ovirt.org/#/c/32995/4/frontend/webadmin/modules/gwt-common/pom.xml
File frontend/webadmin/modules/gwt-common/pom.xml:

Line 85:       </resource>
Line 86:     </resources>
Line 87:     <testResources>
Line 88:       <testResource>
Line 89:         <directory>${project.basedir}/src/main/resources</directory>
I think we can omit ${project.basedir} prefix here, as it should be the default 
base directory anyway:

 <directory>src/main/resources</directory>
Line 90:           <includes>
Line 91:             <include>**/*Messages*.properties</include>
Line 92:           </includes>
Line 93:       </testResource>


http://gerrit.ovirt.org/#/c/32995/4/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/CommonApplicationMessagesTest.java
File 
frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/CommonApplicationMessagesTest.java:

Line 14:     @Test
Line 15:     public void doTest() throws URISyntaxException, IOException {
Line 16:         File messageFileDir = new File(
Line 17:                 
this.getClass().getResource(".").toURI().toASCIIString().replaceAll("file:", 
"")); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$
Line 18:         List<String> errors = 
GwtMessagesValidator.validateClass(CommonApplicationMessages.class, 
messageFileDir);
Hm, if we're validating a single class, its properties file is expected to be 
in a directory that corresponds to class package.

Validation of multiple classes can be modified to validation of single class, 
where we scan all (declared & inherited) methods, and again expect its 
properties file to be in package class directory.

What do you think?
Line 19:         assertTrue(GwtMessagesValidator.format(errors), 
errors.isEmpty());
Line 20:     }
Line 21: 


http://gerrit.ovirt.org/#/c/32995/4/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java
File 
frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/GwtMessagesValidator.java:

Line 43:             File messagesDir) throws URISyntaxException, IOException {
Line 44:         List<String> errors = new ArrayList<String>();
Line 45:         List<Method> messagesMethods = new ArrayList<Method>();
Line 46:         
messagesMethods.addAll(Arrays.asList(classUnderTest.getDeclaredMethods()));
Line 47:         classUnderTest = CommonApplicationMessages.class;
I'm puzzled by this line, is this here to ensure we also check 
CommonApplicationMessages (super-interface) methods?

I think that we should get all public methods from classUnderTest - both ones 
declared by classUnderTest & ones declared by any super-class / super-interface.

Since Messages is interface, and since Java interface has only public methods, 
we can use class.getMethods() API which returns all public methods of given 
class (interface), including methods inherited from any super-class 
(super-interface).

Also, we should also check that classUnderTest is indeed an interface and not 
an actual class, using class.isInterface() API.
Line 48: 
Line 49:         for (File localeFile: getMessagesPropertiesFiles(messagesDir, 
classUnderTest)) {
Line 50:             PropertiesFileInfo.properties = loadProperties(localeFile);
Line 51:             PropertiesFileInfo.fileName = localeFile.getName();


Line 63:     }
Line 64: 
Line 65:     private static void checkPlaceHolders(Method method, List<String> 
errors) {
Line 66:         int count = 0;
Line 67:         if 
(PropertiesFileInfo.properties.getProperty(method.getName()) != null) {
Minor thing, maybe worth extracting method.getName() into local variable.
Line 68:             Set<Integer> foundIndex = new HashSet<Integer>();
Line 69:             Set<Integer> requiredIndexes = 
determineRequiredIndexes(method.getParameterAnnotations());
Line 70:             int minRequired = requiredIndexes.size();
Line 71:             // Check to make sure the number of parameters is inside 
the range defined.


Line 99:             }
Line 100:         }
Line 101:     }
Line 102: 
Line 103:     private static int getMaxMethodParameter(Annotation[][] 
typeAnnotations) {
To count method parameters, you could also use method.getParameterTypes() API.

Maybe consider renaming this method to something like getMethodParamCount? 
Something like this:

 private static int getMethodParamCount(Method method) {
     return method.getParameterTypes().length;
 }
Line 104:         return typeAnnotations.length;
Line 105:     }
Line 106: 
Line 107:     private static Set<Integer> 
determineRequiredIndexes(Annotation[][] typeAnnotations) {


Line 111:             Annotation[] typeAnnotation = typeAnnotations[i];
Line 112:             if (typeAnnotation.length > 0) {
Line 113:                 for (Annotation annotation: typeAnnotation) {
Line 114:                     if 
(annotation.annotationType().equals(Optional.class)) {
Line 115:                         isOptional = true;
Maybe break out of for loop once we detect optional index, to avoid unnecessary 
compute cycles?
Line 116:                     }
Line 117:                 }
Line 118:             }
Line 119:             if (!isOptional) {


-- 
To view, visit http://gerrit.ovirt.org/32995
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Icda389f2ca08e9d3b7515bb4a0dc1213bc91aeef
Gerrit-PatchSet: 4
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Einav Cohen <eco...@redhat.com>
Gerrit-Reviewer: Vojtech Szocs <vsz...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to