use of org.whole.lang.queries.model.Path in project whole by wholeplatform.
the class PojoNormalizerVisitor method createDefaultTemplateInProperties.
public static void createDefaultTemplateInProperties(Library entity, IBindingManager bindings) {
Path findAllPropertiesWithoutTemplate = (Path) PojoTemplateManager.instance().create("findAllPropertiesWithoutTemplate");
bindings.wEnterScope();
for (Property property : BehaviorUtils.<Property>compileAndLazyEvaluate(findAllPropertiesWithoutTemplate, entity, bindings)) property.setTemplate((Name) EntityUtils.clone(bindings.wGet("name")));
bindings.wExitScope();
}
use of org.whole.lang.queries.model.Path in project whole by wholeplatform.
the class XmlNormalizerBuilderTest method testNormalizationWithCDataSectMerge.
@Test
public void testNormalizationWithCDataSectMerge() {
try {
// create queries
Path findNestedContent = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findNestedContent");
Path findMissingContentEntities = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findMissingContentEntities");
Path findConsecutiveCharDataOrCDataSect = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findConsecutiveCharDataOrCDataSect");
// create normalized sample xml model
SampleXmlModel sampleXmlModelTemplate = new SampleXmlModel();
Document xmlDocument = sampleXmlModelTemplate.create();
IBindingManager parameters = BindingManagerFactory.instance.createArguments();
parameters.wDefValue("mergeCDataSect", true);
ModelBuilderOperation mop = new ModelBuilderOperation();
XmlNormalizerBuilderOperation xnop = new XmlNormalizerBuilderOperation(mop, parameters);
sampleXmlModelTemplate.apply(xnop);
Document normalizedXmlDocument = (Document) mop.wGetResult();
// no nested Content
IEntityIterator<IEntity> iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// no nested implied Content
iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// no consecutive CharData
iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// no CDataSect at all
iterator = IteratorFactory.descendantOrSelfMatcherIterator().withPattern(XmlEntityDescriptorEnum.CDataSect);
iterator.reset(normalizedXmlDocument);
assertFalse(iterator.hasNext());
// both normalization strategies must yield the same result
assertTrue(Matcher.match(normalizedXmlDocument, NormalizerOperation.normalize(xmlDocument, parameters)));
} catch (Exception e) {
fail();
}
}
use of org.whole.lang.queries.model.Path in project whole by wholeplatform.
the class XmlNormalizerBuilderTest method testNormalizationWithoutCDataSectMerge.
@Test
public void testNormalizationWithoutCDataSectMerge() {
try {
// create queries
Path findNestedContent = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findNestedContent");
Path findMissingContentEntities = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findMissingContentEntities");
Path findConsecutiveCharDataOrCDataSect = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findConsecutiveCharDataOrCDataSect");
// create sample xml model
SampleXmlModel sampleXmlModelTemplate = new SampleXmlModel();
Document xmlDocument = sampleXmlModelTemplate.create();
// has nested Content
IEntityIterator<IEntity> iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, xmlDocument);
assertTrue(iterator.hasNext());
// has nested implied Content
iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, xmlDocument);
assertTrue(iterator.hasNext());
// has consecutive CharData or consecutive CDataSect
iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, xmlDocument);
assertTrue(iterator.hasNext());
// create normalized sample xml model
ModelBuilderOperation mop = new ModelBuilderOperation();
XmlNormalizerBuilderOperation xnop = new XmlNormalizerBuilderOperation(mop);
sampleXmlModelTemplate.apply(xnop);
Document normalizedXmlDocument = (Document) mop.wGetResult();
// no nested Content
iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// no nested implied Content
iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// no consecutive CharData or consecutive CDataSect
iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, normalizedXmlDocument);
assertFalse(iterator.hasNext());
// both normalization strategies must yield the same result
assertTrue(Matcher.match(normalizedXmlDocument, NormalizerOperation.normalize(xmlDocument)));
} catch (Exception e) {
fail();
}
}
use of org.whole.lang.queries.model.Path in project whole by wholeplatform.
the class QueriesUtils method createRootPath.
public static Path createRootPath(IEntity entity) {
QueriesEntityFactory qef = QueriesEntityFactory.instance;
Path path = qef.createPath(0);
IEntity parent = null;
IEntityIterator<IEntity> iterator = IteratorFactory.ancestorOrSelfReverseIterator();
iterator.reset(entity);
if (CommonsEntityDescriptorEnum.RootFragment.equals(iterator.lookahead().wGetEntityDescriptor()))
iterator.next();
for (IEntity child : iterator) {
if (parent != null)
path.wAdd(EntityUtils.isSimple(parent) ? qef.createFeatureStep(CommonsDataTypePersistenceParser.unparseFeatureDescriptor(parent.wGetFeatureDescriptor(child))) : qef.createFilter(qef.createChildStep(), qef.createIndexTest(qef.createIntLiteral(parent.wIndexOf(child)))));
parent = child;
}
return path;
}
use of org.whole.lang.queries.model.Path in project whole by wholeplatform.
the class PojoNormalizerVisitor method createDefaultTemplateInParameters.
public static void createDefaultTemplateInParameters(Library entity, IBindingManager bindings) {
Path findAllParametersWithoutTemlate = (Path) PojoTemplateManager.instance().create("findAllParametersWithoutTemlate");
Path findParameterTemplate = (Path) PojoTemplateManager.instance().create("findPropertyTemplate");
bindings.wEnterScope();
for (Parameter parameter : BehaviorUtils.<Parameter>compileAndLazyEvaluate(findAllParametersWithoutTemlate, entity, bindings)) {
PojoDeclaration pojo = (PojoDeclaration) bindings.wGet("pojo");
Name name = BehaviorUtils.<Name>evaluateFirstResult(findParameterTemplate, pojo, bindings);
if (name != null)
parameter.setTemplate(EntityUtils.clone(name));
}
bindings.wExitScope();
}
Aggregations