You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lenya.apache.org by Michael Wechner <mi...@wyona.com> on 2005/07/10 19:24:30 UTC

Problems with 1.4-dev blob publication

Hi

After creating an entry within the 1.4-dev publication and clicking
on the newly created entry I receive the following error:

untranslated

resource-types: ComponentSelector Attempted to retrieve component with 
null hint.

org.apache.cocoon.ProcessingException: Unable to get transformer handler 
for cocoon://lenya-page/blog/authoring/entry.xml: 
org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in 
creating Transform Handler

cause: org.apache.avalon.framework.component.ComponentException: 
resource-types: ComponentSelector Attempted to retrieve component with 
null hint.

full exception chain stacktrace[untranslated]

org.apache.cocoon.ProcessingException: Unable to get transformer handler for cocoon://lenya-page/blog/authoring/entry.xml: org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in creating Transform Handler
	at org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:320)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:398)
	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:619)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:503)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:455)
	at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:120)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:102)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:102)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.Cocoon.process(Cocoon.java:624)
	at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1143)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
	at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
	at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
	at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
	at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
	at org.mortbay.http.HttpServer.service(HttpServer.java:879)
	at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:300)
	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)
Caused by: org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in creating Transform Handler
	at org.apache.excalibur.xml.xslt.XSLTProcessorImpl.getTransformerHandlerAndValidity(XSLTProcessorImpl.java:336)
	at org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:312)
	... 56 more
Caused by: org.apache.cocoon.sitemap.PatternException: Cannot get variable 'state' in expression '{workflow:state}'
	at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:378)
	at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:213)
	at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:64)
	at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:536)
	at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:546)
	at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:533)
	at org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:291)
	... 56 more
org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in creating Transform Handler
	at org.apache.excalibur.xml.xslt.XSLTProcessorImpl.getTransformerHandlerAndValidity(XSLTProcessorImpl.java:336)
	at org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:312)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:398)
	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:619)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:503)
	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:455)
	at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:120)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:102)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:102)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46)
	at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138)
	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:92)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:234)
	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:176)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:250)
	at org.apache.cocoon.Cocoon.process(Cocoon.java:624)
	at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1143)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
	at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
	at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
	at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
	at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
	at org.mortbay.http.HttpServer.service(HttpServer.java:879)
	at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:300)
	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)
Caused by: org.apache.cocoon.sitemap.PatternException: Cannot get variable 'state' in expression '{workflow:state}'
	at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:378)
	at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:213)
	at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:64)
	at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:536)
	at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:546)
	at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:533)
	at org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:291)
	... 56 more

stacktrace[untranslated]

Any idea what might be the problem?

Thanks

Michi

-- 
Michael Wechner
Wyona      -   Open Source Content Management   -    Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
michael.wechner@wyona.com                        michi@apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Michael Wechner <mi...@wyona.com>.
Andreas Hartmann wrote:

> Michael Wechner wrote:
>
>> somehow I have now problems to create an entry:
>>
>> "file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js", 
>> line 168: uncaught JavaScript exception: at executeUsecase 
>> (file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js, 
>> Line 168): org.apache.lenya.cms.usecase.UsecaseException: 
>> java.lang.ClassCastException
>
>
> Fixed, thanks for reporting.


works again. Thanks very much

Michi

>
> -- Andreas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
>
>


-- 
Michael Wechner
Wyona      -   Open Source Content Management   -    Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
michael.wechner@wyona.com                        michi@apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Andreas Hartmann <an...@apache.org>.
Michael Wechner wrote:

> somehow I have now problems to create an entry:
> 
> "file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js", 
> line 168: uncaught JavaScript exception: at executeUsecase 
> (file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js, 
> Line 168): org.apache.lenya.cms.usecase.UsecaseException: 
> java.lang.ClassCastException

Fixed, thanks for reporting.

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Michael Wechner <mi...@wyona.com>.
Andreas Hartmann wrote:

> Michael Wechner wrote:
>
> [...]
>
>> But publishing doesn't seem to work:
>>
>> The requested document '/entries/2005/07/11/test/index.html' with 
>> document-id '/entries/2005/07/11/test/index' does not exist.
>>
>> I guess its checking the sitetree, which doesn't exist in this case.
>
>
> No, the blog publication uses the SimpleSiteManager.


ok

>
>
>> Any idea what might be the problem?
>
>
> Somehow the publish usecase got lost, it should work again now.


somehow I have now problems to create an entry:

"file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js", 
line 168: uncaught JavaScript exception: at executeUsecase 
(file:/home/michi/src/apache/lenya/trunk/build/lenya/webapp/lenya/usecases/usecases.js, 
Line 168): org.apache.lenya.cms.usecase.UsecaseException: 
java.lang.ClassCastException

Any idea what might be the problem?

Thanks

Michi


>
> -- Andreas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
>
>


-- 
Michael Wechner
Wyona      -   Open Source Content Management   -    Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
michael.wechner@wyona.com                        michi@apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Andreas Hartmann <an...@apache.org>.
Michael Wechner wrote:

[...]

> But publishing doesn't seem to work:
> 
> The requested document '/entries/2005/07/11/test/index.html' with 
> document-id '/entries/2005/07/11/test/index' does not exist.
> 
> I guess its checking the sitetree, which doesn't exist in this case.

No, the blog publication uses the SimpleSiteManager.

> Any idea what might be the problem?

Somehow the publish usecase got lost, it should work again now.

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Michael Wechner <mi...@wyona.com>.
Andreas Hartmann wrote:

> Michael Wechner wrote:
>
>> Hi
>>
>> After creating an entry within the 1.4-dev publication and clicking
>> on the newly created entry I receive the following error:
>>
>> untranslated
>>
>> resource-types: ComponentSelector Attempted to retrieve component 
>> with null hint.
>>
>> org.apache.cocoon.ProcessingException: Unable to get transformer 
>> handler for cocoon://lenya-page/blog/authoring/entry.xml: 
>> org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in 
>> creating Transform Handler
>>
>> cause: org.apache.avalon.framework.component.ComponentException: 
>> resource-types: ComponentSelector Attempted to retrieve component 
>> with null hint.
>
>
> I fixed it. The creator in the resource type config was wrong.
>
> Sorry for the inconvenience,


cool, it's working. But publishing doesn't seem to work:

The requested document '/entries/2005/07/11/test/index.html' with 
document-id '/entries/2005/07/11/test/index' does not exist.

I guess its checking the sitetree, which doesn't exist in this case.
Any idea what might be the problem?

Thanks

Michi

>
>
> -- Andreas
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
> For additional commands, e-mail: dev-help@lenya.apache.org
>
>


-- 
Michael Wechner
Wyona      -   Open Source Content Management   -    Apache Lenya
http://www.wyona.com                      http://lenya.apache.org
michael.wechner@wyona.com                        michi@apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org


Re: Problems with 1.4-dev blob publication

Posted by Andreas Hartmann <an...@apache.org>.
Michael Wechner wrote:
> Hi
> 
> After creating an entry within the 1.4-dev publication and clicking
> on the newly created entry I receive the following error:
> 
> untranslated
> 
> resource-types: ComponentSelector Attempted to retrieve component with 
> null hint.
> 
> org.apache.cocoon.ProcessingException: Unable to get transformer handler 
> for cocoon://lenya-page/blog/authoring/entry.xml: 
> org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception in 
> creating Transform Handler
> 
> cause: org.apache.avalon.framework.component.ComponentException: 
> resource-types: ComponentSelector Attempted to retrieve component with 
> null hint.

I fixed it. The creator in the resource type config was wrong.

Sorry for the inconvenience,

-- Andreas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lenya.apache.org
For additional commands, e-mail: dev-help@lenya.apache.org