I am having an issue with a custom storage extension I am constructing. Essentially I have been tasked to remove any dependency on filesystem/persistence storage types. We are publishing to Couchbase, and not the filesystem, or broker database.
I've done this by writing an abstract class that extends com.tridion.storage.dao.AbstractBaseDAO
. My DAO classes then extend this class rather than something like com.tridion.storage.filesystem.FSPageDAO
.
I've managed to get it to publish to Couchbase, but un-publishing never occurs, even though the success state is returned. I don't even get any logging from my remove
method in my CouchbasePageDAO
class.
A minimal version of my cd_storage_conf.xml
file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration Version="7.0">
<Global>
...
<Storages>
<Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultFile" defaultFilesystem="false">
<Root Path="C:\tridion\data" />
</Storage>
<Storage Type="null" Class="com.customer.tridion.storage.NullDAOFactory" Id="null" />
<Storage Type="couchbase" Class="com.customer.tridion.storage.couchbase.CouchbaseDAOFactory" Id="couchbase"></Storage>
</Storages>
</Global>
<ItemTypes defaultStorageId="null" cached="false">
<Item typeMapping="Page" cached="true" storageId="couchbase" />
</ItemTypes>
</Configuration>
The null storage type just implements all item types, and logs out when methods are called. If I change the defaultStorageId to defaultFile, un-publishing works as expected.
I can only think that there is quite a bit of functionality missing for certain item types that needs implementing. As I've never seen anyone do this before, or any examples online, I've no idea how to progress.
Just seems odd that I don't have a problem publishing, when I use my null storage type as the default type. Maybe there are some reference checking that needs to be performed? I've implemented an item type from com.tridion.storage.dao.ReferenceEntryDAO
, but not really sure what I'm looking for, or if is this is a red herring.
Reading around, I suspect no one really goes down this route, but if anyone has any experience/knowledge of this, I'd appreciated it.