[jbosstools-dev] Common Validation: Help needed

Xavier Coulon xcoulon at redhat.com
Wed Sep 19 04:26:21 EDT 2012


Alexey,

Awesome, that fixed my problem !
Thanks a lot.

Best regards,
/Xavier



On Sep 18, 2012, at 8:51 PM, Alexey Kazakov wrote:

> Hi Xavier,
> 
> There is a bug in our validator manager configuration which prevented WST builder invoking our validators for every resource of the project when you click on Project>Validate
> I created an issue for that - https://issues.jboss.org/browse/JBIDE-12634
> Fixed in trunk.
> 
> On 09/18/2012 05:38 AM, Xavier Coulon wrote:
>> Hi Alexey,
>> 
>> I'm trying to get the following behavior with the common-validator framework, but now I'm stuck: when I do "Project>Validate", I would like to trigger a full project validation, ie, I's expect my JaxrsMetamodelValidator#validateAll(ContextValidationHelper, IReporter, Set<IProject>) being called.
>> 
>> Instead of this, the ValidatorManager calls the JaxrsMetamodelValidator#validate(Set<IFile>, IProject, ContextValidationHelper, IProjectValidationContext, ValidatorManager, IReporter) method with the first resource found of my project, and after that, the ValidatorManager is never called again because the org.eclipse.wst.validation.Validator$V1#shouldSkipValidator(IResource, ValOperation)prevents further resource validation, although there are many more resources to validate (java files, xml files, folders, etc.).
>> 
>> And from what I understood of the Validator, the only way to have the JaxrsMetamodelValidator#validateAll(..) method being called would be validate the 'else if' condition in the following statement:
>> 
>>  if((!validationHelper.isClasspathAffected() && (!changedFiles.isEmpty() || validationHelper.getURIs().length > 0))) {
>> 
>>           status = validate(changedFiles, validationHelper, reporter, rootProjects);
>> 
>>           } else if(!validationContextManager.getRegisteredFiles().isEmpty()) {
>> 
>>           validationContextManager.clearAllResourceLinks(rootProjects);
>> 
>>           status = validateAll(validationHelper, reporter, rootProjects);
>> 
>>           }
>> 
>> 
>> 
>> How could I have a full validation from the 'Project>Validate' menu action ?
>> 
>> Thanks.
>> 
>> Best regards,
>> /Xavier
>> 
>> 
>> 
>> On Sep 17, 2012, at 9:50 PM, Alexey Kazakov wrote:
>> 
>>> V2 has some disadvantages which are critical for our validators.
>>> For example in case of incremental validation V2 validtor will be called for every changed resource. That's not ok for our validators. We need to get a full list of all the changed resources before we start to validate them.
>>> WST validation V2 is too restricted and not so flexible as V1.
>>> 
>>> 
>>> On 09/17/2012 12:34 PM, Rob Cernich wrote:
>>>> Cool.  Plain old validator framework supports this as well: ValidationResult.setDependsOn().
>>>> 
>>>> Of course, this is version 2 of the validator framework.
>>>> 
>>>> Best,
>>>> Rob
>>>> 
>>>> ----- Original Message -----
>>>>> BTW, we use KB for savings links between model artifacts which are
>>>>> used
>>>>> in incremental validation. Not for saving problem markers.
>>>>> Suppose you have some relation between resource A and B. And if A is
>>>>> changed then you should re-validate B too.
>>>>> We save such links in KB project so we don't have to rebuild them
>>>>> after
>>>>> every Eclipse restart.
>>>>> 
>>>>> 
>>>>> On 09/17/2012 12:15 PM, Rob Cernich wrote:
>>>>>> Hey Alexey,
>>>>>> 
>>>>>> If you're using the plain old WST validation framework, just make
>>>>>> sure your markers are "persistent" and extend
>>>>>> org.eclipse.wst.validation.problemmarker (and problemmarker2, if
>>>>>> applicable) and that you're validator is enabled for build.  Also,
>>>>>> make sure your include/exclude rules are configured appropriately.
>>>>>> 
>>>>>> Best,
>>>>>> Rob
>>>>>> 
>>>>>> ----- Original Message -----
>>>>>> 
>>>>>>> Alexey, Rob,
>>>>>>> Thanks for your replies. I understand that our validators (JAX-RS
>>>>>>> is
>>>>>>> now part of them) are called during wst validation, and that I
>>>>>>> shouldn't trigger costly validation of all projects for the sole
>>>>>>> purpose of JAX-RS. I'll look at the options you suggested
>>>>>>> (explicit
>>>>>>> call of validateAll vs state saving/using KB)
>>>>>>> Thanks
>>>>>>> Best regards,
>>>>>>> /Xavier
>>>>>>> On Sep 17, 2012, at 7:24 PM, Alexey Kazakov wrote:
>>>>>>>> We don't call our validators (CDI, EL, JSF, Seam, ...) directly.
>>>>>>>> These validators are registered in plugin.xml's and managed by
>>>>>>>> org.jboss.tools.common.validation.ValidatorManager
>>>>>>>> This manager is called by eclipse wst validation builder.
>>>>>>>> You could call ValidatorManager.validateInJob(IValidationContext
>>>>>>>> helper, IReporter reporter) with proper helper
>>>>>>>> (validationHelper.getValidationContextManager().getRegisteredFiles()
>>>>>>>> should be empty) but in this case you will start all the
>>>>>>>> validators
>>>>>>>> to validate the entire projects! So it's not the way you are
>>>>>>>> looking
>>>>>>>> for.
>>>>>>>> So you have two options here:
>>>>>>>> 1. Call your validator directly validateAll(..) when you need it
>>>>>>>> w/o
>>>>>>>> builder
>>>>>>>> or
>>>>>>>> 2. Save the validation state between sessions and relay on wst
>>>>>>>> builder/ValidationManager.
>>>>>>>> In CDI/JSF/Seam tools we use KB project framework to save states.
>>>>>>>> This framework is not a part of common-validation framework, so
>>>>>>>> it's
>>>>>>>> up to you if you want to use KB project or your own solution to
>>>>>>>> save
>>>>>>>> the state.
>>>>>>>> On 09/17/2012 08:27 AM, Xavier Coulon wrote:
>>>>>>>>> Never mind, I found the reason why the validate(..) method is
>>>>>>>>> called:
>>>>>>>>> some xml files need to be checked. They are not part of the
>>>>>>>>> 'changedFiles', but they are returned by the
>>>>>>>>> validationHelper.getURIs() method.
>>>>>>>>> So, instead, I'd like to ask: how can I force the validation
>>>>>>>>> framework to trigger a validateAll() at workbench startup ?
>>>>>>>>> Thanks.
>>>>>>>>> Best regards,
>>>>>>>>> /Xavier
>>>>>>>>> On Sep 17, 2012, at 4:49 PM, Xavier Coulon wrote:
>>>>>>>>>> Hi !
>>>>>>>>>> The JAX-RS tooling is now aligned on the CDI tooling and relies
>>>>>>>>>> on
>>>>>>>>>> the common-validation plugin to validate the JAX-RS elements.
>>>>>>>>>> So far, so good, but I have this issue that I'd like to solve:
>>>>>>>>>> at
>>>>>>>>>> workbench start-up, the method
>>>>>>>>>> public IStatus validate(Set<IFile> changedFiles, IProject
>>>>>>>>>> project,
>>>>>>>>>> ContextValidationHelper validationHelper,
>>>>>>>>>> IProjectValidationContext context, ValidatorManager manager,
>>>>>>>>>> IReporter reporter) throws ValidationException
>>>>>>>>>> of my validator is called, but with an empty set of
>>>>>>>>>> 'changedFiles'.
>>>>>>>>>> Wouldn't it make more sense to call the
>>>>>>>>>> public IStatus validateAll(IProject project,
>>>>>>>>>> ContextValidationHelper
>>>>>>>>>> validationHelper,
>>>>>>>>>> IProjectValidationContext validationContext, ValidatorManager
>>>>>>>>>> manager, IReporter reporter)
>>>>>>>>>> throws ValidationException
>>>>>>>>>> method instead ?
>>>>>>>>>> I can workaround that and call validateAll(..) when
>>>>>>>>>> changesFiles.isEmpty() in the validate(..) method call, but I
>>>>>>>>>> don't
>>>>>>>>>> think it's the best approach.
>>>>>>>>>> WDYT ?
>>>>>>>>>> Thanks.
>>>>>>>>>> Best regards,
>>>>>>>>>> /Xavier
>>>>>>>>> _______________________________________________
>>>>>>>>> jbosstools-dev mailing list jbosstools-dev at lists.jboss.org
>>>>>>>>> https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>>>>>> _______________________________________________
>>>>>>>> jbosstools-dev mailing list
>>>>>>>> jbosstools-dev at lists.jboss.org
>>>>>>>> https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>>>>> _______________________________________________
>>>>>>> jbosstools-dev mailing list
>>>>>>> jbosstools-dev at lists.jboss.org
>>>>>>> https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>>>> 
>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jbosstools-dev/attachments/20120919/d07e5ad1/attachment-0001.html 


More information about the jbosstools-dev mailing list