In ComponentClassTransformerImpl.java there is this

// Force the creation of the parent class.
152     
153                     try
154                     {
155                         parentClassname = ctClass.getSuperclass().getName();
156                     }
157                     catch (NotFoundException ex)
158                     {
159                         throw new RuntimeException(ex);
160                     }
161     
162                     String classname = ctClass.getName();
163     
164                     Logger transformLogger =
loggerSource.getLogger("tapestry.transformer." + classname);
165                     Logger logger = loggerSource.getLogger(classname);
166     
167                     // If the parent class is in a controlled package,
it will already have been loaded and
168                     // transformed (that is driven by the
ComponentInstantiatorSource).
169     
170                     InternalClassTransformation parentTransformation =
nameToClassTransformation.get(parentClassname);
171     
172                     // TAPESTRY-2449: Ignore the base class that
Groovy can inject
173     
174                     if (parentTransformation == null
175                             &&
!(parentClassname.equals("java.lang.Object") || parentClassname
176                                     
.equals("groovy.lang.GroovyObjectSupport")))
177                     {
178                         String suggestedPackageName =
buildSuggestedPackageName(classname);
179     
180                         throw new
RuntimeException(ServicesMessages.baseClassInWrongPackage(parentClassname,
classname,
181                                 suggestedPackageName));
182                     }
183     
184                     // TODO: Check that the name is not already in the
map. But I think that can't happen,
185                     // because the classloader itself is synchronized.
186     
187                     Resource baseResource = new
ClasspathResource(classname.replace(".", "/") + ".class");
188     
189                     ComponentModel parentModel =
nameToComponentModel.get(parentClassname);
190     
191                     MutableComponentModel model = new
MutableComponentModelImpl(classname, logger, baseResource,
192                             parentModel);
193     
194                     InternalClassTransformation transformation =
parentTransformation == null ? new InternalClassTransformationImpl(
195                             classFactory, ctClass,
componentClassCache, model, classSource, developmentMode)
196                             :
parentTransformation.createChildTransformation(ctClass, model);
197     

I'm not sure why but I'm guessing if your parentClass is in a
controlled package the mixins do not render in the correct order.

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

Reply via email to