use of org.whole.lang.templates.ModelTemplate in project whole by wholeplatform.
the class XsdModelBuilderTest method testBuilderAPI.
@Category(KnownFailingTests.class)
@Test
public void testBuilderAPI() throws Exception {
Schema xsdFromInputStream = (Schema) XsdPersistenceKit.instance().readModel(new StreamPersistenceProvider(getInputStream("datatypes.xsd")));
Document document = (Document) XmlSourcePersistenceKit.instance().readModel(new StreamPersistenceProvider(getInputStream("datatypes.xsd")));
IBindingManager bm = BindingManagerFactory.instance.createBindingManager();
bm.wDefValue("mergeCDataSect", true);
XsdDeployStrategies.setDeployStrategy(bm, XsdDeployStrategies.ALL);
ModelBuilderOperation mop = new ModelBuilderOperation();
IBuilderOperation xsdBuilderOperation = new XmlSpecific2XsdBuilderAdapterOperation(mop, bm);
XmlNormalizerBuilderOperation normalizerOp = new XmlNormalizerBuilderOperation(xsdBuilderOperation, bm);
ModelTemplate template = new ModelTemplate(document);
template.apply(new XmlGenericBuilderAdapter((IXmlBuilder) normalizerOp.wGetBuilder(XmlLanguageKit.URI)));
Schema xsdFromXmlModel = (Schema) mop.wGetResult();
Assert.assertTrue(Matcher.match(xsdFromInputStream, xsdFromXmlModel));
}
use of org.whole.lang.templates.ModelTemplate in project whole by wholeplatform.
the class XmlBuilderPersistenceKit method doWriteModel.
protected void doWriteModel(IEntity model, IPersistenceProvider pp) throws Exception {
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(pp.getOutputStream(), pp.getEncoding()));
XmlPrettyPrinterBuilderOperation op = new XmlPrettyPrinterBuilderOperation(printWriter);
XmlStoreProducerBuilderOperation xmlOp = new XmlStoreProducerBuilderOperation(op);
((XmlStoreProducerBuilder) xmlOp.wGetBuilder()).buildStartDocument();
new ModelTemplate(model).apply(xmlOp);
((XmlStoreProducerBuilder) xmlOp.wGetBuilder()).buildEndDocument();
printWriter.flush();
}
use of org.whole.lang.templates.ModelTemplate in project whole by wholeplatform.
the class JavaBuilderPersistenceKit method doWriteModel.
protected void doWriteModel(IEntity model, IPersistenceProvider pp) throws Exception {
IBindingManager bm = pp.getBindings();
if (bm.wIsSet("file")) {
Object file = bm.wGetValue("file");
if (file instanceof File)
bm.wDefValue("className", StringUtils.stripFileExtension(((File) file).getName()));
}
if (// TODO test was !bm.wIsSet("className") &&
bm.wIsSet("fileName"))
bm.wDefValue("className", bm.wStringValue("fileName"));
IEntity packageNameEntity = bm.wGet("packageName");
String packageName = packageNameEntity != null ? packageNameEntity.wStringValue() : null;
IEntity classNameEntity = bm.wGet("className");
String className = classNameEntity != null ? bm.wStringValue("className") : "AnonymousClass";
ModelBuilderOperation op = new ModelBuilderOperation();
JavaStoreProducerBuilderOperation javaOp = new JavaStoreProducerBuilderOperation(op);
((JavaStoreProducerBuilder) javaOp.wGetBuilder()).buildStartCompilationUnit(packageName, className, model.wGetEntityDescriptor().getEntityType().getName());
new ModelTemplate(model).apply(javaOp);
((JavaStoreProducerBuilder) javaOp.wGetBuilder()).buildEndCompilationUnit();
IEntity javaModel = op.wGetResult();
PrettyPrinterOperation.prettyPrint(javaModel, pp.getOutputStream(), pp.getEncoding());
}
use of org.whole.lang.templates.ModelTemplate in project whole by wholeplatform.
the class HtmlPrettyPrinterVisitor method visit.
public void visit(IEntity entity) {
IEntity xhtmlDocument = BehaviorUtils.apply("whole:org.whole.lang.html:HTML5Semantics#toXHtml", entity);
HtmlSerializer serializer = new HtmlSerializer(out.asWriter());
SaxHandlerBuilderOperation sbop = new SaxHandlerBuilderOperation(serializer, serializer, "http://www.w3.org/1999/xhtml");
if (xhtmlDocument != null)
new ModelTemplate(xhtmlDocument).apply(sbop);
}
use of org.whole.lang.templates.ModelTemplate in project whole by wholeplatform.
the class XsiModelTemplate method visit.
public void visit(IEntity entity) {
IEntity adaptee = entity.wGetAdaptee(false);
EntityDescriptor<?> adapteeEd = adaptee.wGetEntityDescriptor();
if (adapteeEd.getLanguageKit().getURI().equals(CommonsLanguageKit.URI)) {
switch(adapteeEd.getOrdinal()) {
case CommonsEntityDescriptorEnum.Resolver_ord:
return;
case CommonsEntityDescriptorEnum.SameStageFragment_ord:
case CommonsEntityDescriptorEnum.RootFragment_ord:
case CommonsEntityDescriptorEnum.StageDownFragment_ord:
case CommonsEntityDescriptorEnum.StageUpFragment_ord:
// String lang = entity.wGetLanguageKit().getURI();
IEntity root = entity.wGetRoot();
if (XmlLanguageKit.URI.equals(root.wGetLanguageKit().getURI())) {
ModelTemplate template = new ModelTemplate(root);
template.apply(new XmlGenericBuilderAdapter(builder));
} else
visit(root);
return;
}
}
EntityDescriptor<?> ed = entity.wGetEntityDescriptor();
EntityDescriptor<?> context;
FeatureDescriptor fd;
String languageURI;
IEntity parent = entity.wGetParent();
if (EntityUtils.isNull(parent) || CommonsEntityDescriptorEnum.RootFragment.equals(parent.wGetEntityDescriptor()) || CommonsEntityDescriptorEnum.StageUpFragment.equals(parent.wGetEntityDescriptor())) {
context = CommonsEntityDescriptorEnum.RootFragment;
fd = CommonsFeatureDescriptorEnum.rootEntity;
// get languageURI from parent entity descriptor but from RootFragment
languageURI = ed.getLanguageKit().getURI();
} else {
context = parent.wGetEntityDescriptor();
// always skip SameStageFragment parent
if (CommonsEntityDescriptorEnum.SameStageFragment.equals(context)) {
IEntity parentParent = parent.wGetParent();
context = parentParent.wGetEntityDescriptor();
fd = parentParent.wGetFeatureDescriptor(parent);
languageURI = context.getLanguageKit().getURI();
} else {
fd = parent.wGetFeatureDescriptor(entity);
languageURI = parent.wGetEntityDescriptor().getLanguageKit().getURI();
}
}
IMappingStrategy strategy = getXsiMappingStrategy(languageURI);
// if (!hasNCName(strategy, context, ed, fd)) {
if (getElementNCName(entity) == null) {
if (isMixedType(strategy, context, ed))
builder.CharData(toContentValue(entity, strategy));
else {
final int size = entity.wSize();
for (int i = 0; i < size; i++) visit(entity.wGet(i));
}
} else {
nsPrefixes.wEnterScope();
boolean needNamespacePrefix = (strategy.isElementsFormQualified()) && !NamespaceUtils.isInternalNamespace(languageURI);
boolean needNamespaceDeclaration = needNamespacePrefix && !hasNamespacePrefix(entity, strategy.getNamespace());
builder.Element_();
String tagName = getElementNCName(entity);
if (needNamespacePrefix) {
String prefix = getNamespacePrefix(entity, languageURI);
builder.QualifiedName_();
builder.NameSpace(prefix);
builder.Name(tagName);
builder._QualifiedName();
} else
builder.Name(tagName);
builder.Attributes_();
if (needNamespaceDeclaration)
addNamespaceDeclaration(entity, languageURI);
if (needSchemaLocationDeclaration(strategy, context, ed, fd))
addSchemaLocationDeclaration(entity, languageURI);
if (entity.wGetEntityKind().isData()) {
builder._Attributes();
builder.CharData(toContentValue(entity, strategy));
} else {
applyAttributes(entity, 0);
builder._Attributes();
builder.Content_();
final int size = entity.wSize();
for (int i = 0; i < size; i++) {
context = entity.wGetEntityDescriptor();
fd = context.getEntityFeatureDescriptor(i);
IEntity child = entity.wGet(i);
ed = child.wGetEntityDescriptor();
if (!isAttributeMapping(strategy, context, ed, fd)) {
if (isContentMapping(strategy, context, ed, fd))
builder.CharData(toContentValue(child, strategy));
else
visit(child);
}
}
builder._Content();
}
builder._Element();
nsPrefixes.wExitScope();
}
}
Aggregations