if (! (descriptor instanceof ConcurrentMethodDescriptor)) {
throw new IllegalArgumentException(getClass()
+ " cannot handles descriptors of type " + descriptor.getClass());
}
ConcurrentMethodDescriptor desc = (ConcurrentMethodDescriptor) descriptor;
Node concurrentNode = super.writeDescriptor(parent, nodeName, descriptor);
MethodNode methodNode = new MethodNode();
methodNode.writeJavaMethodDescriptor(concurrentNode, EjbTagNames.METHOD,
desc.getConcurrentMethod());
if( desc.hasLockMetadata() ) {
String lockType = desc.isWriteLocked() ? "Write" : "Read";
appendTextChild(concurrentNode, EjbTagNames.CONCURRENT_LOCK, lockType);
}
if( desc.hasAccessTimeout() ) {
TimeoutValueNode timeoutValueNode = new TimeoutValueNode();
TimeoutValueDescriptor timeoutDesc = new TimeoutValueDescriptor();
timeoutDesc.setValue(desc.getAccessTimeoutValue());
timeoutDesc.setUnit(desc.getAccessTimeoutUnit());
timeoutValueNode.writeDescriptor(concurrentNode, EjbTagNames.CONCURRENT_ACCESS_TIMEOUT,
timeoutDesc);
}
return concurrentNode;