> > I am currently trying to get act nodes to work and am have a question > about the source resolving in 2.2. Currently the environment source > resolver is put into the object model in the PipelinesNode. However, now > that the environment no longer implements SourceResolver but appears to > be implemented by EnvironmentHelper instead I no longer have access to > it there. So, I was thinking whether we should move that logic into > EnvironmentHelper.enterProcessor() / leaveProcessor() ? Does that make > any sense to you? > Ok, I never liked putting such objects into the object model as the om is available to all sitemap components and users *can* take those objects out of the om and use them. IMHO we should avoid putting any internal objects into the om or into the environment if possible. But that's only my personal opinion :)
The Processor holds an EnvironmentHelper instance and each node can simply (and should) pass on this instance to a sitemap component. So, you can do a resolver = this.processor.getEnvironmentHelper(); in the ActNode (if this node has access to the processor). The pipeline implementation e.g. does it this way. If the ActNode doesn't have access to the processor, than there are two choices: a) Use the attributes of the environment or b) Use the new EnvironmentContext mechanism This allows to store arbitrary objects "at" the environment without directly adding them to the environment. This keeps the env. clear Perhaps this is FS or overdoing things, I don't know. Anyway, you can get an EnvironmentContext using a static method on the EnvironmentHelper getEnvironmentContext(Environment) and add/get attributes from there. Personally, I would prefer passing the processor to the act node as this is imho the cleanest but also the fastest solution (no lookup required during runtime). WDYT? Carsten