Re: No template found for component

From: Mike Kienenberger (mkienen..mail.com)
Date: Tue Apr 03 2007 - 12:31:51 EDT

  • Next message: Mike Schrag: "Re: Entity Modeler: wrong sql generation with frontbase"

    Right. I had to fully-qualify them in my java code. I didn't need
    to do anything with them in the .wod file.

    I overrode Application.pageWithName to expand any non-qualified pages
    with the fully-qualified package where I kept all of my pages and
    components. I think to make it work for Components, I had to extend
    a non-documented Application method.

        public WOComponentDefinition _componentDefinition(String string,
                NSArray nsarray)
        {
            return super._componentDefinition(fullyQualifiedPageName(string),
    nsarray);
        }

        public WOComponent pageWithName(String pageName, WOContext context)
        {
            return super.pageWithName(fullyQualifiedPageName(pageName), context);
        }

        private String fullyQualifiedPageName(String pageName)
        {
            if (null == pageName)
            {
                pageName = "Main";
            }

            if (-1 != pageName.indexOf('.'))
            {
                return pageName;
            }

            String className = PACKAGE_PREFIX_FOR_PAGES_AND_COMPONENTS + pageName;

            try
            {
                pageName = Class.forName(className).getName();
            }
            catch (ClassNotFoundException exception)
            {
            }

            return pageName;
        }

    On 4/3/07, Jean Pierre Malrieu <jp.malrie..ree.fr> wrote:
    > I have tried to use the fully qualified name. I have written in my .wod
    >
    > TDComponent1 : educlab.tdcomps.TDComponent {
    > bindings...
    > }
    >
    > instead of
    >
    > TDComponent1 : TDComponent {
    > bindings...
    > }
    >
    > But it does not work either.
    >
    > Thanks for the idea, though...
    >
    > JPM
    >
    > Le 3 avr. 07 à 04:14, Mike Kienenberger a écrit :
    >
    > > I can tell you that NSBundle will ONLY find partially-qualified
    > > resources inside the bundle itself and not in your general classpath.
    > > I didn't speak up before because I wasn't (and still am not) sure it
    > > is relevent to your situation.
    > >
    > > I had to fully-qualify my own Pages and Components in order to use
    > > them on my non-NSBundled WEB-INF/classes classpath.
    > >
    > > On 4/2/07, Fabian Peters <lists.fabia..-lumo.com> wrote:
    > >> Hi Chuck,
    > >>
    > >> >>> I _never_ have my components in the project root and I don't see
    > >> >>> this problem.
    > >> >>
    > >> >> Well, do you have localized components? Maybe it's related to the
    > >> >> localization part?
    > >> >
    > >> > I have a few, I don't use them much but I don't recall it causing
    > >> > problems.
    > >>
    > >> As I wrote before, the problem appeared from the start with an app
    > >> that is wholly localized and allows browsing w/o session creation. I
    > >> was unable to reproduce this with an app that creates a session
    > >> straight away.
    > >>
    > >> >> I did not find very much info on "Folder References", which are
    > >> >> required by WOResourceManager, according to the API, to locate
    > >> >> resources in rapid turnaround mode. Maybe Ulrich can shed some
    > >> >> light on this, but it's been quite a while I've seen a post from
    > >> >> him...
    > >> >
    > >> > "Folder References" is an Xcode term, nothing to do with WO. The
    > >> > groups shown in Xcode don't necessarily correspond to actual
    > >> > folders on the file system. If you don't use/make "Folder
    > >> > References" in Xcode, you end up with
    > >> >
    > >> > Resources/
    > >> > TDComponent.api
    > >> > TDComponent.wod
    > >> > TDComponent.html
    > >> >
    > >> > Instead of the correct
    > >> > Resources/
    > >> > TDComponent.api
    > >> > TDComponent.wo/
    > >> > TDComponent.wod
    > >> > TDComponent.html
    > >>
    > >> Mhh, I came up with this due to the WOResourceManager API, which
    > >> states:
    > >>
    > >> "Note that if you use Project Builder (rather than ProjectBuilderWO)
    > >> and you add a folder of resources, they must be added as Folder
    > >> References. This allows WOResourceManager to find them in rapid
    > >> turnaround mode." <http://developer.apple.com/documentation/
    > >> WebObjects/Reference/API/com/webobjects/appserver/
    > >> WOResourceManager.html>
    > >>
    > >> This may be totally outdated or have nothing to do with the problem
    > >> whatsoever. But it's all I came up with before I just reverted to my
    > >> previous setup. Maybe you or somebody else more knowledgeable about
    > >> the inner workings of NSBundle and WOResourceManager and/or the role
    > >> of the IDE in rapid turnaround can shed some light.
    > >>
    > >> Fabian
    > >>
    > >> >>> On Apr 2, 2007, at 10:20 AM, Fabian Peters wrote:
    > >> >>>
    > >> >>>> Hi Jean-Pierre,
    > >> >>>>
    > >> >>>> Am 02.04.2007 um 12:38 schrieb Jean Pierre Malrieu:
    > >> >>>>
    > >> >>>>> Everything happens to me...
    > >> >>>>
    > >> >>>> But not exclusively to you...
    > >> >>>>
    > >> >>>>> In development mode, I get the following error:
    > >> >>>>> <com.webobjects.appserver._private.WOComponentDefinition> No
    > >> >>>>> template found for component TDComponent at "file:/Users/jpm/
    > >> >>>>> Documents/EclipseTemp/workspace/TDBase/build/TDBase.woa".
    > >> >>>>>
    > >> >>>>> TDComponent is in a framework (called TDComps) that an app
    > >> >>>>> called TDBase depends upon.
    > >> >>>>>
    > >> >>>>> In order to organize my Frameworks with Project Wonder
    > >> >>>>> structure (and be capable to use the last build.xml), I have
    > >> >>>>> created a "Component" folder in the TDComps project (the
    > >> >>>>> framework), and put my components in there. Then, in
    > >> >>>>> development mode, TDBase (the app) won't see those components,
    > >> >>>>> hence the no template found error. If I move the components to
    > >> >>>>> the root of the framework project, everything is fine in
    > >> >>>>> development, but not in deployment (they don't get copied due
    > >> >>>>> to the recent build.xml).
    > >> >>>>>
    > >> >>>>> How would you tell the app that the components are not at the
    > >> >>>>> root of the framework?
    > >> >>>>>
    > >> >>>>> What puzzles me most is that the build folder (for the
    > >> >>>>> framework) has the following structure:
    > >> >>>>>
    > >> >>>>> TDComps.Framework
    > >> >>>>> Resources
    > >> >>>>> French.lproj
    > >> >>>>> my .wo files
    > >> >>>>> .....
    > >> >>>>> Java
    > >> >>>>> my api. files
    > >> >>>>> ......
    > >> >>>>> WebServerResources
    > >> >>>>>
    > >> >>>>> I don't see any difference in the build: whether or not my
    > >> >>>>> components are in a "Components" folder, the incremental build
    > >> >>>>> is the same (yes I cleaned the framework to be sure). And yet,
    > >> >>>>> the app sees the components in one case and not in the other.
    > >> >>>>
    > >> >>>> I ran into the same problem a few days ago. I figure that the
    > >> >>>> problem is due to the way the WOResourceManager resolves
    > >> >>>> localized components in rapid turnaround mode. See my previous
    > >> >>>> messages on this: <http://objectstyle.org/woproject-old/lists/
    > >> >>>> woproject-dev/2007/03/0125.html>
    > >> >>>>
    > >> >>>>> I would appreciate your help again.
    > >> >>>>
    > >> >>>> I'm afraid I can't really help. I reverted back to keeping all
    > >> >>>> the components in the project root.
    > >> >>>>
    > >> >>>> cheers
    > >> >>>>
    > >> >>>> Fabian
    > >> >>>>
    > >> >>>
    > >> >>> --
    > >> >>>
    > >> >>> Practical WebObjects - for developers who want to increase their
    > >> >>> overall knowledge of WebObjects or who are trying to solve
    > >> >>> specific problems.
    > >> >>> http://www.global-village.net/products/practical_webobjects
    > >> >>>
    > >> >>>
    > >> >>>
    > >> >>>
    > >> >>>
    > >> >>
    > >> >>
    > >> >
    > >> > --
    > >> >
    > >> > Practical WebObjects - for developers who want to increase their
    > >> > overall knowledge of WebObjects or who are trying to solve specific
    > >> > problems.
    > >> > http://www.global-village.net/products/practical_webobjects
    > >> >
    > >> >
    > >> >
    > >> >
    > >> >
    > >>
    > >>
    > >
    >
    >



    This archive was generated by hypermail 2.0.0 : Tue Apr 03 2007 - 12:31:57 EDT