I haven't been busy with my web development in a number of weeks due to some C work at the university. I was still planning to champion the multiple databases via configuration groups IoC patch, but I have to study the possible "solution" that was posted a few weeks ago. I don't know if it is worth the trouble to look into it, but I think the configuration groups IoC idea might still have merits on its own, even if multiple database access is possible via another way. As far as I know, reusing service implementations is not natively supported right now, something that my patch would add.

Tom.


Op 23-5-2011 5:13, Kalle Korhonen schreef:
I haven't done a single thing for Tapestry or even web apps in general
for some time and won't for a few weeks more, but after that my time
will start freeing up. For Maven-archetype, wouldn't it make sense to
detach its build from the main monolithic build and release as needed
via Maven? I could easily take that up if we have a general consensus.
5.3 alpha sounds great!

Kalle


On Sun, May 22, 2011 at 12:32 PM, Howard Lewis Ship<hls...@gmail.com>  wrote:
I've committed *most of* TAP5-1528.  Still to come is some work to
copy resource files over to output directory, and some cleanups of
existing components.  Also, find a way to make it a little prettier.

Due to limitations of the JavaDoc tool, it will be necessary to add
@tapestrydoc to components to get their documentation generated.

I feel we are closing in on an alpha release.

I would like to remove tapestry-component-report (as it is Maven only,
while the new tapestry-javadoc is universal).

I still want to support the Maven archetype, but will be looking for a
way to have a Gradle script generate it. This may not make it into the
first alpha release.

What's on other's hit lists for the first alpha release, and on 5.3 in general?


---------- Forwarded message ----------
From:<hls...@apache.org>
Date: Sun, May 22, 2011 at 12:09 PM
Subject: svn commit: r1126178 - in /tapestry/tapestry5/trunk:
tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/
tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/
To: comm...@tapestry.apache.org


Author: hlship
Date: Sun May 22 19:09:39 2011
New Revision: 1126178

URL: http://svn.apache.org/viewvc?rev=1126178&view=rev
Log:
TAP5-1528: Resolve published parameters from embedded components

Added:
    
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescriptionSource.java
Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
    
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
    
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java?rev=1126178&r1=1126177&r2=1126178&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
(original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
Sun May 22 19:09:39 2011
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
+// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
@@ -16,14 +16,23 @@ package org.apache.tapestry5.corelib.com

  import java.io.IOException;

-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.ClientElement;
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.EventConstants;
+import org.apache.tapestry5.Field;
+import org.apache.tapestry5.FormValidationControl;
+import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.annotations.Component;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.annotations.SupportsInformalParameters;
  import org.apache.tapestry5.beaneditor.BeanModel;
  import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
  import org.apache.tapestry5.ioc.annotations.Inject;
  import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;

  /**
  * A component that creates an entire form editing the properties of a
particular bean. Inspired by<a
@@ -45,6 +54,7 @@ import org.apache.tapestry5.services.Com
  * @see org.apache.tapestry5.services.BeanModelSource
  * @see org.apache.tapestry5.corelib.components.PropertyEditor
  * @see org.apache.tapestry5.beaneditor.DataType
+ * @tapestrydoc
  */
  @SupportsInformalParameters
  @Events(EventConstants.PREPARE)

Modified: 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java?rev=1126178&r1=1126177&r2=1126178&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
(original)
+++ 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescription.java
Sun May 22 19:09:39 2011
@@ -17,9 +17,11 @@ package org.apache.tapestry5.javadoc;
  import java.util.Map;

  import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.annotations.Component;
  import org.apache.tapestry5.annotations.Events;
  import org.apache.tapestry5.annotations.Parameter;
  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.ioc.internal.util.InternalUtils;

  import com.sun.javadoc.AnnotationDesc;
  import com.sun.javadoc.AnnotationDesc.ElementValuePair;
@@ -37,22 +39,16 @@ public class ClassDescription
     public final Map<String, ParameterDescription>  parameters =
CollectionFactory.newCaseInsensitiveMap();

     /**
-     * Case insensitive map, keyed on parameter name, value is class
name of component from which the parameter is
-     * published.
-     */
-    public final Map<String, String>  publishedParameters =
CollectionFactory.newCaseInsensitiveMap();
-
-    /**
      * Case insensitive map, keyed on event name, value is optional
description (often blank).
      */
     public final Map<String, String>  events =
CollectionFactory.newCaseInsensitiveMap();

-    public ClassDescription(ClassDoc classDoc)
+    public ClassDescription(ClassDoc classDoc, ClassDescriptionSource source)
     {
         this.classDoc = classDoc;

         loadEvents();
-        loadParameters();
+        loadParameters(source);
     }

     private void loadEvents()
@@ -82,7 +78,7 @@ public class ClassDescription
         }
     }

-    private void loadParameters()
+    private void loadParameters(ClassDescriptionSource source)
     {
         for (FieldDoc fd : classDoc.fields(false))
         {
@@ -111,6 +107,38 @@ public class ClassDescription
                 continue;
             }

+            values = getAnnotationValues(fd, Component.class);
+
+            if (values != null)
+            {
+                String names = get(values, "publishParameters", "");
+
+                if (InternalUtils.isBlank(names))
+                    continue;
+
+                for (String name : names.split("\\s*,\\s*"))
+                {
+                    ParameterDescription pd =
getPublishedParameterDescription(source, fd, name);
+                    parameters.put(name, pd);
+                }
+
+            }
+
+        }
+    }
+
+    private ParameterDescription
getPublishedParameterDescription(ClassDescriptionSource source,
FieldDoc fd,
+            String name)
+    {
+        String currentClassName = fd.type().qualifiedTypeName();
+
+        while (true)
+        {
+            ClassDescription componentCD =
source.getDescription(currentClassName);
+
+            if (componentCD.parameters.containsKey(name)) { return
componentCD.parameters.get(name); }
+
+            currentClassName = componentCD.classDoc.superclass().typeName();
         }
     }


Added: 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescriptionSource.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescriptionSource.java?rev=1126178&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescriptionSource.java
(added)
+++ 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/ClassDescriptionSource.java
Sun May 22 19:09:39 2011
@@ -0,0 +1,20 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.javadoc;
+
+public interface ClassDescriptionSource
+{
+    ClassDescription getDescription(String className);
+}

Modified: 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java?rev=1126178&r1=1126177&r2=1126178&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java
(original)
+++ 
tapestry/tapestry5/trunk/tapestry-javadoc/src/main/java/org/apache/tapestry5/javadoc/TapestryDocTaglet.java
Sun May 22 19:09:39 2011
@@ -31,7 +31,7 @@ import com.sun.tools.doclets.Taglet;
  /**
  * An inline tag allowed inside a type; it produces Tapestry component
reference and other information.
  */
-public class TapestryDocTaglet implements Taglet
+public class TapestryDocTaglet implements Taglet, ClassDescriptionSource
  {
     /**
      * Map from class name to class description.
@@ -95,7 +95,7 @@ public class TapestryDocTaglet implement
         if (result == null)
         {
             ClassDoc cd = firstSeen.findClass(className);
-            result = new ClassDescription(cd);
+            result = new ClassDescription(cd, this);
             classDescriptions.put(className, result);
         }






--
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to