From: <die...@us...> - 2010-05-21 06:27:29
|
Revision: 2523 http://openutils.svn.sourceforge.net/openutils/?rev=2523&view=rev Author: diego_schivo Date: 2010-05-21 06:27:22 +0000 (Fri, 21 May 2010) Log Message: ----------- openutils-mgnlexpressions: ExpressionProviderManager Modified Paths: -------------- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/configuration/ContextMenuManager.java trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/configuration/ExpressionProviderManager.java trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/pages/ExpressionPicker.java trunk/openutils-mgnlexpressions/src/main/resources/mgnl-bootstrap/expressions/config.modules.expressions.expressionProviders.examples.xml Modified: trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/configuration/ContextMenuManager.java =================================================================== --- trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/configuration/ContextMenuManager.java 2010-05-20 16:46:59 UTC (rev 2522) +++ trunk/openutils-mgnlcontextmenu/src/main/java/net/sourceforge/openutils/mgnlcontextmenu/configuration/ContextMenuManager.java 2010-05-21 06:27:22 UTC (rev 2523) @@ -46,7 +46,7 @@ return Components.getSingleton(ContextMenuManager.class); } - private Logger log = LoggerFactory.getLogger(ContextMenuManager.class); + private Logger log = LoggerFactory.getLogger(getClass()); private final List<ContextMenu> menus = new ArrayList<ContextMenu>(); Modified: trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/configuration/ExpressionProviderManager.java =================================================================== --- trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/configuration/ExpressionProviderManager.java 2010-05-20 16:46:59 UTC (rev 2522) +++ trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/configuration/ExpressionProviderManager.java 2010-05-21 06:27:22 UTC (rev 2523) @@ -23,18 +23,15 @@ import info.magnolia.cms.core.Content; import info.magnolia.cms.util.ContentUtil; import info.magnolia.cms.util.NodeDataUtil; -import info.magnolia.content2bean.Content2BeanException; -import info.magnolia.content2bean.Content2BeanUtil; -import info.magnolia.content2bean.TransformationState; -import info.magnolia.content2bean.impl.Content2BeanTransformerImpl; import info.magnolia.objectfactory.Components; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Map; -import org.apache.commons.beanutils.ConstructorUtils; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -49,99 +46,54 @@ return Components.getSingleton(ExpressionProviderManager.class); } - private final List<ExpressionProvider> expressionProviders = new ArrayList<ExpressionProvider>(); + private Logger log = LoggerFactory.getLogger(getClass()); - @Override - protected void onRegister(Content defNode) - { - for (Iterator iter = ContentUtil.getAllChildren(defNode).iterator(); iter.hasNext();) - { - Content expressionProviderNode = (Content) iter.next(); - ExpressionProviderDefinition definition = new RepositoryExpressionProviderDefinition(expressionProviderNode); - registerDefinition(definition); - } + private final List<ExpressionProvider> providers = new ArrayList<ExpressionProvider>(); - } - - public void registerDefinition(ExpressionProviderDefinition definition) - { - expressionProviders.add(definition.newInstance()); - } - + /** + * {@inheritDoc} + */ @Override protected void onClear() { - expressionProviders.clear(); + providers.clear(); } /** - * Returns the expressionProviders. - * @return the expressionProviders + * {@inheritDoc} */ - public List<ExpressionProvider> getExpressionProviders() + @SuppressWarnings("unchecked") + @Override + protected void onRegister(Content defNode) { - return expressionProviders; - } - - public static interface ExpressionProviderDefinition - { - - public String getName(); - - public ExpressionProvider newInstance(); - } - - public static class RepositoryExpressionProviderDefinition implements ExpressionProviderDefinition - { - - private Content node; - - public RepositoryExpressionProviderDefinition(Content node) + for (Iterator iter = ContentUtil.getAllChildren(defNode).iterator(); iter.hasNext();) { - this.node = node; - } - - public String getName() - { - return NodeDataUtil.getString(this.node, "name", this.node.getName()); - } - - public ExpressionProvider newInstance() - { + Content providerNode = (Content) iter.next(); + String providerClassName = StringUtils.defaultIfEmpty( + NodeDataUtil.getString(providerNode, "class"), + RepositoryExpressionProvider.class.getName()); try { - return (ExpressionProvider) Content2BeanUtil.toBean(node, true, new Content2BeanTransformerImpl() - { - - @Override - public Object newBeanInstance(TransformationState state, Map properties) - throws Content2BeanException - { - if (state.getLevel() == 1) - { - try - { - return ConstructorUtils.invokeConstructor( - state.getCurrentType().getType(), - new Object[]{ - node - }); - } - catch (Exception e) - { - throw new Content2BeanException("no proper constructor found", e); - } - } - - return super.newBeanInstance(state, properties); - } - }); + Class providerClass = Class.forName(providerClassName); + providers.add((ExpressionProvider) providerClass + .getConstructor(Content.class) + .newInstance(providerNode)); } - catch (Content2BeanException e) + catch (Exception e) { - throw new RuntimeException(this.getName(), e); + log.error("Cannot instantiate expression provider " + providerNode.getName(), e); } } + } + /** + * Returns the providers. + * @return the providers + */ + public List<ExpressionProvider> getProviders() + { + return providers; + } + } Modified: trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/pages/ExpressionPicker.java =================================================================== --- trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/pages/ExpressionPicker.java 2010-05-20 16:46:59 UTC (rev 2522) +++ trunk/openutils-mgnlexpressions/src/main/java/net/sourceforge/openutils/mgnlexpressions/pages/ExpressionPicker.java 2010-05-21 06:27:22 UTC (rev 2523) @@ -61,7 +61,7 @@ @Override public String show() { - expressionProviders = ExpressionProviderManager.getInstance().getExpressionProviders(); + expressionProviders = ExpressionProviderManager.getInstance().getProviders(); return super.show(); } Modified: trunk/openutils-mgnlexpressions/src/main/resources/mgnl-bootstrap/expressions/config.modules.expressions.expressionProviders.examples.xml =================================================================== --- trunk/openutils-mgnlexpressions/src/main/resources/mgnl-bootstrap/expressions/config.modules.expressions.expressionProviders.examples.xml 2010-05-20 16:46:59 UTC (rev 2522) +++ trunk/openutils-mgnlexpressions/src/main/resources/mgnl-bootstrap/expressions/config.modules.expressions.expressionProviders.examples.xml 2010-05-21 06:27:22 UTC (rev 2523) @@ -9,9 +9,6 @@ <sv:property sv:name="jcr:uuid" sv:type="String"> <sv:value>67ecda65-9d9e-45c6-89f8-af5234369024</sv:value> </sv:property> - <sv:property sv:name="class" sv:type="String"> - <sv:value>net.sourceforge.openutils.mgnlexpressions.configuration.RepositoryExpressionProvider</sv:value> - </sv:property> <sv:property sv:name="jcr:createdBy" sv:type="String"> <sv:value>admin</sv:value> </sv:property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |