weaver 2005/01/11 11:59:40 Modified: components/page-manager/src/java/org/apache/jetspeed/om/page/psml FragmentImpl.java Log: Moved ContentDispatcher functionallity into FragmentImpl and RenderingJob. Revision Changes Path 1.6 +114 -58 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java Index: FragmentImpl.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FragmentImpl.java 4 Jan 2005 15:52:30 -0000 1.5 +++ FragmentImpl.java 11 Jan 2005 19:59:40 -0000 1.6 @@ -21,6 +21,9 @@ import java.util.List; import java.util.Vector; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jetspeed.aggregator.PortletContent; import org.apache.jetspeed.om.page.Fragment; import org.apache.jetspeed.om.page.Property; @@ -41,20 +44,25 @@ private List fragments = new Vector(); private List properties = new Vector(); - + private String name; - - private String renderedContent; + + private InheritableThreadLocal portletContent = new InheritableThreadLocal(); + + private static final Log log = LogFactory.getLog(FragmentImpl.class); + + private InheritableThreadLocal overridenContent = new InheritableThreadLocal(); public FragmentImpl() - {} + { + } public String getType() { return this.type; } - public void setType(String type) + public void setType( String type ) { this.type = type; } @@ -64,7 +72,7 @@ return this.state; } - public void setState(String state) + public void setState( String state ) { this.state = state; } @@ -74,7 +82,7 @@ return this.decorator; } - public void setDecorator(String decoratorName) + public void setDecorator( String decoratorName ) { this.decorator = decoratorName; } @@ -84,7 +92,7 @@ return this.skin; } - public void setSkin(String skin) + public void setSkin( String skin ) { this.skin = skin; } @@ -104,9 +112,9 @@ List layouts = new ArrayList(); Iterator i = this.properties.iterator(); - while(i.hasNext()) + while (i.hasNext()) { - Property p = (Property)i.next(); + Property p = (Property) i.next(); if (!layouts.contains(p.getLayout())) { layouts.add(p.getLayout()); @@ -116,7 +124,7 @@ return layouts; } - public List getProperties(String layoutName) + public List getProperties( String layoutName ) { List props = new ArrayList(); Iterator i = this.properties.iterator(); @@ -126,9 +134,9 @@ layoutName = ""; } - while(i.hasNext()) + while (i.hasNext()) { - Property p = (Property)i.next(); + Property p = (Property) i.next(); if (layoutName.equals(p.getLayout())) { props.add(p); @@ -137,35 +145,35 @@ return props; } - - public String getPropertyValue(String layout, String propName) + + public String getPropertyValue( String layout, String propName ) { Iterator itr = getProperties(layout).iterator(); - while(itr.hasNext()) + while (itr.hasNext()) { Property aProp = (Property) itr.next(); - if(aProp.getName().equals(propName)) + if (aProp.getName().equals(propName)) { return aProp.getValue(); } } - + return null; } - - public void setPropertyValue(String layout, String propName, String value) + + public void setPropertyValue( String layout, String propName, String value ) { Iterator itr = getProperties(layout).iterator(); - while(itr.hasNext()) + while (itr.hasNext()) { Property aProp = (Property) itr.next(); - if(aProp.getName().equals(propName)) + if (aProp.getName().equals(propName)) { aProp.setValue(value); return; } } - + PropertyImpl newProp = new PropertyImpl(); newProp.setLayout(layout); newProp.setName(propName); @@ -173,18 +181,18 @@ addProperty(newProp); } - public void addProperty(Property p) + public void addProperty( Property p ) { this.properties.add(p); } - public void removeProperty(Property p) + public void removeProperty( Property p ) { Iterator i = this.properties.iterator(); - while(i.hasNext()) + while (i.hasNext()) { - Property p2 = (Property)i.next(); + Property p2 = (Property) i.next(); if (p2.equals(p)) { @@ -193,7 +201,7 @@ } } - public void clearProperties(String layoutName) + public void clearProperties( String layoutName ) { if (layoutName == null) { @@ -203,9 +211,9 @@ Iterator i = this.properties.iterator(); - while(i.hasNext()) + while (i.hasNext()) { - Property p = (Property)i.next(); + Property p = (Property) i.next(); if (layoutName.equals(p.getLayout())) { @@ -216,21 +224,20 @@ public Vector getProperties() { - return (Vector)this.properties; + return (Vector) this.properties; } - public void setProperties(Vector props) + public void setProperties( Vector props ) { - this.properties=props; + this.properties = props; } - public void setFragments(List fragments) + public void setFragments( List fragments ) { this.fragments = fragments; } - public Object clone() - throws java.lang.CloneNotSupportedException + public Object clone() throws java.lang.CloneNotSupportedException { Object cloned = super.clone(); @@ -238,20 +245,20 @@ return cloned; - } // clone + } // clone /** * <p> * equals * </p> - * + * * @see java.lang.Object#equals(java.lang.Object) * @param obj * @return */ public boolean equals( Object obj ) { - if(obj != null && obj instanceof Fragment) + if (obj != null && obj instanceof Fragment) { Fragment aFragment = (Fragment) obj; return getId().equals(aFragment.getId()); @@ -261,30 +268,32 @@ return false; } } + /** * <p> * hashCode * </p> - * + * * @see java.lang.Object#hashCode() * @return */ public int hashCode() - { - if(getId() != null) + { + if (getId() != null) { - return (Fragment.class.getName()+":"+getId()).hashCode(); + return (Fragment.class.getName() + ":" + getId()).hashCode(); } else { return super.hashCode(); } } + /** * <p> * getName * </p> - * + * * @see org.apache.jetspeed.om.page.Fragment#getName() * @return */ @@ -292,52 +301,99 @@ { return name; } + /** * <p> * setName * </p> - * + * * @see org.apache.jetspeed.om.page.Fragment#setName(java.lang.String) * @param name */ public void setName( String name ) { - this.name = name; + this.name = name; } - + /** * * <p> * getRenderedContent * </p> - * + * * @see org.apache.jetspeed.om.page.Fragment#getRenderedContent() * @return */ public String getRenderedContent() { - if(renderedContent != null) + if(overridenContent.get() != null) { - return renderedContent; + return ((StringBuffer) overridenContent.get()).toString(); + } + + PortletContent content = (PortletContent) portletContent.get(); + if (content != null) + { + synchronized (content) + { + if (content.isComplete()) + { + return content.getContent(); + } + else + { + try + { + log.debug("Waiting on content for Fragment " + getId()); + content.wait(); + return content.getContent(); + } + catch (InterruptedException e) + { + return e.getMessage(); + } + finally + { + log.debug("Been notified that Faragment " + getId() + " is complete"); + } + } + } } else { throw new IllegalStateException("You cannot invoke getRenderedContent() until the content has been set."); } } - + /** + * <p> + * setPortletContent + * </p> * + * @see org.apache.jetspeed.om.page.Fragment#setPortletContent(org.apache.jetspeed.aggregator.PortletContent) + * @param portletContent + */ + public void setPortletContent( PortletContent portletContent ) + { + this.portletContent.set(portletContent); + } + /** * <p> - * setRenderedContent + * overrideRenderedContent * </p> * - * @see org.apache.jetspeed.om.page.Fragment#setRenderedContent(java.lang.String) - * @param renderedContent + * @see org.apache.jetspeed.om.page.Fragment#overrideRenderedContent(java.lang.String) + * @param contnent */ - public void setRenderedContent( String renderedContent ) - { - this.renderedContent = renderedContent; + public void overrideRenderedContent( String content ) + { + StringBuffer buffer = (StringBuffer)overridenContent.get(); + if(buffer == null) + { + buffer = new StringBuffer("Encountered the following problem(s) while attmepting to render portlet fragment: "+getId()+"<br />"); + overridenContent.set(buffer); + } + buffer.append(content).append("<br />"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]