You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/07/10 18:30:03 UTC
svn commit: r793022 -
/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/
Author: simoneg
Date: Fri Jul 10 16:30:02 2009
New Revision: 793022
URL: http://svn.apache.org/viewvc?rev=793022&view=rev
Log:
LABS-352 : experimental interfaces for "pieces".
Added:
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BasicOutputPiece.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BeanAwarePiece.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/FormAwarePiece.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlFormPiece.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlOutputPiece.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlPieces.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/NodeAwarePiece.java
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BasicOutputPiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BasicOutputPiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BasicOutputPiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BasicOutputPiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,38 @@
+package org.apache.magma.website.beansview.pieces;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.conversion.Converter;
+import org.apache.magma.conversion.Converters;
+import org.apache.magma.i18n.Formatter;
+import org.apache.magma.i18n.Formatters;
+
+public abstract class BasicOutputPiece implements HtmlOutputPiece<Object>, BeanAwarePiece {
+
+ public void output(Object value, Writer output) {
+ try {
+ PropertyInfo property = getProperty();
+ if (property == null) {
+ Formatter formatter = Formatters.getFormatterFor(value.getClass());
+ if (formatter != null) {
+ output.write(formatter.to(value));
+ return;
+ }
+ Converter converter = Converters.getConverterFor(value.getClass());
+ if (converter != null) {
+ output.write(converter.to(value));
+ return;
+ }
+ output.write(value.toString());
+ return;
+ }
+ output.write(property.toUser(value));
+ } catch (IOException e) {
+ throw new MagmaException(e, "Error rendering piece");
+ }
+ }
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BeanAwarePiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BeanAwarePiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BeanAwarePiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/BeanAwarePiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,36 @@
+package org.apache.magma.website.beansview.pieces;
+
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.website.beansview.ShowBean;
+
+public interface BeanAwarePiece {
+
+ public Object getBean();
+ public PropertyInfo getProperty();
+
+ public static aspect BeanAwarePieceImpl {
+ private Object BeanAwarePiece.bean;
+ private PropertyInfo BeanAwarePiece.property;
+
+ public Object BeanAwarePiece.getBean() {
+ return bean;
+ }
+
+ public PropertyInfo BeanAwarePiece.getProperty() {
+ return property;
+ }
+ }
+
+ public static aspect BeanAwarePieceWormHole {
+ after(FieldNode node, ShowBean sb) returning(BeanAwarePiece p) :
+ execution(public * BeanAwarePiece+.createFor(..)) &&
+ cflow(execution(* ShowBean+.createFieldNodeOutput(FieldNode, ..)) && args(node, ..) && this(sb)) {
+
+ p.bean = sb.getBean();
+ p.property = node.getProperty();
+ }
+ }
+
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/FormAwarePiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/FormAwarePiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/FormAwarePiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/FormAwarePiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,29 @@
+package org.apache.magma.website.beansview.pieces;
+
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.website.beansview.ShowBean;
+import org.apache.magma.website.beansview.SmartForm;
+
+public interface FormAwarePiece {
+
+ public SmartForm getForm();
+
+ public static aspect FormAwarePieceImpl {
+ private SmartForm FormAwarePiece.form = null;
+
+ public SmartForm FormAwarePiece.getForm() {
+ return form;
+ }
+ }
+
+ public static aspect FormAwarePieceWormHole {
+ after(SmartForm form) returning(FormAwarePiece p) :
+ execution(public * FormAwarePiece+.createFor(..)) &&
+ cflow(execution(* SmartForm.doShow(..)) && this(form)) {
+
+ p.form = form;
+
+ }
+ }
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlFormPiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlFormPiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlFormPiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlFormPiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,16 @@
+package org.apache.magma.website.beansview.pieces;
+
+import java.io.Writer;
+import java.util.Map;
+
+public interface HtmlFormPiece<T> {
+
+ public boolean handles(Class<?> clazz);
+
+ public HtmlFormPiece<T> createFor(Class<? extends T> clazz);
+
+ public void createFormInput(T value, String id, Writer output);
+
+ public T parse(Map<String, String> binding, String id);
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlOutputPiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlOutputPiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlOutputPiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlOutputPiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,13 @@
+package org.apache.magma.website.beansview.pieces;
+
+import java.io.Writer;
+
+public interface HtmlOutputPiece<T> {
+
+ public boolean outputs(Class<?> clazz);
+
+ public HtmlOutputPiece<T> createFor(Class<? extends T> clazz);
+
+ public void output(T value, Writer output);
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlPieces.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlPieces.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlPieces.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/HtmlPieces.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,29 @@
+package org.apache.magma.website.beansview.pieces;
+
+import java.util.Iterator;
+
+import org.apache.magma.basics.services.ServiceFinder;
+import org.apache.magma.conversion.Converter;
+
+public class HtmlPieces {
+
+ public static <T> HtmlOutputPiece<T> outputFor(Class<T> clazz) {
+ Iterator<HtmlOutputPiece> providers = ServiceFinder.findProviders(HtmlOutputPiece.class);
+ while (providers.hasNext()) {
+ HtmlOutputPiece piece = providers.next();
+ if (piece.outputs(clazz)) return piece.createFor(clazz);
+ }
+ return null;
+ }
+
+ public static <T> HtmlFormPiece<T> formFor(Class<T> clazz) {
+ Iterator<HtmlFormPiece> providers = ServiceFinder.findProviders(HtmlFormPiece.class);
+ while (providers.hasNext()) {
+ HtmlFormPiece piece = providers.next();
+ if (piece.handles(clazz)) return piece.createFor(clazz);
+ }
+ return null;
+ }
+
+
+}
Added: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/NodeAwarePiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/NodeAwarePiece.java?rev=793022&view=auto
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/NodeAwarePiece.java (added)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/pieces/NodeAwarePiece.java Fri Jul 10 16:30:02 2009
@@ -0,0 +1,28 @@
+package org.apache.magma.website.beansview.pieces;
+
+import org.apache.magma.view.tree.FieldNode;
+import org.apache.magma.website.beansview.ShowBean;
+
+public interface NodeAwarePiece {
+
+ public FieldNode getFieldNode();
+
+ public static aspect NodeAwarePieceImpl {
+ private FieldNode NodeAwarePiece.node = null;
+
+ public FieldNode NodeAwarePiece.getFieldNode() {
+ return node;
+ }
+ }
+
+ public static aspect NodeAwarePieceWormHole {
+ after(FieldNode node) returning(NodeAwarePiece p) :
+ execution(public * NodeAwarePiece+.createFor(..)) &&
+ cflow(execution(* ShowBean.createFieldNodeOutput(FieldNode, ..)) && args(node, ..)) {
+
+ p.node = node;
+
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org