You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Timur Izhbulatov <ti...@yxo.ru> on 2005/02/22 07:11:50 UTC

XMLDBSourceFactory

Hi All, 

I found a _very_ strange problem which appears only on Linux. The same 
application worked just fine under win2k. I use Cocoon 2.1.5. 

Here is an excerpt from the configure method of the XMLDBSourceFactory class 
with some additions for debugginug:
//...
       credentialMap = new HashMap();
       Configuration[] drivers = conf.getChildren("driver");
       for (int i = 0; i < drivers.length; i++) {
           String type = drivers[i].getAttribute("type");
           String driver = drivers[i].getAttribute("class"); 

           SourceCredential credential = new SourceCredential(null, null);
           credential.setPrincipal(drivers[i].getAttribute("user", null));
           credential.setPassword(drivers[i].getAttribute("password", 
null));
           credentialMap.put(type, credential);
           getLogger().info("got from map: " + credentialMap.get(type));
//... 

In core.log I have the following lines:
INFO    (2005-02-21) 06:51.24:396   [core.manager] (Unknown-URI) 
Unknown-thread/XMLDBSourceFactory: got from map: 
org.apache.cocoon.components.source.helpers.SourceCredential@15311bd
INFO    (2005-02-21) 06:51.24:866   [core.manager] (Unknown-URI) 
Unknown-thread/XMLDBSourceFactory: got from map: 
org.apache.cocoon.components.source.helpers.SourceCredential@1402d5a 

Fnd after that int the getSource method of the same class:
// ...
       String type = location.substring(start, end);
       this.getLogger().info("key: '" + type + "'");
       SourceCredential credential = 
(SourceCredential)credentialMap.get(type);
       this.getLogger().info("got by key: " + credentialMap.get(type));
       this.getLogger().info("map has key: " + 
credentialMap.containsKey(type));
       Collection values = credentialMap.values();
       for (Iterator i = values.iterator(); i.hasNext(); ) {
           SourceCredential value = (SourceCredential) i.next();
           getLogger().info("vlaue: " + value);
           getLogger().info("map has value: " + 
credentialMap.containsValue(value));
       }
//... 

In log:
INFO    (2005-02-21) 06:51.44:551   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: key: 'exist'
INFO    (2005-02-21) 06:51.44:552   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: got by key: null
INFO    (2005-02-21) 06:51.44:552   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: map has key: false
INFO    (2005-02-21) 06:51.44:552   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: vlaue: 
org.apache.cocoon.components.source.helpers.SourceCredential@15311bd
INFO    (2005-02-21) 06:51.44:553   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: map has value: true
INFO    (2005-02-21) 06:51.44:553   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: vlaue: 
org.apache.cocoon.components.source.helpers.SourceCredential@1402d5a
INFO    (2005-02-21) 06:51.44:553   [core.manager] (/caclient/browse(1)) 
PoolThread-4/XMLDBSourceFactory: map has value: true 

And as a result I have a NullPointerException when going to this URL:
java.lang.NullPointerException
	at 
org.apache.cocoon.components.source.impl.XMLDBSource.<init>(XMLDBSource.java 
:162)
	at 
org.apache.cocoon.components.source.impl.XMLDBSourceFactory.getSource(XMLDBS 
ourceFactory.java:149)
	at 
org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolve 
rImpl.java:208)
	at 
org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonCompone 
ntManager.java:500)
	at 
org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnviron 
ment.java:531)
	at 
org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnviron 
ment.java:518)
	at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:79) 

... And so on 

Any ideas? 

Thanks in advance, 

 --
Timur Izhbulatov

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org