Hi,

I'm trying to create a T5 library using Eclipse, but...   :(
Here are my steps and codes.


- New Java Project:   t5lib
- Compiler compliance level is set to 5

src
src/pub/t5lib
src/pub/t5lib/LibraryModule.java
src/pub/t5lib/components
src/pub/t5lib/components/MyComponent.java  (don't have a template)
src/MANIFEST.MF

- In Eclipse: Project Properties: Java Build Path: Libraries: Add JAR's:
tapestry-core-5.0.11.jar
tapestry-ioc-5.0.11.jar

LibraryModule.java:
---------------------------
package pub.t5lib;
import org.apache.tapestry.ioc.Configuration;
import org.apache.tapestry.services.LibraryMapping;
public class LibraryModule {
    public static void contributeComponentClassResolver(
            Configuration<LibraryMapping> configuration) {
        configuration.add(new LibraryMapping("t5lib", "pub.t5lib"));
    }
}

MyComponent.java:  (just a simple output component)
----------------------------
package pub.t5lib.components;
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.ioc.internal.util.InternalUtils;
public class MyComponent {
    @Parameter(required = true)
    private Object _value;

    @Parameter("componentResources.elementName")
    private String _elementName;

    @Inject
    private ComponentResources _resources;

    boolean beginRender(MarkupWriter writer) throws Exception {
         formatted = ((Format) _format).format(_value);
         if (InternalUtils.isNonBlank(formatted)) {
            if (_elementName != null) {
                writer.element(_elementName);
                _resources.renderInformalParameters(writer);
            }
            writer.write(formatted);
            if (_elementName != null)
                writer.end();
        }
        return false;
    }
}

MANIFEST.MF:
----------------------
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.6.0_02-b06 (Sun Microsystems Inc.)
Tapestry-Module-Classes: pub.t5lib.LibraryModule


PS: last line of manifest ends with a carriage return.

- in Eclipse: Project Explorer: Export...
- JAR file
- None resources select on t5lib root, just src sub-folder, checked "Export
generated class...",  JAR file: C:\t5lib-0.0.1.jar , checked "Compress..."
- only checked "Build project..."
- Use existing manifest from workspace, /t5lib/MANIFEST.MF  <Finish>

- just put the library file (t5lib-0.0.1.jar) into the WEB-INF/lib subfolder
of another project (a new T5.0.11 project, just created with maven, with
only Index.tml)

- Trying to use a component in Index.tml, like this:
<t:t5lib.MyComponent  t:value="currentTime" />
or like this:
<span t:type="t5lib/MyComponent"  t:value="currentTime" />

ERROR
Unable to resolve 't5lib/MyComponent' to a component class name. Available
component types: ActionLink, Any, BeanDisplay, BeanEditForm, BeanEditor,
Checkbox, DateField, Delegate, Errors, EventLink, ExceptionDisplay, Form,
FormFragment, FormInjector, Grid, GridCell, GridColumns, GridPager,
GridRows, If, Label, Loop, Output, OutputRaw, PageLink, Palette,
PasswordField, PropertyDisplay, PropertyEditor, Radio, RadioGroup,
RenderObject, Select, Submit, SubmitNotifier, TextArea, TextField,
TextOutput, Unless, Zone.
Stack trace

   -
   
org.apache.tapestry.internal.services.ComponentClassResolverImpl$5.invoke(ComponentClassResolverImpl.java:446)
   -
   
org.apache.tapestry.internal.services.ComponentClassResolverImpl$5.invoke(ComponentClassResolverImpl.java:442)
   -
   
org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
   -
   
org.apache.tapestry.internal.services.ComponentClassResolverImpl.resolveComponentTypeToClassName(ComponentClassResolverImpl.java:440)
   -
   
org.apache.tapestry.internal.services.PageElementFactoryImpl.newComponentElement(PageElementFactoryImpl.java:202)
   -
   
org.apache.tapestry.internal.services.PageLoaderProcessor.startComponent(PageLoaderProcessor.java:655)
   -
   
org.apache.tapestry.internal.services.PageLoaderProcessor.loadTemplateForComponent(PageLoaderProcessor.java:500)
   -
   
org.apache.tapestry.internal.services.PageLoaderProcessor.workComponentQueue(PageLoaderProcessor.java:807)
   -
   
org.apache.tapestry.internal.services.PageLoaderProcessor.loadPage(PageLoaderProcessor.java:392)
   -
   
org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:59)
   -
   
org.apache.tapestry.internal.services.PagePoolCache.checkout(PagePoolCache.java:188)
   -
   
org.apache.tapestry.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:107)
   -
   
org.apache.tapestry.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:43)
   -
   
org.apache.tapestry.internal.services.RequestSecurityManagerImpl.checkForInsecureRequest(RequestSecurityManagerImpl.java:59)
   -
   
org.apache.tapestry.services.TapestryModule$29.handle(TapestryModule.java:1605)
   -
   
org.apache.tapestry.internal.services.PageRenderDispatcher.process(PageRenderDispatcher.java:97)
   -
   
org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:83)
   -
   
org.apache.tapestry.services.TapestryModule$13.service(TapestryModule.java:944)
   - org.exemplo.t5011.services.AppModule$1.service(AppModule.java:98)
   -
   
org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
   -
   
org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.java:553)
   -
   
org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.java:520)
   -
   
org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
   -
   
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
   -
   
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
   -
   
org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
   -
   
org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
   -
   
org.apache.tapestry.services.TapestryModule$12.service(TapestryModule.java:924)
   -
   
org.apache.tapestry.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
   - org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:168)
   -
   
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
   -
   
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
   -
   org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
   - org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
   -
   
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
   - org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   - org.mortbay.http.HttpServer.service(HttpServer.java:909)
   - org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
   - org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
   - org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
   -
   org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
   - org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
   - org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)



Thank in advance,

Marcus

Reply via email to