JBoss Rich Faces SVN: r17116 - root/cdk/trunk/bom.
by richfaces-svn-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2010-05-18 20:44:27 -0400 (Tue, 18 May 2010)
New Revision: 17116
Modified:
root/cdk/trunk/bom/pom.xml
Log:
Updated to latest richfaces-parent release 1
Modified: root/cdk/trunk/bom/pom.xml
===================================================================
--- root/cdk/trunk/bom/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
+++ root/cdk/trunk/bom/pom.xml 2010-05-19 00:44:27 UTC (rev 17116)
@@ -12,7 +12,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
14 years, 4 months
JBoss Rich Faces SVN: r17115 - in root: build/resources/trunk/checkstyle and 6 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2010-05-18 20:41:43 -0400 (Tue, 18 May 2010)
New Revision: 17115
Modified:
root/build/bom/trunk/pom.xml
root/build/resources/trunk/checkstyle/pom.xml
root/commons/trunk/bom/pom.xml
root/commons/trunk/parent/pom.xml
root/commons/trunk/pom.xml
root/core/trunk/bom/pom.xml
root/core/trunk/parent/pom.xml
root/core/trunk/pom.xml
Log:
Updated to latest release of richfaces-parent 1.
Modified: root/build/bom/trunk/pom.xml
===================================================================
--- root/build/bom/trunk/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/build/bom/trunk/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<description>
Modified: root/build/resources/trunk/checkstyle/pom.xml
===================================================================
--- root/build/resources/trunk/checkstyle/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/build/resources/trunk/checkstyle/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<groupId>org.richfaces</groupId>
Modified: root/commons/trunk/bom/pom.xml
===================================================================
--- root/commons/trunk/bom/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/commons/trunk/bom/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<description>
Modified: root/commons/trunk/parent/pom.xml
===================================================================
--- root/commons/trunk/parent/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/commons/trunk/parent/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<description>
Modified: root/commons/trunk/pom.xml
===================================================================
--- root/commons/trunk/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/commons/trunk/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<groupId>org.richfaces.commons</groupId>
Modified: root/core/trunk/bom/pom.xml
===================================================================
--- root/core/trunk/bom/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/core/trunk/bom/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<description>
Modified: root/core/trunk/parent/pom.xml
===================================================================
--- root/core/trunk/parent/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/core/trunk/parent/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<description>
Modified: root/core/trunk/pom.xml
===================================================================
--- root/core/trunk/pom.xml 2010-05-19 00:40:31 UTC (rev 17114)
+++ root/core/trunk/pom.xml 2010-05-19 00:41:43 UTC (rev 17115)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-parent</artifactId>
- <version>1-SNAPSHOT</version>
+ <version>1</version>
</parent>
<groupId>org.richfaces.core</groupId>
14 years, 4 months
JBoss Rich Faces SVN: r17114 - in root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces: renderkit and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-05-18 20:40:31 -0400 (Tue, 18 May 2010)
New Revision: 17114
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
Log:
https://jira.jboss.org/browse/RF-7856
https://jira.jboss.org/browse/RF-8630
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2010-05-19 00:33:46 UTC (rev 17113)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2010-05-19 00:40:31 UTC (rev 17114)
@@ -33,7 +33,6 @@
import javax.faces.component.visit.VisitContext;
import javax.faces.component.visit.VisitResult;
import javax.faces.context.FacesContext;
-import javax.faces.render.Renderer;
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.model.Range;
@@ -48,7 +47,7 @@
* @author Anton Belevich
*
*/
-public class UIExtendedDataTable extends UIDataTableBase implements MetaComponentResolver {
+public class UIExtendedDataTable extends UIDataTableBase implements MetaComponentResolver, MetaComponentEncoder {
public static final String SCROLL = "scroll";
public static final String HEADER = "header";
@@ -69,50 +68,6 @@
SUPPORTED_META_COMPONENTS.add(BODY);
}
- private final class MetaComponentRenderVisitCallback implements VisitCallback {
-
- private VisitCallback delegateCallback;
-
- public MetaComponentRenderVisitCallback(VisitCallback delegateCallback) {
- super();
- this.delegateCallback = delegateCallback;
- }
-
- public VisitResult visit(VisitContext visitContext, UIComponent target) {
- if (UIExtendedDataTable.this.equals(target)) {
- FacesContext context = visitContext.getFacesContext();
- String metaComponentId = (String) context.getAttributes().get(ExtendedVisitContext.META_COMPONENT_ID);
- if (SUPPORTED_META_COMPONENTS.contains(metaComponentId)) {
-
- if (SCROLL.equals(metaComponentId)) {
- Map<String, Object> attributes = getAttributes();
- Integer submittedClientFirst = (Integer) attributes.remove(SUBMITTED_CLIENT_FIRST);
- if (submittedClientFirst != null) {
- attributes.put(OLD_CLIENT_FIRST, getClientFirst());
- setClientFirst(submittedClientFirst);
- }
- }
-
- Renderer renderer = getRenderer(context);
- try {
- ((MetaComponentRenderer) renderer).encodeMetaComponent(context, target, metaComponentId);
- } catch (IOException e) {
- if (RENDERKIT_LOG.isErrorEnabled()) {
- RENDERKIT_LOG.error(e.getMessage());
- }
- if (RENDERKIT_LOG.isDebugEnabled()) {
- RENDERKIT_LOG.debug(e.getMessage(), e);
- }
- }
-
- return VisitResult.REJECT;
- }
- }
-
- return delegateCallback.visit(visitContext, target);
- }
- }
-
protected enum PropertyKeys {
clientFirst, clientRows
}
@@ -136,6 +91,23 @@
return null;
}
+ public void encodeMetaComponent(FacesContext context, String metaComponentId) throws IOException {
+ if (SUPPORTED_META_COMPONENTS.contains(metaComponentId)) {
+
+ if (SCROLL.equals(metaComponentId)) {
+ Map<String, Object> attributes = getAttributes();
+ Integer submittedClientFirst = (Integer) attributes.remove(SUBMITTED_CLIENT_FIRST);
+ if (submittedClientFirst != null) {
+ attributes.put(OLD_CLIENT_FIRST, getClientFirst());
+ setClientFirst(submittedClientFirst);
+ }
+ }
+
+ MetaComponentRenderer renderer = (MetaComponentRenderer) getRenderer(context);
+ renderer.encodeMetaComponent(context, this, metaComponentId);
+ }
+ }
+
/* (non-Javadoc)
* @see org.richfaces.component.UIDataAdaptor#visitFixedChildren(javax.faces.component.visit.VisitContext, javax.faces.component.visit.VisitCallback, boolean)
*/
@@ -146,11 +118,9 @@
if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
//TODO nick - call preEncodeBegin(...) and emit PreRenderEvent
- MetaComponentRenderVisitCallback rendererCallback = new MetaComponentRenderVisitCallback(callback);
-
VisitResult visitResult;
- visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, rendererCallback, HEADER);
+ visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, HEADER);
if (visitResult == VisitResult.ACCEPT) {
//TODO nick - visit header?
@@ -158,7 +128,7 @@
return true;
}
- visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, rendererCallback, FOOTER);
+ visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, FOOTER);
if (visitResult == VisitResult.ACCEPT) {
//TODO nick - visit footer?
@@ -176,21 +146,17 @@
}
@Override
- protected boolean visitDataChildren(VisitContext visitContext, final VisitCallback callback, boolean resetKeyBeforeVisit) {
- if (visitContext instanceof ExtendedVisitContext) {
+ protected boolean visitDataChildren(VisitContext visitContext, final VisitCallback callback, boolean visitRows) {
+ if (visitContext instanceof ExtendedVisitContext && visitRows) {
ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) visitContext;
if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
//TODO nick - call preEncodeBegin(...) and emit PreRenderEvent
- if (resetKeyBeforeVisit) {
- setRowKey(visitContext.getFacesContext(), null);
- }
+ setRowKey(visitContext.getFacesContext(), null);
- MetaComponentRenderVisitCallback rendererCallback = new MetaComponentRenderVisitCallback(callback);
-
VisitResult result;
- result = extendedVisitContext.invokeMetaComponentVisitCallback(this, rendererCallback, SCROLL);
+ result = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, SCROLL);
if (result == VisitResult.ACCEPT) {
//TODO nick - visit scroll?
@@ -200,7 +166,7 @@
//TODO nick - scroll vs body?
- result = extendedVisitContext.invokeMetaComponentVisitCallback(this, rendererCallback, BODY);
+ result = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, BODY);
if (result == VisitResult.ACCEPT) {
//TODO nick - visit body?
@@ -214,7 +180,7 @@
}
}
- return super.visitDataChildren(visitContext, callback, resetKeyBeforeVisit);
+ return super.visitDataChildren(visitContext, callback, visitRows);
}
/**
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-19 00:33:46 UTC (rev 17113)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-19 00:40:31 UTC (rev 17114)
@@ -90,8 +90,6 @@
private Part current;
private Iterator<Part> partIterator;
-
-
public RendererState(FacesContext context, UIDataTableBase table) {
super(context);
this.table = table;
@@ -152,6 +150,306 @@
}
+ private class BaseTableEncoderStrategy {
+
+ void encodeStartUpdate(FacesContext context, String targetId) throws IOException {
+
+ }
+
+ void encodeEndUpdate(FacesContext context) throws IOException {
+
+ }
+
+ private void encodeHeaderOrFooterCell(FacesContext context, ResponseWriter writer, UIComponent column,
+ String facetName) throws IOException {
+ if (column.isRendered()) {
+
+ String classAttribute = facetName + "Class";
+ writer.startElement(HTML.TD_ELEM, column);
+ if ("header".equals(facetName)) {
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-resizer-holder rich-extable-cell-width-"
+ + column.getId(), null);
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-resizer", null);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer
+ .writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + facetName + "-cell",
+ "rich-extable-cell-width-" + column.getId(), (String) column.getAttributes().get(classAttribute)),
+ null);
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-" + facetName + "-cell-content", null);
+ UIComponent facet = column.getFacet(facetName);
+ if (facet != null && facet.isRendered()) {
+ facet.encodeAll(context);
+ }
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ }
+
+ private void encodeHeaderOrFooter(RendererState state, String name) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+ if (table.isColumnFacetPresent(name)) {
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + name, (String) table
+ .getAttributes().get(name + "Class")), null);
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ for (state.startIterate(); state.hasNextPart();) {
+ Part part = state.nextPart();
+ PartName partName = part.getName();
+ Iterator<UIComponent> columns = part.getColumns().iterator();
+ if (columns.hasNext()) {
+ writer.startElement(HTML.TD_ELEM, table);
+ if (PartName.frozen.equals(partName) && "footer".equals(name)) {
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-footer-align", null);
+ }
+ writer.startElement(HTML.DIV_ELEM, table);
+ if (PartName.frozen.equals(partName)) {
+ if ("header".equals(name)) {
+ writer
+ .writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":frozenHeader", null);
+ }
+ } else {
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":" + name, null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable"
+ + ("footer".equals(name) ? "-footer" : "") + "-part rich-extable-part-width", null);
+ }
+
+ String tableId = table.getClientId(context) + ":cf" + name.charAt(0) + partName.name().charAt(0);
+ encodeStartUpdate(context, tableId);
+
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, tableId, null);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ while (columns.hasNext()) {
+ encodeHeaderOrFooterCell(context, writer, columns.next(), name);
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+
+ encodeEndUpdate(context);
+
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+ }
+
+ public void encodeHeader(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+
+ UIComponent header = table.getFacet("header");
+ if (header != null && header.isRendered()) {
+ String elementId = table.getClientId(context) + ":tfh";
+
+ encodeStartUpdate(context, elementId);
+
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, elementId, null);
+ header.encodeAll(context);
+ writer.endElement(HTML.DIV_ELEM);
+
+ encodeEndUpdate(context);
+ }
+
+ encodeHeaderOrFooter(state, "header");
+ }
+
+ public void encodeBody(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":b", null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body", null);
+ if (table.getRowCount() == 0) {
+ UIComponent facet = table.getFacet("noData");
+ if (facet != null && facet.isRendered()) {
+ facet.encodeAll(context);
+ } else {
+ Object noDataLabel = table.getAttributes().get("noDataLabel");
+ if (noDataLabel != null) {
+ writer.writeText(noDataLabel, "noDataLabel");
+ }
+ }
+ } else {
+ table.getAttributes().put("clientFirst", 0);
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-spacer", null);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ for (state.startIterate(); state.hasNextPart();) {
+ writer.startElement(HTML.TD_ELEM, table);
+ writer.startElement(HTML.DIV_ELEM, table);
+ PartName partName = state.nextPart().getName();
+ if (PartName.normal.equals(partName)) {
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":body", null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-part rich-extable-part-width", null);
+ }
+
+ String targetId = table.getClientId(context) + ":tbt" + partName.name().charAt(0);
+
+ encodeStartUpdate(context, targetId);
+
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, targetId, null);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":tb"
+ + partName.toString().charAt(0), null);
+ encodeRows(state);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+
+ encodeEndUpdate(context);
+
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+ writer.endElement(HTML.DIV_ELEM);
+ }
+
+ public void encodeFooter(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+
+ encodeHeaderOrFooter(state, "footer");
+
+ UIComponent footer = table.getFacet("footer");
+ if (footer != null && footer.isRendered()) {
+ String elementId = table.getClientId(context) + ":tff";
+
+ encodeStartUpdate(context, elementId);
+
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, elementId, null);
+ footer.encodeAll(context);
+ writer.endElement(HTML.DIV_ELEM);
+
+ encodeEndUpdate(context);
+ }
+ }
+
+ public void encodeMetaComponent(RendererState state, String metaComponentId) throws IOException {
+ if (UIExtendedDataTable.HEADER.equals(metaComponentId)) {
+ encodeHeader(state);
+ } else if (UIExtendedDataTable.FOOTER.equals(metaComponentId)) {
+ encodeFooter(state);
+ } else if (UIExtendedDataTable.BODY.equals(metaComponentId)) {
+ encodeBody(state);
+ } else {
+ throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
+ }
+ }
+ }
+
+ private class PartialTableEncoderStrategy extends BaseTableEncoderStrategy {
+ private void switchResponseWriter(FacesContext context, boolean writerState) {
+ ResponseWriter writer = context.getResponseWriter();
+ if (writer instanceof OnOffResponseWriter) {
+ ((OnOffResponseWriter) writer).setSwitchedOn(writerState);
+ }
+ }
+
+ private ResponseWriter install(FacesContext context) {
+ ResponseWriter writer = context.getResponseWriter();
+
+ assert !(writer instanceof OnOffResponseWriter);
+
+ context.setResponseWriter(new OnOffResponseWriter(writer));
+
+ return writer;
+ }
+
+ private void uninstall(FacesContext context, ResponseWriter initialResponseWriter) {
+ ResponseWriter writer = context.getResponseWriter();
+
+ assert (writer instanceof OnOffResponseWriter);
+
+ context.setResponseWriter(initialResponseWriter);
+ }
+
+ public void encodeHeader(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = install(context);
+ try {
+ super.encodeHeader(state);
+ } finally {
+ uninstall(context, writer);
+ }
+ };
+
+ public void encodeBody(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = install(context);
+ try {
+ super.encodeBody(state);
+ } finally {
+ uninstall(context, writer);
+ }
+ };
+
+ public void encodeFooter(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = install(context);
+ try {
+ super.encodeFooter(state);
+ } finally {
+ uninstall(context, writer);
+ }
+ };
+
+ void encodeStartUpdate(FacesContext context, String targetId) throws IOException {
+ switchResponseWriter(context, true);
+
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
+ }
+
+ void encodeEndUpdate(FacesContext context) throws IOException {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+
+ switchResponseWriter(context, false);
+ }
+ }
+
+ private BaseTableEncoderStrategy fullEncodeStrategy = new BaseTableEncoderStrategy();
+
+ private BaseTableEncoderStrategy partialEncodeStrategy = new PartialTableEncoderStrategy();
+
@Override
protected Class<? extends UIComponent> getComponentClass() {
return UIExtendedDataTable.class;
@@ -245,7 +543,8 @@
table.restoreOrigValue(context);
}
} else {
- throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
+ RendererState state = createRowHolder(context, component);
+ partialEncodeStrategy.encodeMetaComponent(state, metaComponentId);
}
}
@@ -257,15 +556,8 @@
writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(context), null);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable", (String) attributes.get("styleClass")), null);
getUtils().writeAttribute(writer, HTML.STYLE_ATTRIBUTE, attributes.get("style"));
- UIComponent header = component.getFacet("header");
- if (header != null && header.isRendered()) {
- writer.startElement(HTML.DIV_ELEM, component);
- header.encodeAll(context);
- writer.endElement(HTML.DIV_ELEM);
- }
}
-
@Override
public RendererState createRowHolder(FacesContext context, UIComponent component) {
return new RendererState(context, (UIDataTableBase) component);
@@ -274,27 +566,22 @@
@Override
protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent component)
throws IOException {
+
UIDataTableBase table = (UIDataTableBase) component;
Object key = table.getRowKey();
table.captureOrigValue(context);
table.setRowKey(context, null);
RendererState state = createRowHolder(context, table);
+ fullEncodeStrategy.encodeHeader(state);
encodeStyle(state);
- encodeHeaderOrFooter(state, "header");
- encodeBody(state);
- encodeHeaderOrFooter(state, "footer");
+ fullEncodeStrategy.encodeBody(state);
+ fullEncodeStrategy.encodeFooter(state);
table.setRowKey(context, key);
table.restoreOrigValue(context);
}
@Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
- UIComponent facet = component.getFacet("footer");
- if (facet != null && facet.isRendered()) {
- writer.startElement(HTML.DIV_ELEM, component);
- facet.encodeAll(context);
- writer.endElement(HTML.DIV_ELEM);
- }
writer.startElement(HTML.DIV_ELEM, component);
writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(context) + ":d", null);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-drag", null);
@@ -383,149 +670,6 @@
writer.endElement("style");
}
- private void encodeHeaderOrFooter(RendererState state, String name) throws IOException {
- FacesContext context = state.getContext();
- ResponseWriter writer = context.getResponseWriter();
- UIDataTableBase table = state.getRow();
- if (table.isColumnFacetPresent(name)) {
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + name, (String) table
- .getAttributes().get(name + "Class")), null);
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- for (state.startIterate(); state.hasNextPart();) {
- Part part = state.nextPart();
- PartName partName = part.getName();
- Iterator<UIComponent> columns = part.getColumns().iterator();
- if (columns.hasNext()) {
- writer.startElement(HTML.TD_ELEM, table);
- if (PartName.frozen.equals(partName) && "footer".equals(name)) {
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-footer-align", null);
- }
- writer.startElement(HTML.DIV_ELEM, table);
- if (PartName.frozen.equals(partName)) {
- if ("header".equals(name)) {
- writer
- .writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":frozenHeader", null);
- }
- } else {
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":" + name, null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable"
- + ("footer".equals(name) ? "-footer" : "") + "-part rich-extable-part-width", null);
- }
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- while (columns.hasNext()) {
- encodeHeaderOrFooterCell(context, writer, columns.next(), name);
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- }
- }
-
- private void encodeBody(RendererState state) throws IOException {
- FacesContext context = state.getContext();
- ResponseWriter writer = context.getResponseWriter();
- UIDataTableBase table = state.getRow();
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":b", null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body", null);
- if (table.getRowCount() == 0) {
- UIComponent facet = table.getFacet("noData");
- if (facet != null && facet.isRendered()) {
- facet.encodeAll(context);
- } else {
- Object noDataLabel = table.getAttributes().get("noDataLabel");
- if (noDataLabel != null) {
- writer.writeText(noDataLabel, "noDataLabel");
- }
- }
- } else {
- table.getAttributes().put("clientFirst", 0);
- writer.startElement(HTML.DIV_ELEM, table);
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-spacer", null);
- writer.endElement(HTML.DIV_ELEM);
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- for (state.startIterate(); state.hasNextPart();) {
- writer.startElement(HTML.TD_ELEM, table);
- writer.startElement(HTML.DIV_ELEM, table);
- PartName partName = state.nextPart().getName();
- if (PartName.normal.equals(partName)) {
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":body", null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-part rich-extable-part-width", null);
- }
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":tb"
- + partName.toString().charAt(0), null);
- encodeRows(state);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- }
- writer.endElement(HTML.DIV_ELEM);
- }
-
- private void encodeHeaderOrFooterCell(FacesContext context, ResponseWriter writer, UIComponent column,
- String facetName) throws IOException {
- if (column.isRendered()) {
-
- String classAttribute = facetName + "Class";
- writer.startElement(HTML.TD_ELEM, column);
- if ("header".equals(facetName)) {
- writer.startElement(HTML.DIV_ELEM, column);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-resizer-holder rich-extable-cell-width-"
- + column.getId(), null);
- writer.startElement(HTML.DIV_ELEM, column);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-resizer", null);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.DIV_ELEM);
- }
- writer.startElement(HTML.DIV_ELEM, column);
- writer
- .writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + facetName + "-cell",
- "rich-extable-cell-width-" + column.getId(), (String) column.getAttributes().get(classAttribute)),
- null);
- writer.startElement(HTML.DIV_ELEM, column);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-" + facetName + "-cell-content", null);
- UIComponent facet = column.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- facet.encodeAll(context);
- }
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- }
-
@Override
public void encodeRow(RowHolderBase rowHolder) throws IOException {
FacesContext context = rowHolder.getContext();
14 years, 4 months
JBoss Rich Faces SVN: r17113 - in root/core/trunk/impl/src/main/java/org/richfaces: renderkit and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-05-18 20:33:46 -0400 (Tue, 18 May 2010)
New Revision: 17113
Added:
root/core/trunk/impl/src/main/java/org/richfaces/renderkit/OnOffResponseWriter.java
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java
Log:
https://jira.jboss.org/browse/RF-7856
https://jira.jboss.org/browse/RF-8630
Modified: root/core/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java
===================================================================
--- root/core/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java 2010-05-19 00:33:41 UTC (rev 17112)
+++ root/core/trunk/impl/src/main/java/org/richfaces/context/PartialViewContextImpl.java 2010-05-19 00:33:46 UTC (rev 17113)
@@ -44,6 +44,7 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.richfaces.component.MetaComponentEncoder;
import org.richfaces.log.RichfacesLogger;
import org.slf4j.Logger;
@@ -416,22 +417,32 @@
* @see javax.faces.component.visit.VisitCallback#visit(javax.faces.component.visit.VisitContext, javax.faces.component.UIComponent)
*/
public VisitResult visit(VisitContext context, UIComponent target) {
- PartialResponseWriter writer = ctx.getPartialViewContext().getPartialResponseWriter();
+ String metaComponentId = (String) ctx.getAttributes().get(ExtendedVisitContext.META_COMPONENT_ID);
+ if (metaComponentId != null) {
+ MetaComponentEncoder encoder = (MetaComponentEncoder) target;
+ try {
+ encoder.encodeMetaComponent(ctx, metaComponentId);
+ } catch (Exception e) {
+ logException(e);
+ }
+ } else {
+ PartialResponseWriter writer = ctx.getPartialViewContext().getPartialResponseWriter();
- try {
- writer.startUpdate(target.getClientId(ctx));
try {
- // do the default behavior...
- target.encodeAll(ctx);
- } catch (Exception ce) {
- logException(ce);
+ writer.startUpdate(target.getClientId(ctx));
+ try {
+ // do the default behavior...
+ target.encodeAll(ctx);
+ } catch (Exception ce) {
+ logException(ce);
+ }
+
+ writer.endUpdate();
+ } catch (IOException e) {
+ logException(e);
}
-
- writer.endUpdate();
- } catch (IOException e) {
- logException(e);
}
-
+
// Once we visit a component, there is no need to visit
// its children, since processDecodes/Validators/Updates and
// encodeAll() already traverse the subtree. We return
Added: root/core/trunk/impl/src/main/java/org/richfaces/renderkit/OnOffResponseWriter.java
===================================================================
--- root/core/trunk/impl/src/main/java/org/richfaces/renderkit/OnOffResponseWriter.java (rev 0)
+++ root/core/trunk/impl/src/main/java/org/richfaces/renderkit/OnOffResponseWriter.java 2010-05-19 00:33:46 UTC (rev 17113)
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.faces.context.ResponseWriter;
+import javax.faces.context.ResponseWriterWrapper;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class OnOffResponseWriter extends ResponseWriterWrapper {
+
+ private static final Writer NO_OP_WRITER = new Writer() {
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ //do nothing
+ }
+
+ public void write(char[] cbuf) throws IOException {
+ //do nothing
+ };
+
+ public void write(int c) throws IOException {
+ //do nothing
+ };
+
+ public void write(String str) throws IOException {
+ //do nothing
+ };
+
+ public void write(String str, int off, int len) throws IOException {
+ //do nothing
+ };
+
+ @Override
+ public void flush() throws IOException {
+ //do nothing
+ }
+
+ @Override
+ public void close() throws IOException {
+ //do nothing
+ }
+ };
+
+ private boolean switchedOn = false;
+
+ private ResponseWriter wrappedWriter;
+
+ private ResponseWriter stubWriter;
+
+ public OnOffResponseWriter(ResponseWriter wrappedWriter) {
+ super();
+ this.wrappedWriter = wrappedWriter;
+ }
+
+ @Override
+ public ResponseWriter getWrapped() {
+ if (!switchedOn) {
+ if (stubWriter == null) {
+ stubWriter = wrappedWriter.cloneWithWriter(NO_OP_WRITER);
+ }
+
+ return stubWriter;
+ } else {
+ return wrappedWriter;
+ }
+ }
+
+ public void setSwitchedOn(boolean newState) {
+ switchedOn = newState;
+ }
+
+ public boolean isSwitchedOn() {
+ return switchedOn;
+ }
+}
14 years, 4 months
JBoss Rich Faces SVN: r17112 - root/commons/trunk/api/src/main/java/org/richfaces.
by richfaces-svn-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2010-05-18 20:33:41 -0400 (Tue, 18 May 2010)
New Revision: 17112
Modified:
root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java
root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java
Log:
Fixed two checkstyle issues from port from CDK.
Modified: root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java
===================================================================
--- root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java 2010-05-19 00:30:44 UTC (rev 17111)
+++ root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java 2010-05-19 00:33:41 UTC (rev 17112)
@@ -205,7 +205,10 @@
return java.util.logging.Level.WARNING;
case DEBUG:
return java.util.logging.Level.FINE;
+ default :{
+ //No level set
+ throw new IllegalArgumentException("Logging level must be set to obtain a logger");
+ }
}
- return java.util.logging.Level.FINEST;
}
}
Modified: root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java
===================================================================
--- root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java 2010-05-19 00:30:44 UTC (rev 17111)
+++ root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java 2010-05-19 00:33:41 UTC (rev 17112)
@@ -30,7 +30,7 @@
*/
public final class LogFactory {
- private static final Logger defaultLogger = new JavaLogger();
+ private static final Logger DEFAULT_LOGGER = new JavaLogger();
private LogFactory(){
// This class is not instantiable.
@@ -42,7 +42,7 @@
* @return
*/
public static Logger getLogger(){
- return defaultLogger;
+ return DEFAULT_LOGGER;
}
/**
14 years, 4 months
JBoss Rich Faces SVN: r17111 - in root/cdk/trunk/plugins: generator/src/main/java/org/richfaces/cdk and 7 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2010-05-18 20:30:44 -0400 (Tue, 18 May 2010)
New Revision: 17111
Added:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/TagLibProcessor.java
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/package-info.java
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/BehaviorProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/CdkAnnotationProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ConverterProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ValidatorProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml
Log:
CODING IN PROGRESS - issue RF-7736: Library model verifier.
https://jira.jboss.org/jira/browse/RF-7736
Modified: root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
===================================================================
--- root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -37,18 +37,50 @@
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.PACKAGE)
public @interface TagLibrary {
- public String tlibVersion();
+
+ /**
+ * <p class="changed_added_4_0">Library URI, the same used for JSP and Facelets.</p>
+ * @return
+ */
+ public String uri();
- public String validatorClass();
+ /**
+ * <p class="changed_added_4_0">Implementation version of the generated taglib.</p>
+ * @return
+ */
+ public String tlibVersion() default "";
- public String displayName();
+ /**
+ * <p class="changed_added_4_0">JSP taglib validator. TODO - ? extends Validator ?</p>
+ * @return
+ */
+ public Class<?> validatorClass() default NONE.class;
- public String jspVersion();
+ /**
+ * <p class="changed_added_4_0">Servlet ... listener used by JSP library. TODO - ? extends {@link EventListener} ?</p>
+ * @return
+ */
+ public Class<?> listenerClass() default NONE.class;
- public String listenerClass();
+ /**
+ * <p class="changed_added_4_0">Library description to use by IDE</p>
+ * @return
+ */
+ public String displayName() default "";
+ /**
+ * <p class="changed_added_4_0">Java Server Pages version for generated tld.</p>
+ * @return
+ */
+ public String jspVersion() default "2.0";
+
+
+ /**
+ * <p class="changed_added_4_0">Library short name ( default prefix )</p>
+ * @return
+ */
public String shortName();
- public String uri();
+ public static final class NONE {}
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -24,6 +24,7 @@
package org.richfaces.cdk;
import org.richfaces.cdk.model.ClassName;
+import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.FacesId;
import org.richfaces.cdk.model.InvalidNameException;
import org.richfaces.cdk.model.RendererModel;
@@ -106,6 +107,15 @@
public String inferRendererBaseName(RendererModel.Type type);
public FacesId inferBehaviorType(ClassName targetClass);
+
public ClassName inferBehaviorClass(FacesId id);
+
+
+ public String inferTaglibUri(ComponentLibrary library);
+
+
+ public String inferTaglibName(String uri);
+
+
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -1,6 +1,7 @@
package org.richfaces.cdk;
import org.richfaces.cdk.model.ClassName;
+import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.FacesId;
import org.richfaces.cdk.model.InvalidNameException;
import org.richfaces.cdk.model.Name;
@@ -8,6 +9,7 @@
import org.richfaces.cdk.model.RendererModel;
import org.richfaces.cdk.util.Strings;
+import java.net.URI;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
@@ -26,7 +28,7 @@
private static final String[] COMPONENT_PREFIXES = { UI, ABSTRACT };
// TODO - inject base name.
- private String baseName;
+ private String baseName ;//= "org.richfaces";
public RichFacesConventions() {
}
@@ -239,4 +241,33 @@
return new FacesId(name.toString());
}
+
+ @Override
+ public String inferTaglibName(String uri) throws InvalidNameException {
+ try {
+ URI taglibUri = URI.create(uri);
+ String path = taglibUri.getPath();
+ if(null != path){
+ int lastIndexOfPathSeparator = path.lastIndexOf('/');
+ if(lastIndexOfPathSeparator>=0){
+ path = path.substring(lastIndexOfPathSeparator+1);
+ }
+ int indexOfDot = path.indexOf('.');
+ if(indexOfDot>0){
+ path = path.substring(0, indexOfDot);
+ }
+ return path;
+ } else {
+ throw new InvalidNameException("Invalid taglib uri, no path defined " + uri );
+ }
+ } catch (IllegalArgumentException e) {
+ throw new InvalidNameException("Invalid taglib uri " + uri + " , " + e.getMessage());
+ }
+ }
+
+ @Override
+ public String inferTaglibUri(ComponentLibrary library) {
+ // TODO infer name from library base names.
+ return "http://richfaces.org/a4j";
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -36,6 +36,7 @@
import org.richfaces.cdk.apt.processors.DescriptionProcessor;
import org.richfaces.cdk.apt.processors.DescriptionProcessorImpl;
import org.richfaces.cdk.apt.processors.RendererProcessor;
+import org.richfaces.cdk.apt.processors.TagLibProcessor;
import org.richfaces.cdk.apt.processors.ValidatorProcessor;
import javax.annotation.processing.Processor;
@@ -59,6 +60,7 @@
setBinder.addBinding().to(RendererProcessor.class);
setBinder.addBinding().to(ConverterProcessor.class);
setBinder.addBinding().to(ValidatorProcessor.class);
+ setBinder.addBinding().to(TagLibProcessor.class);
bind(Processor.class).to(CdkProcessor.class);
bind(AttributesProcessor.class).to(AttributesProcessorImpl.class);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -96,6 +96,7 @@
for (ModelBuilder builder : builders) {
builder.build();
}
+ // validator should be called even if previvous phases finish with errors, to collect all possible problems.
validator.verify(library);
} else if (0 == log.getErrorCount()) {
// processing over, generate files.
@@ -109,10 +110,10 @@
try {
Set<? extends Element> rootElements = environment.getRootElements();
for (Element element : rootElements) {
- if (ElementKind.CLASS.equals(element.getKind())
+ if ((ElementKind.CLASS.equals(element.getKind()) || ElementKind.PACKAGE.equals(element.getKind()))
&& null != element.getAnnotation(processor.getProcessedAnnotation())){
try {
- processor.process((TypeElement) element, library);
+ processor.process(element, library);
} catch (CdkProcessingException e) {
sendError(element, e);
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/BehaviorProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/BehaviorProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/BehaviorProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -26,6 +26,7 @@
import java.lang.annotation.Annotation;
import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import org.richfaces.cdk.CdkProcessingException;
@@ -43,16 +44,16 @@
public class BehaviorProcessor extends ProcessorBase implements CdkAnnotationProcessor {
@Override
- public void process(TypeElement element, ComponentLibrary library) throws CdkProcessingException {
+ public void process(Element element, ComponentLibrary library) throws CdkProcessingException {
JsfBehavior behavior = element.getAnnotation(JsfBehavior.class);
BehaviorModel behaviorModel = new BehaviorModel(new FacesId(behavior.id()));
- setClassNames(element, behaviorModel, behavior.generate());
+ setClassNames((TypeElement) element, behaviorModel, behavior.generate());
setTagInfo(behavior.tag(), behaviorModel);
AttributesProcessor attributesProcessor = getAttributeProcessor();
attributesProcessor.processXmlFragment(behaviorModel, behavior.attributes());
- attributesProcessor.processType(behaviorModel, element);
+ attributesProcessor.processType(behaviorModel, (TypeElement) element);
setDescription(behaviorModel, behavior.description(), getDocComment(element));
library.getBehaviors().add(behaviorModel);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/CdkAnnotationProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/CdkAnnotationProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/CdkAnnotationProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -23,12 +23,13 @@
package org.richfaces.cdk.apt.processors;
+import java.lang.annotation.Annotation;
+
+import javax.lang.model.element.Element;
+
import org.richfaces.cdk.CdkProcessingException;
import org.richfaces.cdk.model.ComponentLibrary;
-import javax.lang.model.element.TypeElement;
-import java.lang.annotation.Annotation;
-
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
@@ -43,7 +44,7 @@
* @param library TODO
* @throws CdkProcessingException
*/
- public void process(TypeElement element, ComponentLibrary library) throws CdkProcessingException;
+ public void process(Element element, ComponentLibrary library) throws CdkProcessingException;
public Class<? extends Annotation> getProcessedAnnotation();
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Set;
+import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.MirroredTypeException;
import javax.lang.model.type.MirroredTypesException;
@@ -71,7 +72,7 @@
@Inject
private RendererProcessor rendererProcessor;
- public void process(TypeElement componentElement, ComponentLibrary library) {
+ public void process(Element componentElement, ComponentLibrary library) {
final JsfComponent annotation = componentElement.getAnnotation(JsfComponent.class);
if (annotation == null) {
return;
@@ -81,8 +82,8 @@
ComponentModel component = new ComponentModel();
// Should that component be generated ?
- setClassNames(componentElement, component, annotation.generate());
- setComponentProperties(componentElement, component, annotation);
+ setClassNames((TypeElement) componentElement, component, annotation.generate());
+ setComponentProperties((TypeElement) componentElement, component, annotation);
library.getComponents().add(component);
// Process the second level annotations.
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ConverterProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ConverterProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ConverterProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -21,6 +21,13 @@
package org.richfaces.cdk.apt.processors;
+import java.lang.annotation.Annotation;
+
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.MirroredTypeException;
+
import org.richfaces.cdk.CdkProcessingException;
import org.richfaces.cdk.annotations.JsfConverter;
import org.richfaces.cdk.model.ClassName;
@@ -28,11 +35,6 @@
import org.richfaces.cdk.model.ConverterModel;
import org.richfaces.cdk.model.FacesId;
-import javax.annotation.processing.SupportedAnnotationTypes;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.MirroredTypeException;
-import java.lang.annotation.Annotation;
-
/**
* @author akolonitsky
* @since Jan 4, 2010
@@ -41,7 +43,7 @@
public class ConverterProcessor extends ProcessorBase implements CdkAnnotationProcessor {
@Override
- public void process(TypeElement element, ComponentLibrary library) throws CdkProcessingException {
+ public void process(Element element, ComponentLibrary library) throws CdkProcessingException {
JsfConverter converter = element.getAnnotation(JsfConverter.class);
ConverterModel converterModel = new ConverterModel();
@@ -63,8 +65,8 @@
AttributesProcessor attributesProcessor = getAttributeProcessor();
attributesProcessor.processXmlFragment(converterModel, converter.attributes());
- attributesProcessor.processType(converterModel, element);
- setClassNames(element, converterModel, converter.generate());
+ attributesProcessor.processType(converterModel, (TypeElement) element);
+ setClassNames((TypeElement) element, converterModel, converter.generate());
setTagInfo(converter.tag(), converterModel);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -11,6 +11,7 @@
import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.util.Strings;
+import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
@@ -69,8 +70,8 @@
}
- protected String getDocComment(TypeElement componentElement) {
- return null != componentElement ? getSourceUtils().getDocComment(componentElement) : null;
+ protected String getDocComment(Element element) {
+ return null != element ? getSourceUtils().getDocComment(element) : null;
}
/**
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -27,6 +27,7 @@
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.faces.render.RenderKitFactory;
+import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
@@ -61,10 +62,10 @@
@Inject
private RendererTemplateParser templateParser;
- public void process(TypeElement rendererElement, ComponentLibrary library) {
+ public void process(Element rendererElement, ComponentLibrary library) {
JsfRenderer annotation = rendererElement.getAnnotation(JsfRenderer.class);
- RendererModel rendererModel = process(rendererElement, annotation, library);
+ RendererModel rendererModel = process((TypeElement) rendererElement, annotation, library);
addToRenderKit(annotation, library, rendererModel);
Added: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/TagLibProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/TagLibProcessor.java (rev 0)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/TagLibProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -0,0 +1,74 @@
+/*
+ * $Id$
+ *
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.cdk.apt.processors;
+
+import java.lang.annotation.Annotation;
+
+import javax.lang.model.element.Element;
+
+import org.richfaces.cdk.CdkProcessingException;
+import org.richfaces.cdk.annotations.TagLibrary;
+import org.richfaces.cdk.model.ComponentLibrary;
+import org.richfaces.cdk.model.Taglib;
+import org.richfaces.cdk.util.Strings;
+
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public class TagLibProcessor implements CdkAnnotationProcessor {
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.apt.processors.CdkAnnotationProcessor#getProcessedAnnotation()
+ */
+ @Override
+ public Class<? extends Annotation> getProcessedAnnotation() {
+ return TagLibrary.class;
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.apt.processors.CdkAnnotationProcessor#process(javax.lang.model.element.Element, org.richfaces.cdk.model.ComponentLibrary)
+ */
+ @Override
+ public void process(Element element, ComponentLibrary library) throws CdkProcessingException {
+ TagLibrary tagLibrary = element.getAnnotation(TagLibrary.class);
+ Taglib taglibModel = new Taglib();
+ taglibModel.setUri(tagLibrary.uri());
+ String shortName = tagLibrary.shortName();
+ if(!Strings.isEmpty(shortName)){
+ taglibModel.setShortName(shortName);
+ }
+ String displayName = tagLibrary.displayName();
+ if(!Strings.isEmpty(displayName)){
+ taglibModel.setDisplayName(displayName);
+ }
+ String tlibVersion = tagLibrary.tlibVersion();
+ if(!Strings.isEmpty(tlibVersion)){
+ taglibModel.setTlibVersion(tlibVersion);
+ }
+ library.setTaglib(taglibModel);
+ }
+
+}
Property changes on: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/TagLibProcessor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ValidatorProcessor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ValidatorProcessor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ValidatorProcessor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -28,6 +28,7 @@
import org.richfaces.cdk.model.ValidatorModel;
import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import java.lang.annotation.Annotation;
@@ -39,11 +40,11 @@
public class ValidatorProcessor extends ProcessorBase implements CdkAnnotationProcessor {
@Override
- public void process(TypeElement element, ComponentLibrary library) throws CdkProcessingException {
+ public void process(Element element, ComponentLibrary library) throws CdkProcessingException {
JsfValidator validator = element.getAnnotation(JsfValidator.class);
ValidatorModel validatorModel = new ValidatorModel(FacesId.parseId(validator.id()));
- setClassNames(element, validatorModel, validator.generate());
+ setClassNames((TypeElement) element, validatorModel, validator.generate());
setDescription(validatorModel, validator.description(), getDocComment(element));
setTagInfo(validator.tag(), validatorModel);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -39,6 +39,7 @@
import org.richfaces.cdk.model.RendererModel;
import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.model.ValidatorModel;
+import org.richfaces.cdk.model.RendererModel.Type;
import java.util.List;
@@ -58,10 +59,8 @@
private ComponentLibrary componentLibrary;
- private String id;
- public TaglibGeneratorVisitor(String id) {
- this.id = id;
+ public TaglibGeneratorVisitor() {
}
public Document getDocument() {
@@ -80,9 +79,9 @@
faceletTaglib.addAttribute("xsi:schemaLocation", "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd");
faceletTaglib.addAttribute("version", "2.0");
- faceletTaglib.addAttribute("id", id); // TODO do it as param
+ faceletTaglib.addAttribute("id", componentLibrary.getTaglib().getShortName());
- faceletTaglib.addElement("namespace").addText("http://richfaces.org/" + id); // TODO do it as param
+ faceletTaglib.addElement("namespace").addText(componentLibrary.getTaglib().getUri());
}
@Override
@@ -95,20 +94,32 @@
}
Element tag = createTag(tagModel.getName());
+ // TODO - investigate proper usage of the <handler-class> element.
+ // Most libraries use <handler-class> INSTEAD of <component>
Element component = tag.addElement(COMPONENT);
- component.addElement(COMPONENT_TYPE).addText(model.getType().getType());
- RendererModel renderer = componentLibrary.getRenderer(model.getFamily(), model.getType().getType());
- if (null != renderer) {
- component.addElement(RENDERER_TYPE).addText(renderer.getType().getType());
+ component.addElement(COMPONENT_TYPE).addText(model.getId().getType());
+ Type rendererType = model.getRendererType();
+// RendererModel renderer = componentLibrary.getRenderer(model.getFamily(), model.getId().getType());
+ if (null != rendererType) {
+ component.addElement(RENDERER_TYPE).addText(rendererType.getType());
}
addTagHandler(component, tagModel);
appendAttributs(tag, model);
}
}
- private void addTagHandler(Element parent, TagModel tag) {
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param parent DOM element for which <handler-class> element should be appended.
+ * @param tag model.
+ * @return true is explicit handler class definition was generated.
+ */
+ private boolean addTagHandler(Element parent, TagModel tag) {
if (tag != null && tag.getTargetClass() != null) {
parent.addElement(HANDLER_CLASS).addText(tag.getTargetClass().toString());
+ return true;
+ } else {
+ return false;
}
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -55,7 +55,7 @@
@Override
public void render() throws CdkException {
- TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor(generator.getNamespace());
+ TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor();
library.accept(visitor);
Document document = visitor.getDocument();
@@ -77,8 +77,7 @@
protected Writer getOutput() throws CdkException {
try {
- // TODO - use short name from the library.
- return output.createOutput("META-INF/" + generator.getNamespace() + ".taglib.xml", library.lastModified());
+ return output.createOutput("META-INF/" + library.getTaglib().getShortName() + ".taglib.xml", library.lastModified());
} catch (IOException e) {
throw new CdkException(e);
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -41,6 +41,7 @@
import org.richfaces.cdk.model.RenderKitModel;
import org.richfaces.cdk.model.RendererModel;
import org.richfaces.cdk.model.TagModel;
+import org.richfaces.cdk.model.Taglib;
import org.richfaces.cdk.util.Strings;
import java.util.Collection;
@@ -108,8 +109,32 @@
verifyComponents(library);
verifyBehaviors(library);
verifyRenderers(library);
+ verifyTaglib(library);
}
+ protected void verifyTaglib(ComponentLibrary library) {
+ Taglib taglib = library.getTaglib();
+ if(null == taglib){
+ // Oops, create taglib model
+ taglib = new Taglib();
+ library.setTaglib(taglib);
+ }
+ // Verify URI
+ String uri = taglib.getUri();
+ if(null == uri){
+ // infer default value.
+ uri = namingConventions.inferTaglibUri(library);
+ taglib.setUri(uri);
+// log.error("No uri defined for taglib");
+ }
+ String shortName = taglib.getShortName();
+ if(null == shortName){
+ shortName = namingConventions.inferTaglibName(uri);
+ taglib.setShortName(shortName);
+// log.error("No short defined for taglib");
+ }
+ }
+
/**
* <p class="changed_added_4_0">
* Verify all behaviors in the library.
Modified: root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -29,6 +29,7 @@
import org.richfaces.cdk.model.EventName;
import org.richfaces.cdk.model.FacesId;
import org.richfaces.cdk.model.PropertyBase;
+import org.richfaces.cdk.model.Taglib;
import org.richfaces.cdk.model.ValidatorModel;
import java.util.Set;
@@ -55,8 +56,11 @@
ComponentLibrary library = new ComponentLibrary();
library.getValidators().add(validator);
-
- TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor("a4j");
+ Taglib taglib = new Taglib();
+ taglib.setShortName("a4j");
+ taglib.setUri("http://foo.bar/a4j");
+ library.setTaglib(taglib);
+ TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor();
library.accept(visitor);
// visitor.generate();
Modified: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml
===================================================================
--- root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml 2010-05-18 21:48:55 UTC (rev 17110)
+++ root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml 2010-05-19 00:30:44 UTC (rev 17111)
@@ -50,7 +50,7 @@
</dependency>
<dependency>
<groupId>org.richfaces.commons</groupId>
- <artifactId>commons-api</artifactId>
+ <artifactId>richfaces-commons-api</artifactId>
<version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
Added: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/package-info.java
===================================================================
--- root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/package-info.java (rev 0)
+++ root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/package-info.java 2010-05-19 00:30:44 UTC (rev 17111)
@@ -0,0 +1,6 @@
+/**
+ *
+ */
+@TagLibrary(uri="http://richfaces.org/test",shortName="testLib")
+package org.richfaces.cdk.test.component;
+import org.richfaces.cdk.annotations.TagLibrary;
\ No newline at end of file
Property changes on: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/package-info.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
14 years, 4 months
JBoss Rich Faces SVN: r17110 - root/commons/trunk/api/src/main/java/org/richfaces.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2010-05-18 17:48:55 -0400 (Tue, 18 May 2010)
New Revision: 17110
Added:
root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java
root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java
root/commons/trunk/api/src/main/java/org/richfaces/Logger.java
Log:
create abstract logging layer that encapsulates concrete implementation use by whole library.
Added: root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java
===================================================================
--- root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java (rev 0)
+++ root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java 2010-05-18 21:48:55 UTC (rev 17110)
@@ -0,0 +1,211 @@
+/*
+ * $Id: JavaLogger.java 16812 2010-04-26 20:43:19Z alexsmirnov $
+ *
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces;
+
+
+
+/**
+ * <p class="changed_added_4_0">That logger delegates all calls to the JDK {@link java.util.logging.Logger}</p>
+ *
+ * @author asmirnov(a)exadel.com
+ */
+public class JavaLogger implements Logger {
+
+ public static final String RICHFACES_LOG = "org.richfaces.cdk";
+
+
+ private static final String DEFAULT_MESSAGE = "Exception";
+
+
+ private final java.util.logging.Logger jdkLogger;
+
+ JavaLogger(String category) {
+ jdkLogger = java.util.logging.Logger.getLogger(category);
+ }
+
+ JavaLogger() {
+ this(RICHFACES_LOG);
+ }
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#debug(java.lang.CharSequence)
+ */
+ public void debug(CharSequence content) {
+ jdkLogger.fine(String.valueOf(content));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#debug(java.lang.CharSequence, java.lang.Throwable)
+ */
+ public void debug(CharSequence content, Throwable error) {
+ jdkLogger.log(java.util.logging.Level.FINE, String.valueOf(content), error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#debug(java.lang.Throwable)
+ */
+ public void debug(Throwable error) {
+ jdkLogger.log(java.util.logging.Level.FINE, "", error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#error(java.lang.CharSequence)
+ */
+ public void error(CharSequence content) {
+ jdkLogger.severe(String.valueOf(content));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#error(java.lang.CharSequence, java.lang.Throwable)
+ */
+ public void error(CharSequence content, Throwable error) {
+
+ jdkLogger.log(java.util.logging.Level.SEVERE, String.valueOf(content), error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#error(java.lang.Throwable)
+ */
+ public void error(Throwable error) {
+
+ jdkLogger.log(java.util.logging.Level.SEVERE, "", error);
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#info(java.lang.CharSequence)
+ */
+ public void info(CharSequence content) {
+ jdkLogger.info(String.valueOf(content));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#info(java.lang.CharSequence, java.lang.Throwable)
+ */
+ public void info(CharSequence content, Throwable error) {
+ jdkLogger.log(java.util.logging.Level.INFO, String.valueOf(content), error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#info(java.lang.Throwable)
+ */
+ public void info(Throwable error) {
+ jdkLogger.log(java.util.logging.Level.INFO, "", error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#isDebugEnabled()
+ */
+ public boolean isDebugEnabled() {
+ return jdkLogger.isLoggable(java.util.logging.Level.FINE);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#isErrorEnabled()
+ */
+ public boolean isErrorEnabled() {
+ return jdkLogger.isLoggable(java.util.logging.Level.SEVERE);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#isInfoEnabled()
+ */
+ public boolean isInfoEnabled() {
+ return jdkLogger.isLoggable(java.util.logging.Level.INFO);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#isWarnEnabled()
+ */
+ public boolean isWarnEnabled() {
+ return jdkLogger.isLoggable(java.util.logging.Level.WARNING);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#warn(java.lang.CharSequence)
+ */
+ public void warn(CharSequence content) {
+ jdkLogger.warning(String.valueOf(content));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#warn(java.lang.CharSequence, java.lang.Throwable)
+ */
+ public void warn(CharSequence content, Throwable error) {
+ jdkLogger.log(java.util.logging.Level.WARNING, String.valueOf(content), error);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.richfaces.cdk.Logger#warn(java.lang.Throwable)
+ */
+ public void warn(Throwable error) {
+ jdkLogger.log(java.util.logging.Level.WARNING, "", error);
+ }
+
+ public boolean isLogEnabled(Logger.Level level) {
+ return jdkLogger.isLoggable(toJavaLevel(level));
+ }
+
+ public void log(org.richfaces.Logger.Level level, CharSequence content) {
+ jdkLogger.log(toJavaLevel(level), String.valueOf(content));
+
+ }
+
+ public void log(org.richfaces.Logger.Level level, CharSequence content, Throwable error) {
+ jdkLogger.log(toJavaLevel(level), String.valueOf(content),error);
+ }
+
+ public void log(org.richfaces.Logger.Level level, Throwable error) {
+ jdkLogger.log(toJavaLevel(level),DEFAULT_MESSAGE, error);
+ }
+
+ private java.util.logging.Level toJavaLevel(Logger.Level level){
+ switch (level) {
+ case ERROR:
+ return java.util.logging.Level.SEVERE;
+ case INFO:
+ return java.util.logging.Level.INFO;
+ case WARNING:
+ return java.util.logging.Level.WARNING;
+ case DEBUG:
+ return java.util.logging.Level.FINE;
+ }
+ return java.util.logging.Level.FINEST;
+ }
+}
Property changes on: root/commons/trunk/api/src/main/java/org/richfaces/JavaLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java
===================================================================
--- root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java (rev 0)
+++ root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java 2010-05-18 21:48:55 UTC (rev 17110)
@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces;
+
+/**
+ * <p class="changed_added_4_0">This class produces loggers used by whole RichFaces library.</p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public final class LogFactory {
+
+ private static final Logger defaultLogger = new JavaLogger();
+
+ private LogFactory(){
+ // This class is not instantiable.
+ }
+
+
+ /**
+ * <p class="changed_added_4_0">This method creates default logger.</p>
+ * @return
+ */
+ public static Logger getLogger(){
+ return defaultLogger;
+ }
+
+ /**
+ * <p class="changed_added_4_0">This method produces logger instance for given category.</p>
+ * @param category
+ * @return
+ */
+ public static Logger getLogger(String category){
+ return new JavaLogger(category);
+ }
+
+ public static Logger getLogger(Class<?> clazz){
+ return getLogger(clazz.getName());
+ }
+
+}
Property changes on: root/commons/trunk/api/src/main/java/org/richfaces/LogFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: root/commons/trunk/api/src/main/java/org/richfaces/Logger.java
===================================================================
--- root/commons/trunk/api/src/main/java/org/richfaces/Logger.java (rev 0)
+++ root/commons/trunk/api/src/main/java/org/richfaces/Logger.java 2010-05-18 21:48:55 UTC (rev 17110)
@@ -0,0 +1,174 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces;
+
+
+/**
+ * That interface hides current logging system from classes.
+ * Concrete implementation should provide appropriate logger instance that delegates
+ * messages to the current log system.
+ *
+ * @author shura
+ */
+public interface Logger {
+
+ public enum Level {
+ ERROR,
+ INFO,
+ WARNING,
+ DEBUG
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return
+ */
+ public boolean isDebugEnabled();
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ */
+ public void debug(CharSequence content);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ * @param error
+ */
+ public void debug(CharSequence content, Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param error
+ */
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param error
+ */
+ public void debug(Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return
+ */
+ public boolean isInfoEnabled();
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ */
+ public void info(CharSequence content);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ * @param error
+ */
+ public void info(CharSequence content, Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param error
+ */
+ public void info(Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return
+ */
+ public boolean isWarnEnabled();
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ */
+ public void warn(CharSequence content);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ * @param error
+ */
+ public void warn(CharSequence content, Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param error
+ */
+ public void warn(Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return
+ */
+ public boolean isErrorEnabled();
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ */
+ public void error(CharSequence content);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param content
+ * @param error
+ */
+ public void error(CharSequence content, Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param error
+ */
+ public void error(Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param level
+ * @return
+ */
+ public boolean isLogEnabled(Level level);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param level
+ * @param content
+ */
+ public void log(Level level,CharSequence content);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param level
+ * @param content
+ * @param error
+ */
+ public void log(Level level,CharSequence content, Throwable error);
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param level
+ * @param error
+ */
+ public void log(Level level, Throwable error);
+
+}
Property changes on: root/commons/trunk/api/src/main/java/org/richfaces/Logger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
14 years, 4 months
JBoss Rich Faces SVN: r17108 - root/build/parent/tags.
by richfaces-svn-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2010-05-18 16:10:33 -0400 (Tue, 18 May 2010)
New Revision: 17108
Added:
root/build/parent/tags/richfaces-parent-1/
Log:
[maven-scm] copy for tag richfaces-parent-1
Copied: root/build/parent/tags/richfaces-parent-1 (from rev 17107, root/build/parent/trunk)
14 years, 4 months