/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.resolver; import org.jdom.Content; import org.jdom.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.cms.framework.xml.XMLBuilder; import com.enonic.cms.framework.xml.XMLDocument; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserXmlCreator; @Component public class ResolverInputXMLCreator { protected ResolverHttpRequestInputCreator resolverHttpRequestInputCreator; protected ResolverHttpRequestInputXMLCreator resolverHttpRequestInputXMLCreator; protected final static String ROOT_ELEMENT_NAME = "context"; public XMLDocument buildResolverInputXML( ResolverContext context ) { XMLBuilder xmlDoc = new XMLBuilder(); xmlDoc.startElement( ROOT_ELEMENT_NAME ); addHttpRequestInput( context, xmlDoc ); addUserInput( context, xmlDoc ); xmlDoc.endElement(); return xmlDoc.getDocument(); } private void addHttpRequestInput( ResolverContext context, XMLBuilder xmlDoc ) { xmlDoc.importElement( getRequestXMLInput( context ) ); } private XMLDocument getRequestXMLInput( ResolverContext context ) { ResolverHttpRequestInput httpRequestInput = resolverHttpRequestInputCreator.createResolverHttpRequestInput( context.getRequest() ); return resolverHttpRequestInputXMLCreator.buildResolverInputXML( httpRequestInput ); } private void addUserInput( ResolverContext context, XMLBuilder xmlDoc ) { xmlDoc.getCurrentElement().addContent( getUserXMLAsContent( context ) ); } private Content getUserXMLAsContent( ResolverContext context ) { UserXmlCreator userXmlCreator = new UserXmlCreator(); userXmlCreator.setAdminConsoleStyle( false ); userXmlCreator.setIncludeUserFields( true ); userXmlCreator.wrappUserFieldsInBlockElement( false ); UserEntity user = context.getUser(); Document userXMLInput; if ( user == null ) { userXMLInput = userXmlCreator.createEmptyUserDocument(); } else { userXMLInput = userXmlCreator.createUserDocument( user, false, false ); } return userXMLInput.getRootElement().detach(); } public void setResolverHttpRequestInputCreator( ResolverHttpRequestInputCreator resolverHttpRequestInputCreator ) { this.resolverHttpRequestInputCreator = resolverHttpRequestInputCreator; } @Autowired public void setResolverHttpRequestInputXMLCreator( ResolverHttpRequestInputXMLCreator resolverHttpRequestInputXMLCreator ) { this.resolverHttpRequestInputXMLCreator = resolverHttpRequestInputXMLCreator; } @Autowired public void setResolverInputCreator( ResolverHttpRequestInputCreator resolverHttpRequestInputCreator ) { this.resolverHttpRequestInputCreator = resolverHttpRequestInputCreator; } }