OK, I see now. If I use the DocOpValidator, I get a very detailed
error description.
For those that may be interested, here is an example that shows how to
use the DocOpValidator:
BootstrapDocument bdoc = new BootstrapDocument();
DocOpBuilder docOp = new DocOpBuilder();
docOp.characters("ABCDEF");
bdoc.consume(docOp.build());
docOp = new DocOpBuilder();
docOp.retain(1);
docOp.deleteCharacters("B");
docOp.retain(4);
BufferedDocOp op1 = docOp.build();
docOp = new DocOpBuilder();
docOp.retain(2);
docOp.deleteCharacters("C");
docOp.retain(3);
BufferedDocOp op2 = docOp.build();
DocOpAutomaton.ViolationCollector vcol = new
DocOpAutomaton.ViolationCollector();
DocOpAutomaton.ValidationResult vres = DocOpValidator.validate(vcol,
DocumentSchema.NO_SCHEMA_CONSTRAINTS, bdoc, op1);
if (!vres.isValid()) {
System.out.println(vcol.toString());
System.exit(1);
}
bdoc.consume(op1);
vcol = new DocOpAutomaton.ViolationCollector();
vres = DocOpValidator.validate(vcol,
DocumentSchema.NO_SCHEMA_CONSTRAINTS, bdoc, op2);
if (!vres.isValid()) {
System.out.println(vcol.toString());
System.exit(1);
}
bdoc.consume(op2);
On Sun, Nov 22, 2009 at 6:38 AM, Alexandre Mah <[email protected]> wrote:
>
> Yes. The composition and transform algorithms currently don't guard
> against their inputs being nonsensical operations. When the
> composition algorithm was written, we were for the most part only
> using composition in places where the operations were already expected
> to be valid, so we didn't ascribe a high priority to implementing
> proper checking within the composition algorithm itself since it would
> only have increased the cost of composition by doing redundant checks
> (but we did regardless leave a TODO to put in proper validity checking
> since it seemed like a good idea to have it eventually anyway).
>
> Best regards,
> Alex
>
> On 11/22/09, Tad Glines <[email protected]> wrote:
>>
>> I was doing some testing to validate my understanding of composition
>> when I ran into a case that (I assumed) shouldn't succeed and should
>> instead throw an exception.
>>
>> Here's the code:
>> DocOpBuilder docOp = new DocOpBuilder();
>> docOp.characters("ABCDEF");
>> BufferedDocOp doc = docOp.build();
>>
>> System.out.println(doc.toString()); // Prints: ++"ABCDEF";
>>
>> DocOpCollector col = new DocOpCollector();
>>
>> docOp = new DocOpBuilder();
>> docOp.retain(1);
>> docOp.deleteCharacters("B");
>> docOp.retain(4);
>> col.add(docOp.build());
>>
>> docOp = new DocOpBuilder();
>> docOp.retain(2);
>> docOp.deleteCharacters("C");
>> docOp.retain(3);
>> col.add(docOp.build());
>>
>> doc = Composer.compose(doc, col.composeAll());
>> System.out.println(doc.toString()); // Prints: ++"ACEF";
>>
>> When I wrote this I assumed that it would fail on the second to last
>> line, but instead it succeeds.
>>
>> Does this just represent one of the cases where stricter operation
>> validation hasn't been implemented yet?
>> Similar naive (un-transformed) compositions involving
>> deleteElementStart() and updateAttributes() do fail with an exception.
>>
>> >
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Wave
Protocol" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/wave-protocol?hl=en
-~----------~----~----~----~------~----~------~--~---