- if (attributeIfc.getOpenType() instanceof SimpleType<?>)
- return new SimpleAttributeWritingStrategy(document, key);
- else if (attributeIfc.getOpenType() instanceof ArrayType<?>) {
- AttributeWritingStrategy innerStrategy = new SimpleAttributeWritingStrategy(document, key);
- return new ArrayAttributeWritingStrategy(innerStrategy);
- }
- throw new IllegalStateException(JavaAttribute.class + " can only provide open type " + SimpleType.class
- + " or " + ArrayType.class);
+ @Override
+ protected AttributeWritingStrategy caseJavaSimpleAttribute(SimpleType<?> openType) {
+ return new SimpleAttributeWritingStrategy(document, key);
+ }
+
+ @Override
+ protected AttributeWritingStrategy caseJavaArrayAttribute(ArrayType<?> openType) {
+ AttributeWritingStrategy innerStrategy = new SimpleAttributeWritingStrategy(document, key);
+ return new ArrayAttributeWritingStrategy(innerStrategy);
+ }
+
+ @Override
+ protected AttributeWritingStrategy caseJavaIdentityRefAttribute(OpenType<?> openType) {
+ return new SimpleIdentityRefAttributeWritingStrategy(document, key);
+ }
+
+ @Override
+ protected AttributeWritingStrategy caseJavaCompositeAttribute(CompositeType openType) {
+ return new SimpleCompositeAttributeWritingStrategy(document, key);
+ }
+
+ @Override
+ protected AttributeWritingStrategy caseJavaUnionAttribute(OpenType<?> openType) {
+ return new SimpleUnionAttributeWritingStrategy(document, key);