| /* |
| * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation from Oracle TopLink |
| // IBM - Bug 537795: CASE THEN and ELSE scalar expression Constants should not be casted to CASE operand type |
| package org.eclipse.persistence.internal.sessions.factories; |
| |
| // javase imports |
| import static org.eclipse.persistence.sessions.factories.XMLProjectReader.SCHEMA_DIR; |
| import static org.eclipse.persistence.sessions.factories.XMLProjectReader.TOPLINK_10_SCHEMA; |
| |
| import java.security.AccessController; |
| import java.security.PrivilegedActionException; |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.TreeSet; |
| import java.util.Vector; |
| |
| // Java extension imports |
| import javax.xml.namespace.QName; |
| |
| import org.eclipse.persistence.config.CacheIsolationType; |
| // EclipseLink imports |
| import org.eclipse.persistence.descriptors.AllFieldsLockingPolicy; |
| import org.eclipse.persistence.descriptors.CMPPolicy; |
| import org.eclipse.persistence.descriptors.ChangedFieldsLockingPolicy; |
| import org.eclipse.persistence.descriptors.ClassDescriptor; |
| import org.eclipse.persistence.descriptors.DescriptorEvent; |
| import org.eclipse.persistence.descriptors.DescriptorEventAdapter; |
| import org.eclipse.persistence.descriptors.DescriptorEventManager; |
| import org.eclipse.persistence.descriptors.DescriptorQueryManager; |
| import org.eclipse.persistence.descriptors.FetchGroupManager; |
| import org.eclipse.persistence.descriptors.InheritancePolicy; |
| import org.eclipse.persistence.descriptors.InterfacePolicy; |
| import org.eclipse.persistence.descriptors.PessimisticLockingPolicy; |
| import org.eclipse.persistence.descriptors.RelationalDescriptor; |
| import org.eclipse.persistence.descriptors.ReturningPolicy; |
| import org.eclipse.persistence.descriptors.SelectedFieldsLockingPolicy; |
| import org.eclipse.persistence.descriptors.TimestampLockingPolicy; |
| import org.eclipse.persistence.descriptors.VersionLockingPolicy; |
| import org.eclipse.persistence.descriptors.changetracking.AttributeChangeTrackingPolicy; |
| import org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy; |
| import org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy; |
| import org.eclipse.persistence.descriptors.changetracking.ObjectChangeTrackingPolicy; |
| import org.eclipse.persistence.descriptors.copying.AbstractCopyPolicy; |
| import org.eclipse.persistence.descriptors.copying.CloneCopyPolicy; |
| import org.eclipse.persistence.descriptors.copying.InstantiationCopyPolicy; |
| import org.eclipse.persistence.descriptors.invalidation.CacheInvalidationPolicy; |
| import org.eclipse.persistence.descriptors.invalidation.DailyCacheInvalidationPolicy; |
| import org.eclipse.persistence.descriptors.invalidation.NoExpiryCacheInvalidationPolicy; |
| import org.eclipse.persistence.descriptors.invalidation.TimeToLiveCacheInvalidationPolicy; |
| import org.eclipse.persistence.eis.EISDescriptor; |
| import org.eclipse.persistence.eis.EISLogin; |
| //import org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence; |
| import org.eclipse.persistence.eis.mappings.EISCompositeCollectionMapping; |
| import org.eclipse.persistence.eis.mappings.EISCompositeDirectCollectionMapping; |
| import org.eclipse.persistence.eis.mappings.EISCompositeObjectMapping; |
| import org.eclipse.persistence.eis.mappings.EISDirectMapping; |
| import org.eclipse.persistence.eis.mappings.EISOneToManyMapping; |
| import org.eclipse.persistence.eis.mappings.EISOneToOneMapping; |
| import org.eclipse.persistence.eis.mappings.EISTransformationMapping; |
| import org.eclipse.persistence.exceptions.ConversionException; |
| import org.eclipse.persistence.expressions.Expression; |
| import org.eclipse.persistence.expressions.ExpressionBuilder; |
| import org.eclipse.persistence.expressions.ExpressionOperator; |
| import org.eclipse.persistence.history.HistoryPolicy; |
| import org.eclipse.persistence.internal.descriptors.FieldTransformation; |
| import org.eclipse.persistence.internal.descriptors.FieldTranslation; |
| import org.eclipse.persistence.internal.descriptors.InstantiationPolicy; |
| import org.eclipse.persistence.internal.descriptors.MethodBasedFieldTransformation; |
| import org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy; |
| import org.eclipse.persistence.internal.descriptors.QueryArgument; |
| import org.eclipse.persistence.internal.descriptors.QueryKeyReference; |
| import org.eclipse.persistence.internal.descriptors.TransformerBasedFieldTransformation; |
| import org.eclipse.persistence.internal.descriptors.TypeMapping; |
| import org.eclipse.persistence.internal.expressions.ConstantExpression; |
| import org.eclipse.persistence.internal.expressions.ExpressionOperatorConverter; |
| import org.eclipse.persistence.internal.expressions.FieldExpression; |
| import org.eclipse.persistence.internal.expressions.FunctionExpression; |
| import org.eclipse.persistence.internal.expressions.LogicalExpression; |
| import org.eclipse.persistence.internal.expressions.ParameterExpression; |
| import org.eclipse.persistence.internal.expressions.QueryKeyExpression; |
| import org.eclipse.persistence.internal.expressions.RelationExpression; |
| import org.eclipse.persistence.internal.helper.ClassConstants; |
| import org.eclipse.persistence.internal.helper.DatabaseField; |
| import org.eclipse.persistence.internal.helper.DatabaseTable; |
| import org.eclipse.persistence.internal.helper.NonSynchronizedVector; |
| import org.eclipse.persistence.internal.history.HistoricalDatabaseTable; |
| import org.eclipse.persistence.internal.identitymaps.CacheIdentityMap; |
| import org.eclipse.persistence.internal.identitymaps.FullIdentityMap; |
| import org.eclipse.persistence.internal.identitymaps.HardCacheWeakIdentityMap; |
| import org.eclipse.persistence.internal.identitymaps.NoIdentityMap; |
| import org.eclipse.persistence.internal.identitymaps.SoftCacheWeakIdentityMap; |
| import org.eclipse.persistence.internal.identitymaps.WeakIdentityMap; |
| import org.eclipse.persistence.internal.indirection.BasicIndirectionPolicy; |
| import org.eclipse.persistence.internal.indirection.ContainerIndirectionPolicy; |
| import org.eclipse.persistence.internal.indirection.IndirectionPolicy; |
| import org.eclipse.persistence.internal.indirection.NoIndirectionPolicy; |
| import org.eclipse.persistence.internal.indirection.ProxyIndirectionPolicy; |
| import org.eclipse.persistence.internal.indirection.TransparentIndirectionPolicy; |
| import org.eclipse.persistence.internal.oxm.Namespace; |
| import org.eclipse.persistence.internal.oxm.QNameInheritancePolicy; |
| import org.eclipse.persistence.internal.oxm.XMLConversionPair; |
| import org.eclipse.persistence.internal.queries.CollectionContainerPolicy; |
| import org.eclipse.persistence.internal.queries.ContainerPolicy; |
| import org.eclipse.persistence.internal.queries.InterfaceContainerPolicy; |
| import org.eclipse.persistence.internal.queries.ListContainerPolicy; |
| import org.eclipse.persistence.internal.queries.MapContainerPolicy; |
| import org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy; |
| import org.eclipse.persistence.internal.queries.ReportItem; |
| import org.eclipse.persistence.internal.security.PrivilegedAccessHelper; |
| import org.eclipse.persistence.internal.security.PrivilegedClassForName; |
| import org.eclipse.persistence.internal.security.PrivilegedNewInstanceFromClass; |
| import org.eclipse.persistence.mappings.AggregateCollectionMapping; |
| import org.eclipse.persistence.mappings.AggregateMapping; |
| import org.eclipse.persistence.mappings.AggregateObjectMapping; |
| import org.eclipse.persistence.mappings.Association; |
| import org.eclipse.persistence.mappings.AttributeAccessor; |
| import org.eclipse.persistence.mappings.CollectionMapping; |
| import org.eclipse.persistence.mappings.DatabaseMapping; |
| import org.eclipse.persistence.mappings.DirectCollectionMapping; |
| import org.eclipse.persistence.mappings.DirectMapMapping; |
| import org.eclipse.persistence.mappings.DirectToFieldMapping; |
| import org.eclipse.persistence.mappings.ForeignReferenceMapping; |
| import org.eclipse.persistence.mappings.ManyToManyMapping; |
| import org.eclipse.persistence.mappings.ObjectReferenceMapping; |
| import org.eclipse.persistence.mappings.OneToManyMapping; |
| import org.eclipse.persistence.mappings.OneToOneMapping; |
| import org.eclipse.persistence.mappings.PropertyAssociation; |
| import org.eclipse.persistence.mappings.TransformationMapping; |
| import org.eclipse.persistence.mappings.TypedAssociation; |
| import org.eclipse.persistence.mappings.VariableOneToOneMapping; |
| import org.eclipse.persistence.mappings.converters.ClassInstanceConverter; |
| import org.eclipse.persistence.mappings.converters.Converter; |
| import org.eclipse.persistence.mappings.converters.ObjectTypeConverter; |
| import org.eclipse.persistence.mappings.converters.SerializedObjectConverter; |
| import org.eclipse.persistence.mappings.converters.TypeConversionConverter; |
| import org.eclipse.persistence.mappings.foundation.AbstractCompositeCollectionMapping; |
| import org.eclipse.persistence.mappings.foundation.AbstractCompositeDirectCollectionMapping; |
| import org.eclipse.persistence.mappings.foundation.AbstractCompositeObjectMapping; |
| import org.eclipse.persistence.mappings.foundation.AbstractDirectMapping; |
| import org.eclipse.persistence.mappings.foundation.AbstractTransformationMapping; |
| import org.eclipse.persistence.mappings.querykeys.DirectQueryKey; |
| import org.eclipse.persistence.mappings.querykeys.ForeignReferenceQueryKey; |
| import org.eclipse.persistence.mappings.querykeys.OneToManyQueryKey; |
| import org.eclipse.persistence.mappings.querykeys.OneToOneQueryKey; |
| import org.eclipse.persistence.mappings.querykeys.QueryKey; |
| import org.eclipse.persistence.mappings.structures.ArrayMapping; |
| import org.eclipse.persistence.mappings.structures.NestedTableMapping; |
| import org.eclipse.persistence.mappings.structures.ObjectArrayMapping; |
| import org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor; |
| import org.eclipse.persistence.mappings.structures.ReferenceMapping; |
| import org.eclipse.persistence.mappings.structures.StructureMapping; |
| import org.eclipse.persistence.mappings.transformers.ConstantTransformer; |
| import org.eclipse.persistence.oxm.NamespaceResolver; |
| import org.eclipse.persistence.oxm.XMLConstants; |
| import org.eclipse.persistence.oxm.XMLDescriptor; |
| import org.eclipse.persistence.oxm.XMLField; |
| import org.eclipse.persistence.oxm.XMLLogin; |
| import org.eclipse.persistence.oxm.XMLUnionField; |
| import org.eclipse.persistence.oxm.mappings.XMLAnyCollectionMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLAnyObjectMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLCompositeDirectCollectionMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLTransformationMapping; |
| import org.eclipse.persistence.oxm.schema.XMLSchemaClassPathReference; |
| import org.eclipse.persistence.oxm.schema.XMLSchemaFileReference; |
| import org.eclipse.persistence.oxm.schema.XMLSchemaReference; |
| import org.eclipse.persistence.oxm.schema.XMLSchemaURLReference; |
| import org.eclipse.persistence.queries.Call; |
| import org.eclipse.persistence.queries.DataModifyQuery; |
| import org.eclipse.persistence.queries.DataReadQuery; |
| import org.eclipse.persistence.queries.DatabaseQuery; |
| import org.eclipse.persistence.queries.DeleteAllQuery; |
| import org.eclipse.persistence.queries.DeleteObjectQuery; |
| import org.eclipse.persistence.queries.DirectReadQuery; |
| import org.eclipse.persistence.queries.DoesExistQuery; |
| import org.eclipse.persistence.queries.FetchGroup; |
| import org.eclipse.persistence.queries.InMemoryQueryIndirectionPolicy; |
| import org.eclipse.persistence.queries.InsertObjectQuery; |
| import org.eclipse.persistence.queries.JPQLCall; |
| import org.eclipse.persistence.queries.MethodBaseQueryRedirector; |
| import org.eclipse.persistence.queries.ObjectLevelReadQuery; |
| import org.eclipse.persistence.queries.QueryResultsCachePolicy; |
| import org.eclipse.persistence.queries.ReadAllQuery; |
| import org.eclipse.persistence.queries.ReadObjectQuery; |
| import org.eclipse.persistence.queries.ReadQuery; |
| import org.eclipse.persistence.queries.ReportQuery; |
| import org.eclipse.persistence.queries.SQLCall; |
| import org.eclipse.persistence.queries.UpdateObjectQuery; |
| import org.eclipse.persistence.queries.ValueReadQuery; |
| import org.eclipse.persistence.sequencing.DefaultSequence; |
| import org.eclipse.persistence.sequencing.NativeSequence; |
| import org.eclipse.persistence.sequencing.Sequence; |
| import org.eclipse.persistence.sequencing.TableSequence; |
| import org.eclipse.persistence.sequencing.UnaryTableSequence; |
| import org.eclipse.persistence.sessions.DatabaseLogin; |
| import org.eclipse.persistence.sessions.DatasourceLogin; |
| import org.eclipse.persistence.sessions.Project; |
| import org.eclipse.persistence.sessions.Session; |
| |
| /** |
| * INTERNAL: Define the TopLink OX project and descriptor information to read a OracleAS TopLink 10<i>g</i> (10.0.3) project from an XML file. Note any changes must be reflected in the OPM XML schema. |
| */ |
| public class ObjectPersistenceRuntimeXMLProject extends NamespaceResolvableProject { |
| |
| /** |
| * INTERNAL: Return a new descriptor project. |
| */ |
| public ObjectPersistenceRuntimeXMLProject() { |
| super(); |
| } |
| |
| @Override |
| protected void buildDescriptors() { |
| addDescriptor(buildProjectDescriptor()); |
| addDescriptor(buildClassDescriptorDescriptor()); |
| addDescriptor(buildRelationalDescriptorDescriptor()); |
| addDescriptor(buildObjectRelationalDataTypeDescriptorDescriptor()); |
| |
| addDescriptor(buildDatasourceLoginDescriptor()); |
| addDescriptor(buildDatabaseLoginDescriptor()); |
| |
| addDescriptor(buildInheritancePolicyDescriptor()); |
| addDescriptor(buildInterfacePolicyDescriptor()); |
| addDescriptor(buildOptimisticLockingPolicyDescriptor()); |
| addDescriptor(buildAllFieldsLockingPolicyDescriptor()); |
| addDescriptor(buildSelectedFieldsLockingPolicyDescriptor()); |
| addDescriptor(buildChangedFieldsLockingPolicyDescriptor()); |
| addDescriptor(buildVersionLockingPolicyDescriptor()); |
| addDescriptor(buildTimestmapLockingPolicyDescriptor()); |
| addDescriptor(buildEventManagerDescriptor()); |
| addDescriptor(buildQueryManagerDescriptor()); |
| |
| addDescriptor(buildDatabaseQueryDescriptor()); |
| addDescriptor(buildReadQueryDescriptor()); |
| addDescriptor(buildObjectLevelReadQueryDescriptor()); |
| addDescriptor(buildReadAllObjectQueryDescriptor()); |
| addDescriptor(buildReadObjectQueryDescriptor()); |
| addDescriptor(buildDataReadQueryDescriptor()); |
| addDescriptor(buildDataModifyQueryDescriptor()); |
| addDescriptor(buildDirectReadQueryDescriptor()); |
| addDescriptor(buildValueReadQueryDescriptor()); |
| addDescriptor(buildDeleteObjectQueryDescriptor()); |
| addDescriptor(buildDeleteAllQueryDescriptor()); |
| addDescriptor(buildInsertObjectQueryDescriptor()); |
| addDescriptor(buildUpdateObjectQueryDescriptor()); |
| addDescriptor(buildDoesExistQueryDescriptor()); |
| addDescriptor(buildReportQueryDescriptor()); |
| |
| addDescriptor(buildCallDescriptor()); |
| addDescriptor(buildSQLCallDescriptor()); |
| addDescriptor(buildJPQLCallDescriptor()); |
| addDescriptor(buildMethodBaseQueryRedirectorDescriptor()); |
| addDescriptor(buildInMemoryQueryIndirectionPolicyDescriptor()); |
| addDescriptor(buildInstantiationPolicyDescriptor()); |
| addDescriptor(buildCopyPolicyDescriptor()); |
| addDescriptor(buildCloneCopyPolicyDescriptor()); |
| addDescriptor(buildInstantiationCopyPolicyDescriptor()); |
| addDescriptor(buildContainerPolicyDescriptor()); |
| addDescriptor(buildInterfaceContainerPolicyDescriptor()); |
| addDescriptor(buildMapContainerPolicyDescriptor()); |
| addDescriptor(buildCollectionContainerPolicyDescriptor()); |
| addDescriptor(buildListContainerPolicyDescriptor()); |
| addDescriptor(buildDirectMapContainerPolicyDescriptor()); |
| addDescriptor(buildIndirectionPolicyDescriptor()); |
| addDescriptor(buildBasicIndirectionPolicyDescriptor()); |
| addDescriptor(buildTransparentIndirectionPolicyDescriptor()); |
| addDescriptor(buildProxyIndirectionPolicyDescriptor()); |
| addDescriptor(buildContainerIndirectionPolicyDescriptor()); |
| addDescriptor(buildAssociationDescriptor()); |
| addDescriptor(buildPropertyAssociationDescriptor()); |
| addDescriptor(buildFieldTranslationDescriptor()); |
| addDescriptor(buildTypedAssociationDescriptor()); |
| addDescriptor(buildTypeMappingDescriptor()); |
| addDescriptor(buildFieldTransformationDescriptor()); |
| addDescriptor(buildMethodBasedFieldTransformationDescriptor()); |
| addDescriptor(buildTransformerBasedFieldTransformationDescriptor()); |
| addDescriptor(buildQueryArgumentDescriptor()); |
| addDescriptor(buildQueryKeyReferenceDescriptor()); |
| addDescriptor(buildReportItemDescriptor()); |
| addDescriptor(buildQueryResultCachePolicyDescriptor()); |
| |
| addDescriptor(buildQueryKeyDescriptor()); |
| addDescriptor(buildDirectQueryKeyDescriptor()); |
| addDescriptor(buildDatabaseTableDescriptor()); |
| addDescriptor(buildDatabaseFieldDescriptor()); |
| |
| addDescriptor(buildDatabaseMappingDescriptor()); |
| |
| addDescriptor(buildAbstractDirectMappingDescriptor()); |
| addDescriptor(buildDirectToFieldMappingDescriptor()); |
| addDescriptor(buildXMLDirectMappingDescriptor()); |
| try { |
| Class<Object> typesafeenumClass = new PrivilegedClassForName<>("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run(); |
| addDescriptor(buildTypesafeEnumConverterDescriptor(typesafeenumClass)); |
| } |
| catch (ClassNotFoundException cnfe) { |
| // The JAXB component isn't available, so no need to do anything |
| } |
| addDescriptor(buildConverterDescriptor()); |
| addDescriptor(buildObjectTypeConverterDescriptor()); |
| addDescriptor(buildSerializedObjectConverterDescriptor()); |
| addDescriptor(buildTypeConversionConverterDescriptor()); |
| |
| addDescriptor(buildAbstractTransformationMappingDescriptor()); |
| addDescriptor(buildTransformationMappingDescriptor()); |
| addDescriptor(buildXMLTransformationMappingDescriptor()); |
| |
| addDescriptor(buildAggregateMappingDescriptor()); |
| addDescriptor(buildAggregateObjectMappingDescriptor()); |
| addDescriptor(buildStructureMappingDescriptor()); |
| addDescriptor(buildObjectArrayMappingDescriptor()); |
| |
| addDescriptor(buildForeignReferenceMappingDescriptor()); |
| addDescriptor(buildCollectionMappingDescriptor()); |
| addDescriptor(buildOneToManyMappingMappingDescriptor()); |
| addDescriptor(buildManyToManyMappingMappingDescriptor()); |
| addDescriptor(buildAggregateCollectionMappingDescriptor()); |
| addDescriptor(buildDirectCollectionMappingDescriptor()); |
| addDescriptor(buildDirectMapMappingDescriptor()); |
| addDescriptor(buildNestedTableMappingDescriptor()); |
| addDescriptor(buildObjectReferenceMappingDescriptor()); |
| addDescriptor(buildOneToOneMappingDescriptor()); |
| addDescriptor(buildReferenceMappingDescriptor()); |
| addDescriptor(buildVariableOneToOneMappingDescriptor()); |
| |
| addDescriptor(buildAbstractCompositeDirectCollectionMappingDescriptor()); |
| addDescriptor(buildXMLCompositeDirectCollectionMappingDescriptor()); |
| addDescriptor(buildArrayMappingDescriptor()); |
| |
| addDescriptor(buildExpressionDescriptor()); |
| addDescriptor(buildLogicalExpressionDescriptor()); |
| addDescriptor(buildRelationExpressionDescriptor()); |
| addDescriptor(buildFunctionExpressionDescriptor()); |
| addDescriptor(buildParameterExpressionDescriptor()); |
| addDescriptor(buildConstantExpressionDescriptor()); |
| addDescriptor(buildFieldExpressionDescriptor()); |
| addDescriptor(buildQueryKeyExpressionDescriptor()); |
| addDescriptor(buildExpressionBuilderDescriptor()); |
| |
| // TopLink OX |
| addDescriptor(buildAbstractCompositeObjectMappingDescriptor()); |
| addDescriptor(buildXMLCompositeObjectMappingDescriptor()); |
| addDescriptor(buildAbstractCompositeCollectionMappingDescriptor()); |
| addDescriptor(buildXMLCompositeCollectionMappingDescriptor()); |
| addDescriptor(buildXMLAnyCollectionMappingDescriptor()); |
| addDescriptor(buildXMLAnyObjectMappingDescriptor()); |
| addDescriptor(buildOXXMLDescriptorDescriptor()); |
| addDescriptor(buildXMLFieldDescriptor()); |
| addDescriptor(buildXMLUnionFieldDescriptor()); |
| addDescriptor(buildXMLConversionPairDescriptor()); |
| addDescriptor(buildNamespaceResolverDescriptor()); |
| addDescriptor(buildNamespaceDescriptor()); |
| addDescriptor(buildXMLSchemaReferenceDescriptor()); |
| addDescriptor(buildXMLSchemaClassPathReferenceDescriptor()); |
| addDescriptor(buildXMLSchemaFileReferenceDescriptor()); |
| addDescriptor(buildXMLSchemaURLReferenceDescriptor()); |
| addDescriptor(buildXMLLoginDescriptor()); |
| addDescriptor(buildQNameInheritancePolicyDescriptor()); |
| |
| addDescriptor(buildCacheInvalidationPolicyDescriptor()); |
| addDescriptor(buildNoExpiryCacheInvalidationPolicyDescriptor()); |
| addDescriptor(buildTimeToLiveCacheInvalidationPolicyDescriptor()); |
| addDescriptor(buildDailyCacheInvalidationPolicyDescriptor()); |
| |
| addDescriptor(buildHistoryPolicyDescriptor()); |
| addDescriptor(buildHistoryTableDescriptor()); |
| |
| addDescriptor(buildReturningPolicyDescriptor()); |
| addDescriptor(buildReturningFieldInfoDescriptor()); |
| |
| // cmp |
| addDescriptor(buildCMPPolicyDescriptor()); |
| addDescriptor(buildPessimisticLockingPolicyDescriptor()); |
| |
| // fetch group |
| addDescriptor(buildFetchGroupManagerDescriptor()); |
| addDescriptor(buildFetchGroupDescriptor()); |
| |
| // sequences |
| addDescriptor(buildSequenceDescriptor()); |
| addDescriptor(buildDefaultSequenceDescriptor()); |
| addDescriptor(buildNativeSequenceDescriptor()); |
| addDescriptor(buildTableSequenceDescriptor()); |
| addDescriptor(buildUnaryTableSequenceDescriptor()); |
| try { |
| Class.forName("org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence"); |
| addDescriptor(buildXMLFileSequenceDescriptor()); |
| } catch (Exception missing) { |
| // Ignore. |
| } |
| // change policy |
| addDescriptor(buildChangePolicyDescriptor()); |
| addDescriptor(buildDeferredChangeDetectionPolicyDescriptor()); |
| addDescriptor(buildObjectChangeTrackingPolicyDescriptor()); |
| addDescriptor(buildAttributeChangeTrackingPolicyDescriptor()); |
| |
| /* |
| * support for additional runtime elements: // expressions (query, qk, mapping) // stored proc // properties // attribute accessors // inheritance extractors // converter class |
| * |
| * is being added incrementally through ObjectPersistenceRuntimeXMLProject_11_1_1 |
| */ |
| } |
| |
| @Override |
| public String getPrimaryNamespacePrefix() { |
| return TOPLINK_PREFIX; |
| } |
| |
| @Override |
| public String getPrimaryNamespace() { |
| return TOPLINK_NAMESPACE; |
| } |
| |
| @Override |
| public String getSecondaryNamespacePrefix() { |
| return OPM_PREFIX; |
| } |
| |
| @Override |
| public String getSecondaryNamespace() { |
| return OPM_NAMESPACE; |
| } |
| |
| protected ClassDescriptor buildAggregateCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AggregateCollectionMapping.class); |
| descriptor.getInheritancePolicy().setParentClass(CollectionMapping.class); |
| |
| XMLCompositeCollectionMapping sourceToTargetKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| sourceToTargetKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| AggregateCollectionMapping mapping = (AggregateCollectionMapping)object; |
| List<DatabaseField> sourceFields = mapping.getSourceKeyFields(); |
| List<DatabaseField> targetFields = mapping.getTargetForeignKeyFields(); |
| List associations = new ArrayList(sourceFields.size()); |
| for (int index = 0; index < sourceFields.size(); index++) { |
| associations.add(new Association(targetFields.get(index), sourceFields.get(index))); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| AggregateCollectionMapping mapping = (AggregateCollectionMapping)object; |
| List associations = (List)value; |
| mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| mapping.setTargetForeignKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); |
| mapping.getTargetForeignKeyFields().add((DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeName("sourceToTargetKeyFieldAssociations"); |
| sourceToTargetKeyFieldAssociationsMapping.setXPath(getPrimaryNamespaceXPath() + "target-foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(sourceToTargetKeyFieldAssociationsMapping); |
| |
| XMLDirectMapping relationshipPartnerAttributeNameMapping = new XMLDirectMapping(); |
| relationshipPartnerAttributeNameMapping.setAttributeName("relationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setGetMethodName("getRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setSetMethodName("setRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setXPath(getPrimaryNamespaceXPath() + "bidirectional-target-attribute/text()"); |
| descriptor.addMapping(relationshipPartnerAttributeNameMapping); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| // delete-all query |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAggregateMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(AggregateMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLDirectMapping referenceClassMapping = new XMLDirectMapping(); |
| referenceClassMapping.setAttributeName("referenceClass"); |
| referenceClassMapping.setGetMethodName("getReferenceClass"); |
| referenceClassMapping.setSetMethodName("setReferenceClass"); |
| referenceClassMapping.setXPath(getPrimaryNamespaceXPath() + "reference-class/text()"); |
| descriptor.addMapping(referenceClassMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAggregateObjectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AggregateObjectMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AggregateMapping.class); |
| |
| XMLDirectMapping isNullAllowedMapping = new XMLDirectMapping(); |
| isNullAllowedMapping.setAttributeName("isNullAllowed"); |
| isNullAllowedMapping.setGetMethodName("isNullAllowed"); |
| isNullAllowedMapping.setSetMethodName("setIsNullAllowed"); |
| isNullAllowedMapping.setXPath(getPrimaryNamespaceXPath() + "allow-null/text()"); |
| isNullAllowedMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(isNullAllowedMapping); |
| |
| XMLCompositeCollectionMapping aggregateToSourceFieldNameAssociationsMapping = new XMLCompositeCollectionMapping(); |
| aggregateToSourceFieldNameAssociationsMapping.setReferenceClass(FieldTranslation.class); |
| // Handle translation of fields associations string to field. |
| aggregateToSourceFieldNameAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| /*bug 322233: AttributeOverrides and AssociationOverride |
| * changed getAggregateToSourceFieldAssociations to hold String->DatabaseField associations |
| */ |
| AggregateObjectMapping mapping = (AggregateObjectMapping)object; |
| Vector<Association> associations = mapping.getAggregateToSourceFieldAssociations(); |
| Vector translations = new Vector(associations.size()); |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = associations.get(index); |
| FieldTranslation translation = new FieldTranslation(); |
| translation.setKey(new DatabaseField((String)association.getKey())); |
| translation.setValue(association.getValue()); |
| translations.add(translation); |
| } |
| return translations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| AggregateObjectMapping mapping = (AggregateObjectMapping)object; |
| Vector associations = (Vector)value; |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(((DatabaseField)association.getKey()).getQualifiedName()); |
| } |
| |
| mapping.setAggregateToSourceFieldAssociations(associations); |
| } |
| }); |
| aggregateToSourceFieldNameAssociationsMapping.setAttributeName("aggregateToSourceFieldNameAssociationsMapping"); |
| aggregateToSourceFieldNameAssociationsMapping.setXPath(getPrimaryNamespaceXPath() + "field-translations/" + getPrimaryNamespaceXPath() + "field-translation"); |
| descriptor.addMapping(aggregateToSourceFieldNameAssociationsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildArrayMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ArrayMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeDirectCollectionMapping.class); |
| |
| XMLDirectMapping structureMapping = new XMLDirectMapping(); |
| structureMapping.setAttributeName("structureName"); |
| structureMapping.setGetMethodName("getStructureName"); |
| structureMapping.setSetMethodName("setStructureName"); |
| structureMapping.setXPath(getPrimaryNamespaceXPath() + "structure/text()"); |
| descriptor.addMapping(structureMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildBasicIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(BasicIndirectionPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(IndirectionPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCollectionContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(CollectionContainerPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(InterfaceContainerPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(CollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ForeignReferenceMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildContainerIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ContainerIndirectionPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(IndirectionPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ContainerPolicy.class); |
| descriptor.setDefaultRootElement("container-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(CollectionContainerPolicy.class, getPrimaryNamespaceXPath() + "container-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(ListContainerPolicy.class, getPrimaryNamespaceXPath() + "list-container-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(MapContainerPolicy.class, getPrimaryNamespaceXPath() + "map-container-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(MappedKeyMapContainerPolicy.class, getPrimaryNamespaceXPath() + "direct-map-container-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCopyPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(AbstractCopyPolicy.class); |
| descriptor.setDefaultRootElement("copy-policy"); |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(CloneCopyPolicy.class, getPrimaryNamespaceXPath() + "clone-copy-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(InstantiationCopyPolicy.class, getPrimaryNamespaceXPath() + "instantiation-copy-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCloneCopyPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(CloneCopyPolicy.class); |
| descriptor.setDefaultRootElement("copy-policy"); |
| descriptor.getInheritancePolicy().setParentClass(AbstractCopyPolicy.class); |
| XMLDirectMapping methodNameMapping = new XMLDirectMapping(); |
| methodNameMapping.setAttributeName("methodName"); |
| methodNameMapping.setGetMethodName("getMethodName"); |
| methodNameMapping.setSetMethodName("setMethodName"); |
| methodNameMapping.setXPath(getPrimaryNamespaceXPath() + "method/text()"); |
| descriptor.addMapping(methodNameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInstantiationCopyPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(InstantiationCopyPolicy.class); |
| descriptor.setDefaultRootElement("copy-policy"); |
| descriptor.getInheritancePolicy().setParentClass(AbstractCopyPolicy.class); |
| return descriptor; |
| } |
| |
| public ClassDescriptor buildDatasourceLoginDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatasourceLogin.class); |
| descriptor.setDefaultRootElement("login"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DatabaseLogin.class, getPrimaryNamespaceXPath() + "database-login"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISLogin.class, getPrimaryNamespaceXPath() + "eis-login"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLLogin.class, getPrimaryNamespaceXPath() + "xml-login"); |
| |
| XMLDirectMapping platformMapping = new XMLDirectMapping(); |
| platformMapping.setAttributeName("platform"); |
| platformMapping.setGetMethodName("getDatasourcePlatform"); |
| platformMapping.setSetMethodName("usePlatform"); |
| platformMapping.setConverter(new Converter() { |
| protected DatabaseMapping mapping; |
| private Map platformList; |
| private String oldPrefix = "oracle.toplink."; |
| private String newPrefix = "org.eclipse.persistence."; |
| private String oldOxmPrefix = oldPrefix + "ox."; |
| private String newOxmPrefix = newPrefix + "oxm."; |
| |
| @Override |
| public Object convertObjectValueToDataValue(Object objectValue, Session session) { |
| if (objectValue == null) { |
| return null; |
| } |
| return objectValue.getClass().getName(); |
| } |
| |
| @Override |
| public Object convertDataValueToObjectValue(Object fieldValue, Session session) { |
| if(fieldValue == null) { |
| return null; |
| } |
| if(((String)fieldValue).startsWith(oldPrefix)) { |
| if(((String)fieldValue).startsWith(oldOxmPrefix)) { |
| fieldValue = ((String)fieldValue).replaceFirst(oldOxmPrefix, newOxmPrefix); |
| } else { |
| fieldValue = ((String)fieldValue).replaceFirst(oldPrefix, newPrefix); |
| } |
| } |
| // convert deprecated platforms to new platforms |
| Object result = platformList.get(fieldValue); |
| if (result != null) { |
| fieldValue = result; |
| } |
| |
| Object attributeValue; |
| Class attributeClass = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS); |
| try { |
| if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) { |
| try { |
| attributeValue = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(attributeClass)); |
| } |
| catch (PrivilegedActionException exception) { |
| throw ConversionException.couldNotBeConverted(fieldValue, attributeClass, exception.getException()); |
| } |
| } |
| else { |
| attributeValue = PrivilegedAccessHelper.newInstanceFromClass(attributeClass); |
| } |
| } |
| catch (Exception exception) { |
| throw ConversionException.couldNotBeConverted(fieldValue, attributeClass, exception); |
| } |
| |
| return attributeValue; |
| } |
| |
| @Override |
| public boolean isMutable() { |
| return false; |
| } |
| |
| @Override |
| public void initialize(DatabaseMapping mapping, Session session) { |
| this.platformList = new HashMap(); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AccessPlatform", "org.eclipse.persistence.platform.database.AccessPlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AttunityPlatform", "org.eclipse.persistence.platform.database.AttunityPlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.CloudscapePlatform", "org.eclipse.persistence.platform.database.CloudscapePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.DatabasePlatform", "org.eclipse.persistence.platform.database.DatabasePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.DB2MainframePlatform", "org.eclipse.persistence.platform.database.DB2MainframePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.DB2Platform", "org.eclipse.persistence.platform.database.DB2Platform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.DBasePlatform", "org.eclipse.persistence.platform.database.DBasePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.HSQLPlatform", "org.eclipse.persistence.platform.database.HSQLPlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.InformixPlatform", "org.eclipse.persistence.platform.database.InformixPlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.OraclePlatform", "org.eclipse.persistence.platform.database.OraclePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.PointBasePlatform", "org.eclipse.persistence.platform.database.PointBasePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.SQLAnyWherePlatform", "org.eclipse.persistence.platform.database.SQLAnywherePlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.SQLServerPlatform", "org.eclipse.persistence.platform.database.SQLServerPlatform"); |
| this.platformList.put("org.eclipse.persistence.internal.databaseaccess.SybasePlatform", "org.eclipse.persistence.platform.database.SybasePlatform"); |
| this.platformList.put("org.eclipse.persistence.oraclespecific.Oracle8Platform", "org.eclipse.persistence.platform.database.oracle.Oracle8Platform"); |
| this.platformList.put("org.eclipse.persistence.oraclespecific.Oracle9Platform", "org.eclipse.persistence.platform.database.oracle.Oracle9Platform"); |
| this.platformList.put("org.eclipse.persistence.platform.database.SQLAnyWherePlatform", "org.eclipse.persistence.platform.database.SQLAnywherePlatform"); |
| this.mapping = mapping; |
| // CR#... Mapping must also have the field classification. |
| if (this.mapping.isDirectToFieldMapping()) { |
| AbstractDirectMapping directMapping = (AbstractDirectMapping)this.mapping; |
| |
| // Allow user to specify field type to override computed value. (i.e. blob, nchar) |
| if (directMapping.getFieldClassification() == null) { |
| directMapping.setFieldClassification(ClassConstants.STRING); |
| } |
| } |
| } |
| |
| }); |
| platformMapping.setXPath(getPrimaryNamespaceXPath() + "platform-class/text()"); |
| descriptor.addMapping(platformMapping); |
| |
| XMLDirectMapping userNameMapping = new XMLDirectMapping(); |
| userNameMapping.setAttributeName("userName"); |
| userNameMapping.setGetMethodName("getUserName"); |
| userNameMapping.setSetMethodName("setUserName"); |
| userNameMapping.setXPath(getPrimaryNamespaceXPath() + "user-name/text()"); |
| descriptor.addMapping(userNameMapping); |
| |
| XMLDirectMapping passwordMapping = new XMLDirectMapping(); |
| passwordMapping.setAttributeName("password"); |
| passwordMapping.setGetMethodName("getPassword"); |
| passwordMapping.setSetMethodName("setEncryptedPassword"); |
| passwordMapping.setXPath(getPrimaryNamespaceXPath() + "password/text()"); |
| descriptor.addMapping(passwordMapping); |
| |
| XMLDirectMapping usesExternalConnectionPoolingMapping = new XMLDirectMapping(); |
| usesExternalConnectionPoolingMapping.setAttributeName("usesExternalConnectionPooling"); |
| usesExternalConnectionPoolingMapping.setGetMethodName("shouldUseExternalConnectionPooling"); |
| usesExternalConnectionPoolingMapping.setSetMethodName("setUsesExternalConnectionPooling"); |
| usesExternalConnectionPoolingMapping.setXPath(getPrimaryNamespaceXPath() + "external-connection-pooling/text()"); |
| usesExternalConnectionPoolingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesExternalConnectionPoolingMapping); |
| |
| XMLDirectMapping usesExternalTransactionControllerMapping = new XMLDirectMapping(); |
| usesExternalTransactionControllerMapping.setAttributeName("usesExternalTransactionController"); |
| usesExternalTransactionControllerMapping.setGetMethodName("shouldUseExternalTransactionController"); |
| usesExternalTransactionControllerMapping.setSetMethodName("setUsesExternalTransactionController"); |
| usesExternalTransactionControllerMapping.setXPath(getPrimaryNamespaceXPath() + "external-transaction-controller/text()"); |
| usesExternalTransactionControllerMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesExternalTransactionControllerMapping); |
| |
| XMLCompositeObjectMapping defaultSequenceMapping = new XMLCompositeObjectMapping(); |
| defaultSequenceMapping.setAttributeName("defaultSequence"); |
| defaultSequenceMapping.setSetMethodName("setDefaultSequence"); |
| defaultSequenceMapping.setGetMethodName("getDefaultSequenceToWrite"); |
| defaultSequenceMapping.setReferenceClass(Sequence.class); |
| defaultSequenceMapping.setXPath(getPrimaryNamespaceXPath() + "sequencing/" + getPrimaryNamespaceXPath() + "default-sequence"); |
| descriptor.addMapping(defaultSequenceMapping); |
| |
| XMLCompositeCollectionMapping sequencesMapping = new XMLCompositeCollectionMapping(); |
| MapContainerPolicy containerPolicy = new MapContainerPolicy(HashMap.class); |
| containerPolicy.setKeyName("name", Sequence.class.getName()); |
| sequencesMapping.setContainerPolicy(containerPolicy); |
| sequencesMapping.setAttributeName("sequences"); |
| sequencesMapping.setSetMethodName("setSequences"); |
| sequencesMapping.setGetMethodName("getSequencesToWrite"); |
| sequencesMapping.setReferenceClass(Sequence.class); |
| sequencesMapping.setXPath(getPrimaryNamespaceXPath() + "sequencing/" + getPrimaryNamespaceXPath() + "sequences/" + getPrimaryNamespaceXPath() + "sequence"); |
| descriptor.addMapping(sequencesMapping); |
| |
| return descriptor; |
| } |
| |
| public ClassDescriptor buildDatabaseLoginDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatabaseLogin.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatasourceLogin.class); |
| |
| XMLDirectMapping driverClassNameMapping = new XMLDirectMapping(); |
| driverClassNameMapping.setAttributeName("driverClassName"); |
| driverClassNameMapping.setGetMethodName("getDriverClassName"); |
| driverClassNameMapping.setSetMethodName("setDriverClassName"); |
| driverClassNameMapping.setXPath(getPrimaryNamespaceXPath() + "driver-class/text()"); |
| descriptor.addMapping(driverClassNameMapping); |
| |
| XMLDirectMapping driverURLMapping = new XMLDirectMapping(); |
| driverURLMapping.setAttributeName("connectionString"); |
| driverURLMapping.setGetMethodName("getConnectionString"); |
| driverURLMapping.setSetMethodName("setConnectionString"); |
| driverURLMapping.setXPath(getPrimaryNamespaceXPath() + "connection-url/text()"); |
| descriptor.addMapping(driverURLMapping); |
| |
| XMLDirectMapping shouldBindAllParametersMapping = new XMLDirectMapping(); |
| shouldBindAllParametersMapping.setAttributeName("shouldBindAllParameters"); |
| shouldBindAllParametersMapping.setGetMethodName("shouldBindAllParameters"); |
| shouldBindAllParametersMapping.setSetMethodName("setShouldBindAllParameters"); |
| shouldBindAllParametersMapping.setXPath(getPrimaryNamespaceXPath() + "bind-all-parameters/text()"); |
| shouldBindAllParametersMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldBindAllParametersMapping); |
| |
| XMLDirectMapping shouldCacheAllStatementsMapping = new XMLDirectMapping(); |
| shouldCacheAllStatementsMapping.setAttributeName("shouldCacheAllStatements"); |
| shouldCacheAllStatementsMapping.setGetMethodName("shouldCacheAllStatements"); |
| shouldCacheAllStatementsMapping.setSetMethodName("setShouldCacheAllStatements"); |
| shouldCacheAllStatementsMapping.setXPath(getPrimaryNamespaceXPath() + "cache-all-statements/text()"); |
| shouldCacheAllStatementsMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldCacheAllStatementsMapping); |
| |
| XMLDirectMapping usesByteArrayBindingMapping = new XMLDirectMapping(); |
| usesByteArrayBindingMapping.setAttributeName("usesByteArrayBinding"); |
| usesByteArrayBindingMapping.setGetMethodName("shouldUseByteArrayBinding"); |
| usesByteArrayBindingMapping.setSetMethodName("setUsesByteArrayBinding"); |
| usesByteArrayBindingMapping.setXPath(getPrimaryNamespaceXPath() + "byte-array-binding/text()"); |
| usesByteArrayBindingMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(usesByteArrayBindingMapping); |
| |
| XMLDirectMapping usesStringBindingMapping = new XMLDirectMapping(); |
| usesStringBindingMapping.setAttributeName("usesStringBinding"); |
| usesStringBindingMapping.setGetMethodName("shouldUseStringBinding"); |
| usesStringBindingMapping.setSetMethodName("setUsesStringBinding"); |
| usesStringBindingMapping.setXPath(getPrimaryNamespaceXPath() + "string-binding/text()"); |
| usesStringBindingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesStringBindingMapping); |
| |
| XMLDirectMapping stringBindingSizeMapping = new XMLDirectMapping(); |
| stringBindingSizeMapping.setAttributeName("stringBindingSize"); |
| stringBindingSizeMapping.setGetMethodName("getStringBindingSize"); |
| stringBindingSizeMapping.setSetMethodName("setStringBindingSize"); |
| stringBindingSizeMapping.setXPath(getPrimaryNamespaceXPath() + "string-binding-size/text()"); |
| stringBindingSizeMapping.setNullValue(255); |
| descriptor.addMapping(stringBindingSizeMapping); |
| |
| XMLDirectMapping usesStreamsForBindingMapping = new XMLDirectMapping(); |
| usesStreamsForBindingMapping.setAttributeName("usesStreamsForBinding"); |
| usesStreamsForBindingMapping.setGetMethodName("shouldUseStreamsForBinding"); |
| usesStreamsForBindingMapping.setSetMethodName("setUsesStreamsForBinding"); |
| usesStreamsForBindingMapping.setXPath(getPrimaryNamespaceXPath() + "streams-for-binding/text()"); |
| usesStreamsForBindingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesStreamsForBindingMapping); |
| |
| XMLDirectMapping shouldForceFieldNamesToUpperCaseMapping = new XMLDirectMapping(); |
| shouldForceFieldNamesToUpperCaseMapping.setAttributeName("shouldForceFieldNamesToUpperCase"); |
| shouldForceFieldNamesToUpperCaseMapping.setGetMethodName("shouldForceFieldNamesToUpperCase"); |
| shouldForceFieldNamesToUpperCaseMapping.setSetMethodName("setShouldForceFieldNamesToUpperCase"); |
| shouldForceFieldNamesToUpperCaseMapping.setXPath(getPrimaryNamespaceXPath() + "force-field-names-to-upper-case/text()"); |
| shouldForceFieldNamesToUpperCaseMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldForceFieldNamesToUpperCaseMapping); |
| |
| XMLDirectMapping shouldOptimizeDataConversionMapping = new XMLDirectMapping(); |
| shouldOptimizeDataConversionMapping.setAttributeName("shouldOptimizeDataConversion"); |
| shouldOptimizeDataConversionMapping.setGetMethodName("shouldOptimizeDataConversion"); |
| shouldOptimizeDataConversionMapping.setSetMethodName("setShouldOptimizeDataConversion"); |
| shouldOptimizeDataConversionMapping.setXPath(getPrimaryNamespaceXPath() + "optimize-data-conversion/text()"); |
| shouldOptimizeDataConversionMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldOptimizeDataConversionMapping); |
| |
| XMLDirectMapping shouldTrimStringsMapping = new XMLDirectMapping(); |
| shouldTrimStringsMapping.setAttributeName("shouldTrimStrings"); |
| shouldTrimStringsMapping.setGetMethodName("shouldTrimStrings"); |
| shouldTrimStringsMapping.setSetMethodName("setShouldTrimStrings"); |
| shouldTrimStringsMapping.setXPath(getPrimaryNamespaceXPath() + "trim-strings/text()"); |
| shouldTrimStringsMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldTrimStringsMapping); |
| |
| XMLDirectMapping usesBatchWritingMapping = new XMLDirectMapping(); |
| usesBatchWritingMapping.setAttributeName("usesBatchWriting"); |
| usesBatchWritingMapping.setGetMethodName("shouldUseBatchWriting"); |
| usesBatchWritingMapping.setSetMethodName("setUsesBatchWriting"); |
| usesBatchWritingMapping.setNullValue(Boolean.FALSE); |
| usesBatchWritingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-writing/text()"); |
| descriptor.addMapping(usesBatchWritingMapping); |
| |
| XMLDirectMapping usesJDBCBatchWritingMapping = new XMLDirectMapping(); |
| usesJDBCBatchWritingMapping.setAttributeName("usesJDBCBatchWriting"); |
| usesJDBCBatchWritingMapping.setGetMethodName("shouldUseJDBCBatchWriting"); |
| usesJDBCBatchWritingMapping.setSetMethodName("setUsesJDBCBatchWriting"); |
| usesJDBCBatchWritingMapping.setXPath(getPrimaryNamespaceXPath() + "jdbc-batch-writing/text()"); |
| usesJDBCBatchWritingMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(usesJDBCBatchWritingMapping); |
| |
| // datasources |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDailyCacheInvalidationPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DailyCacheInvalidationPolicy.class); |
| descriptor.getInheritancePolicy().setParentClass(CacheInvalidationPolicy.class); |
| |
| XMLDirectMapping expiryMinuteMapping = new XMLDirectMapping(); |
| expiryMinuteMapping.setAttributeName("expiryTime"); |
| expiryMinuteMapping.setGetMethodName("getExpiryTime"); |
| expiryMinuteMapping.setSetMethodName("setExpiryTime"); |
| XMLField expiryTimeField = new XMLField(getPrimaryNamespaceXPath() + "expiry-time/text()"); |
| expiryTimeField.setIsTypedTextField(true); |
| expiryMinuteMapping.setField(expiryTimeField); |
| descriptor.addMapping(expiryMinuteMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Expression.class); |
| descriptor.setDefaultRootElement("expression"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(LogicalExpression.class, getPrimaryNamespaceXPath() + "logic-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(RelationExpression.class, getPrimaryNamespaceXPath() + "relation-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(ConstantExpression.class, getPrimaryNamespaceXPath() + "constant-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(QueryKeyExpression.class, getPrimaryNamespaceXPath() + "query-key-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(ParameterExpression.class, getPrimaryNamespaceXPath() + "parameter-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(FieldExpression.class, getPrimaryNamespaceXPath() + "field-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(FunctionExpression.class, getPrimaryNamespaceXPath() + "function-expression"); |
| descriptor.getInheritancePolicy().addClassIndicator(ExpressionBuilder.class, getPrimaryNamespaceXPath() + "base-expression"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildLogicalExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(LogicalExpression.class); |
| descriptor.setDefaultRootElement("logic-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| XMLDirectMapping operatorMapping = new XMLDirectMapping(); |
| operatorMapping.setAttributeName("operator"); |
| ObjectTypeConverter operatorConverter = new ObjectTypeConverter(); |
| operatorConverter.addConversionValue("and", ExpressionOperator.getOperator(ExpressionOperator.And)); |
| operatorConverter.addConversionValue("or", ExpressionOperator.getOperator(ExpressionOperator.Or)); |
| operatorMapping.setConverter(operatorConverter); |
| operatorMapping.setXPath("@operator"); |
| descriptor.addMapping(operatorMapping); |
| |
| XMLCompositeObjectMapping leftMapping = new XMLCompositeObjectMapping(); |
| leftMapping.setAttributeName("firstChild"); |
| leftMapping.setGetMethodName("getFirstChild"); |
| leftMapping.setSetMethodName("setFirstChild"); |
| leftMapping.setReferenceClass(Expression.class); |
| leftMapping.setXPath(getPrimaryNamespaceXPath() + "left"); |
| descriptor.addMapping(leftMapping); |
| |
| XMLCompositeObjectMapping rightMapping = new XMLCompositeObjectMapping(); |
| rightMapping.setAttributeName("secondChild"); |
| rightMapping.setGetMethodName("getSecondChild"); |
| rightMapping.setSetMethodName("setSecondChild"); |
| rightMapping.setReferenceClass(Expression.class); |
| rightMapping.setXPath(getPrimaryNamespaceXPath() + "right"); |
| descriptor.addMapping(rightMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildRelationExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(RelationExpression.class); |
| descriptor.setDefaultRootElement("relation-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| // Child value expressions need their backpointer to their local base set, |
| // this is not persisted so must be hooked back up after loading. |
| descriptor.getEventManager().addListener(new DescriptorEventAdapter() { |
| @Override |
| public void postBuild(DescriptorEvent event) { |
| RelationExpression expression = (RelationExpression)event.getObject(); |
| if ((expression.getFirstChild() != null) && (expression.getSecondChild() != null)) { |
| if (expression.getSecondChild().isValueExpression()) { |
| expression.getSecondChild().setLocalBase(expression.getFirstChild()); |
| } |
| if (expression.getFirstChild().isValueExpression()) { |
| expression.getFirstChild().setLocalBase(expression.getSecondChild()); |
| } |
| } |
| } |
| }); |
| |
| XMLDirectMapping operatorMapping = new XMLDirectMapping(); |
| operatorMapping.setAttributeName("operator"); |
| ObjectTypeConverter operatorConverter = new ObjectTypeConverter(); |
| operatorConverter.addConversionValue("equal", ExpressionOperator.getOperator(ExpressionOperator.Equal)); |
| operatorConverter.addConversionValue("notEqual", ExpressionOperator.getOperator(ExpressionOperator.NotEqual)); |
| operatorConverter.addConversionValue("like", ExpressionOperator.getOperator(ExpressionOperator.Like)); |
| operatorConverter.addConversionValue("notLike", ExpressionOperator.getOperator(ExpressionOperator.NotLike)); |
| operatorConverter.addConversionValue("greaterThan", ExpressionOperator.getOperator(ExpressionOperator.GreaterThan)); |
| operatorConverter.addConversionValue("greaterThanEqual", ExpressionOperator.getOperator(ExpressionOperator.GreaterThanEqual)); |
| operatorConverter.addConversionValue("lessThan", ExpressionOperator.getOperator(ExpressionOperator.LessThan)); |
| operatorConverter.addConversionValue("lessThanEqual", ExpressionOperator.getOperator(ExpressionOperator.LessThanEqual)); |
| operatorMapping.setConverter(operatorConverter); |
| operatorMapping.setXPath("@operator"); |
| descriptor.addMapping(operatorMapping); |
| |
| XMLCompositeObjectMapping leftMapping = new XMLCompositeObjectMapping(); |
| leftMapping.setAttributeName("firstChild"); |
| leftMapping.setGetMethodName("getFirstChild"); |
| leftMapping.setSetMethodName("setFirstChild"); |
| leftMapping.setReferenceClass(Expression.class); |
| leftMapping.setXPath(getPrimaryNamespaceXPath() + "left"); |
| descriptor.addMapping(leftMapping); |
| |
| XMLCompositeObjectMapping rightMapping = new XMLCompositeObjectMapping(); |
| rightMapping.setAttributeName("secondChild"); |
| rightMapping.setGetMethodName("getSecondChild"); |
| rightMapping.setSetMethodName("setSecondChild"); |
| rightMapping.setReferenceClass(Expression.class); |
| rightMapping.setXPath(getPrimaryNamespaceXPath() + "right"); |
| descriptor.addMapping(rightMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildExpressionBuilderDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ExpressionBuilder.class); |
| descriptor.setDefaultRootElement("base-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildConstantExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ConstantExpression.class); |
| descriptor.setDefaultRootElement("constant-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setField(buildTypedField(getPrimaryNamespaceXPath() + "value/text()")); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryKeyExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryKeyExpression.class); |
| descriptor.setDefaultRootElement("query-key-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setXPath("@name"); |
| descriptor.addMapping(nameMapping); |
| |
| XMLDirectMapping shouldUseOuterJoinMapping = new XMLDirectMapping(); |
| shouldUseOuterJoinMapping.setAttributeName("shouldUseOuterJoin"); |
| shouldUseOuterJoinMapping.setNullValue(Boolean.FALSE); |
| shouldUseOuterJoinMapping.setXPath("@outer-join"); |
| descriptor.addMapping(shouldUseOuterJoinMapping); |
| |
| XMLDirectMapping toManyRelationshipMapping = new XMLDirectMapping(); |
| toManyRelationshipMapping.setAttributeName("shouldQueryToManyRelationship"); |
| toManyRelationshipMapping.setNullValue(Boolean.FALSE); |
| toManyRelationshipMapping.setXPath("@any-of"); |
| descriptor.addMapping(toManyRelationshipMapping); |
| |
| XMLCompositeObjectMapping baseMapping = new XMLCompositeObjectMapping(); |
| baseMapping.setAttributeName("baseExpression"); |
| baseMapping.setReferenceClass(Expression.class); |
| baseMapping.setXPath(getPrimaryNamespaceXPath() + "base"); |
| descriptor.addMapping(baseMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildParameterExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ParameterExpression.class); |
| descriptor.setDefaultRootElement("parameter-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| XMLCompositeObjectMapping parameterMapping = new XMLCompositeObjectMapping(); |
| parameterMapping.setAttributeName("field"); |
| parameterMapping.setReferenceClass(DatabaseField.class); |
| parameterMapping.setXPath(getPrimaryNamespaceXPath() + "parameter"); |
| ((XMLField)parameterMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(parameterMapping); |
| |
| XMLCompositeObjectMapping baseMapping = new XMLCompositeObjectMapping(); |
| baseMapping.setAttributeName("baseExpression"); |
| baseMapping.setReferenceClass(Expression.class); |
| baseMapping.setXPath(getPrimaryNamespaceXPath() + "base"); |
| descriptor.addMapping(baseMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildFieldExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FieldExpression.class); |
| descriptor.setDefaultRootElement("field-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| XMLCompositeObjectMapping parameterMapping = new XMLCompositeObjectMapping(); |
| parameterMapping.setAttributeName("field"); |
| parameterMapping.setReferenceClass(DatabaseField.class); |
| parameterMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)parameterMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(parameterMapping); |
| |
| XMLCompositeObjectMapping baseMapping = new XMLCompositeObjectMapping(); |
| baseMapping.setAttributeName("baseExpression"); |
| baseMapping.setReferenceClass(Expression.class); |
| baseMapping.setXPath(getPrimaryNamespaceXPath() + "base"); |
| descriptor.addMapping(baseMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildFunctionExpressionDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FunctionExpression.class); |
| descriptor.setDefaultRootElement("function-expression"); |
| |
| descriptor.getInheritancePolicy().setParentClass(Expression.class); |
| |
| // A function's base is always its first child so not persisted, |
| // Is fixed up to be its first child or new expression builder if no children. |
| // Child value expressions need their backpointer to their local base set, |
| // this is not persisted so must be hooked back up after loading. |
| descriptor.getEventManager().addListener(new DescriptorEventAdapter() { |
| @Override |
| public void postBuild(DescriptorEvent event) { |
| FunctionExpression expression = (FunctionExpression)event.getObject(); |
| for (int index = 0; index < expression.getChildren().size(); index++) { |
| Expression child = expression.getChildren().get(index); |
| if (child.isValueExpression()) { |
| child.setLocalBase(new ExpressionBuilder()); |
| } |
| } |
| if (expression.getChildren().size() > 0) { |
| expression.setBaseExpression(expression.getChildren().get(0)); |
| } |
| else { |
| expression.setBaseExpression(new ExpressionBuilder()); |
| } |
| } |
| }); |
| |
| XMLDirectMapping operatorMapping = new XMLDirectMapping(); |
| operatorMapping.setAttributeName("operator"); |
| ExpressionOperatorConverter operatorConverter = new ExpressionOperatorConverter(); |
| operatorConverter.addConversionValue("like", ExpressionOperator.getOperator(ExpressionOperator.Like)); |
| operatorConverter.addConversionValue("notLike", ExpressionOperator.getOperator(ExpressionOperator.NotLike)); |
| operatorConverter.addConversionValue("not", ExpressionOperator.getOperator(ExpressionOperator.Not)); |
| operatorConverter.addConversionValue("isNull", ExpressionOperator.getOperator(ExpressionOperator.IsNull)); |
| operatorConverter.addConversionValue("notNull", ExpressionOperator.getOperator(ExpressionOperator.NotNull)); |
| operatorConverter.addConversionValue("ascending", ExpressionOperator.getOperator(ExpressionOperator.Ascending)); |
| operatorConverter.addConversionValue("descending", ExpressionOperator.getOperator(ExpressionOperator.Descending)); |
| // These are platform specific so not on operator. |
| operatorConverter.addConversionValue("upper", new ExpressionOperator(ExpressionOperator.ToUpperCase, NonSynchronizedVector.newInstance(0))); |
| operatorConverter.addConversionValue("lower", new ExpressionOperator(ExpressionOperator.ToLowerCase, NonSynchronizedVector.newInstance(0))); |
| // Aggregate functions |
| operatorConverter.addConversionValue("count", ExpressionOperator.getOperator(ExpressionOperator.Count)); |
| operatorConverter.addConversionValue("sum", ExpressionOperator.getOperator(ExpressionOperator.Sum)); |
| operatorConverter.addConversionValue("average", ExpressionOperator.getOperator(ExpressionOperator.Average)); |
| operatorConverter.addConversionValue("maximum", ExpressionOperator.getOperator(ExpressionOperator.Maximum)); |
| operatorConverter.addConversionValue("minimum", ExpressionOperator.getOperator(ExpressionOperator.Minimum)); |
| // standardDeviation is platform specific. |
| operatorConverter.addConversionValue("standardDeviation", new ExpressionOperator(ExpressionOperator.StandardDeviation, NonSynchronizedVector.newInstance(0))); |
| operatorConverter.addConversionValue("variance", new ExpressionOperator(ExpressionOperator.Variance, NonSynchronizedVector.newInstance(0))); |
| operatorConverter.addConversionValue("distinct", ExpressionOperator.getOperator(ExpressionOperator.Distinct)); |
| operatorMapping.setConverter(operatorConverter); |
| operatorMapping.setXPath("@function"); |
| descriptor.addMapping(operatorMapping); |
| |
| XMLCompositeCollectionMapping childrenMapping = new XMLCompositeCollectionMapping(); |
| childrenMapping.useCollectionClass(NonSynchronizedVector.class); |
| childrenMapping.setAttributeName("children"); |
| childrenMapping.setReferenceClass(Expression.class); |
| childrenMapping.setXPath(getPrimaryNamespaceXPath() + "arguments/" + getPrimaryNamespaceXPath() + "argument"); |
| descriptor.addMapping(childrenMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDatabaseQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatabaseQuery.class); |
| descriptor.setDefaultRootElement("query"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(ReadAllQuery.class, getPrimaryNamespaceXPath() + "read-all-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(ReadObjectQuery.class, getPrimaryNamespaceXPath() + "read-object-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DataReadQuery.class, getPrimaryNamespaceXPath() + "data-read-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DataModifyQuery.class, getPrimaryNamespaceXPath() + "data-modify-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DirectReadQuery.class, getPrimaryNamespaceXPath() + "direct-read-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(ValueReadQuery.class, getPrimaryNamespaceXPath() + "value-read-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DeleteObjectQuery.class, getPrimaryNamespaceXPath() + "delete-object-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DeleteAllQuery.class, getPrimaryNamespaceXPath() + "delete-all-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(InsertObjectQuery.class, getPrimaryNamespaceXPath() + "insert-object-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(UpdateObjectQuery.class, getPrimaryNamespaceXPath() + "update-object-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(DoesExistQuery.class, getPrimaryNamespaceXPath() + "does-exist-query"); |
| descriptor.getInheritancePolicy().addClassIndicator(ReportQuery.class, getPrimaryNamespaceXPath() + "report-query"); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setGetMethodName("getName"); |
| nameMapping.setSetMethodName("setName"); |
| nameMapping.setXPath("@name"); |
| descriptor.addMapping(nameMapping); |
| |
| XMLCompositeObjectMapping expressionMapping = new XMLCompositeObjectMapping(); |
| expressionMapping.setAttributeName("selectionCriteria"); |
| expressionMapping.setGetMethodName("getSelectionCriteria"); |
| expressionMapping.setSetMethodName("setSelectionCriteria"); |
| expressionMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| return ((DatabaseQuery)object).getSelectionCriteria(); |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| if (!(object instanceof ObjectLevelReadQuery)) { |
| return; |
| } |
| ObjectLevelReadQuery query = (ObjectLevelReadQuery)object; |
| Expression expression = (Expression)value; |
| if (expression != null) { |
| expression = expression.rebuildOn(query.getExpressionBuilder()); |
| } |
| query.setSelectionCriteria(expression); |
| } |
| }); |
| expressionMapping.setReferenceClass(Expression.class); |
| expressionMapping.setXPath(getSecondaryNamespaceXPath() + "criteria"); |
| descriptor.addMapping(expressionMapping); |
| |
| XMLCompositeCollectionMapping argumentsMapping = new XMLCompositeCollectionMapping(); |
| |
| // Handle translation of argument lists to query-arguments. |
| argumentsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| DatabaseQuery query = (DatabaseQuery)object; |
| List<String> arguments = query.getArguments(); |
| List<String> types = query.getArgumentTypeNames(); |
| List<Object> values = query.getArgumentValues(); |
| Vector queryArguments = new Vector(arguments.size()); |
| for (int index = 0; index < arguments.size(); index++) { |
| QueryArgument queryArgument = new QueryArgument(); |
| queryArgument.setKey(arguments.get(index)); |
| if (!types.isEmpty()) { |
| queryArgument.setTypeName(types.get(index)); |
| } |
| if (!values.isEmpty()) { |
| queryArgument.setValue(values.get(index)); |
| } |
| if (query.hasNullableArguments() |
| && query.getNullableArguments().contains(new DatabaseField((String)queryArgument.getKey()))) { |
| queryArgument.setNullable(true); |
| } |
| queryArguments.add(queryArgument); |
| } |
| return queryArguments; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| DatabaseQuery query = (DatabaseQuery)object; |
| List queryArguments = (List)value; |
| List<String> arguments = new ArrayList<>(queryArguments.size()); |
| List<Class> types = new ArrayList<>(queryArguments.size()); |
| List<Object> values = new ArrayList<>(queryArguments.size()); |
| for (int index = 0; index < queryArguments.size(); index++) { |
| QueryArgument queryArgument = (QueryArgument)queryArguments.get(index); |
| arguments.add((String)queryArgument.getKey()); |
| if (queryArgument.getValue() != null) { |
| values.add(queryArgument.getValue()); |
| } |
| if (queryArgument.getType() != null) { |
| types.add(queryArgument.getType()); |
| } |
| if (queryArgument.isNullable()) { |
| query.getNullableArguments().add(new DatabaseField((String)queryArgument.getKey())); |
| } |
| } |
| query.setArguments(arguments); |
| if (!types.isEmpty()) { |
| query.setArgumentTypes(types); |
| } |
| if (!values.isEmpty()) { |
| query.setArgumentValues(values); |
| } |
| } |
| }); |
| argumentsMapping.setAttributeName("argumentsMapping"); |
| argumentsMapping.setXPath(getSecondaryNamespaceXPath() + "arguments/" + getSecondaryNamespaceXPath() + "argument"); |
| argumentsMapping.setReferenceClass(QueryArgument.class); |
| descriptor.addMapping(argumentsMapping); |
| |
| XMLDirectMapping shouldMaintainCacheMapping = new XMLDirectMapping(); |
| shouldMaintainCacheMapping.setAttributeName("shouldMaintainCache"); |
| shouldMaintainCacheMapping.setGetMethodName("shouldMaintainCache"); |
| shouldMaintainCacheMapping.setSetMethodName("setShouldMaintainCache"); |
| shouldMaintainCacheMapping.setXPath(getPrimaryNamespaceXPath() + "maintain-cache/text()"); |
| shouldMaintainCacheMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldMaintainCacheMapping); |
| |
| XMLDirectMapping shouldBindAllParametersMapping = new XMLDirectMapping(); |
| shouldBindAllParametersMapping.setAttributeName("shouldBindAllParameters"); |
| shouldBindAllParametersMapping.setXPath(getPrimaryNamespaceXPath() + "bind-all-parameters/text()"); |
| descriptor.addMapping(shouldBindAllParametersMapping); |
| |
| XMLDirectMapping shouldCacheStatementMapping = new XMLDirectMapping(); |
| shouldCacheStatementMapping.setAttributeName("shouldCacheStatement"); |
| shouldCacheStatementMapping.setXPath(getPrimaryNamespaceXPath() + "cache-statement/text()"); |
| descriptor.addMapping(shouldCacheStatementMapping); |
| |
| XMLDirectMapping queryTimeoutMapping = new XMLDirectMapping(); |
| queryTimeoutMapping.setAttributeName("queryTimeout"); |
| queryTimeoutMapping.setGetMethodName("getQueryTimeout"); |
| queryTimeoutMapping.setSetMethodName("setQueryTimeout"); |
| queryTimeoutMapping.setXPath(getPrimaryNamespaceXPath() + "timeout/text()"); |
| queryTimeoutMapping.setNullValue(DescriptorQueryManager.DefaultTimeout); |
| descriptor.addMapping(queryTimeoutMapping); |
| |
| // feaure 2297 |
| XMLDirectMapping shouldPrepareMapping = new XMLDirectMapping(); |
| shouldPrepareMapping.setAttributeName("shouldPrepare"); |
| shouldPrepareMapping.setGetMethodName("shouldPrepare"); |
| shouldPrepareMapping.setSetMethodName("setShouldPrepare"); |
| shouldPrepareMapping.setXPath(getPrimaryNamespaceXPath() + "prepare/text()"); |
| shouldPrepareMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldPrepareMapping); |
| |
| XMLCompositeObjectMapping callMapping = new XMLCompositeObjectMapping(); |
| callMapping.setAttributeName("call"); |
| callMapping.setGetMethodName("getDatasourceCall"); |
| callMapping.setSetMethodName("setDatasourceCall"); |
| callMapping.setReferenceClass(Call.class); |
| callMapping.setXPath(getPrimaryNamespaceXPath() + "call"); |
| descriptor.addMapping(callMapping); |
| |
| XMLCompositeObjectMapping redirectorMapping = new XMLCompositeObjectMapping(); |
| redirectorMapping.setAttributeName("redirector"); |
| redirectorMapping.setGetMethodName("getRedirector"); |
| redirectorMapping.setSetMethodName("setRedirector"); |
| redirectorMapping.setReferenceClass(MethodBaseQueryRedirector.class); |
| redirectorMapping.setXPath(getPrimaryNamespaceXPath() + "query-redirector"); |
| descriptor.addMapping(redirectorMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryResultCachePolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryResultsCachePolicy.class); |
| |
| XMLCompositeObjectMapping invalidationPolicyMapping = new XMLCompositeObjectMapping(); |
| invalidationPolicyMapping.setAttributeName("invalidationPolicy"); |
| invalidationPolicyMapping.setReferenceClass(CacheInvalidationPolicy.class); |
| invalidationPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "invalidation-policy"); |
| descriptor.addMapping(invalidationPolicyMapping); |
| XMLDirectMapping maximumCachedResultsMapping = new XMLDirectMapping(); |
| maximumCachedResultsMapping.setAttributeName("maximumCachedResults"); |
| maximumCachedResultsMapping.setGetMethodName("getMaximumCachedResults"); |
| maximumCachedResultsMapping.setSetMethodName("setMaximumCachedResults"); |
| maximumCachedResultsMapping.setXPath(getPrimaryNamespaceXPath() + "maximum-cached-results/text()"); |
| maximumCachedResultsMapping.setNullValue(100); |
| descriptor.addMapping(maximumCachedResultsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCacheInvalidationPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(CacheInvalidationPolicy.class); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(NoExpiryCacheInvalidationPolicy.class, getPrimaryNamespaceXPath() + "no-expiry-cache-invalidation-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(TimeToLiveCacheInvalidationPolicy.class, getPrimaryNamespaceXPath() + "time-to-live-cache-invalidation-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(DailyCacheInvalidationPolicy.class, getPrimaryNamespaceXPath() + "daily-cache-invalidation-policy"); |
| |
| XMLDirectMapping updateOnReadMapping = new XMLDirectMapping(); |
| updateOnReadMapping.setAttributeName("shouldUpdateReadTimeOnUpdate"); |
| updateOnReadMapping.setGetMethodName("shouldUpdateReadTimeOnUpdate"); |
| updateOnReadMapping.setSetMethodName("setShouldUpdateReadTimeOnUpdate"); |
| updateOnReadMapping.setXPath(getPrimaryNamespaceXPath() + "update-read-time-on-update/text()"); |
| updateOnReadMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(updateOnReadMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCallDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Call.class); |
| descriptor.setDefaultRootElement("call"); |
| descriptor.descriptorIsAggregate(); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(SQLCall.class, getPrimaryNamespaceXPath() + "sql-call"); |
| descriptor.getInheritancePolicy().addClassIndicator(JPQLCall.class, getPrimaryNamespaceXPath() + "ejbql-call"); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildSQLCallDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(SQLCall.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(Call.class); |
| |
| XMLDirectMapping sqlStringMapping = new XMLDirectMapping(); |
| sqlStringMapping.setAttributeName("sqlString"); |
| sqlStringMapping.setGetMethodName("getSQLString"); |
| sqlStringMapping.setSetMethodName("setSQLString"); |
| sqlStringMapping.setXPath(getPrimaryNamespaceXPath() + "sql/text()"); |
| descriptor.addMapping(sqlStringMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildJPQLCallDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(JPQLCall.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(Call.class); |
| |
| XMLDirectMapping sqlStringMapping = new XMLDirectMapping(); |
| sqlStringMapping.setAttributeName("ejbqlString"); |
| sqlStringMapping.setGetMethodName("getEjbqlString"); |
| sqlStringMapping.setSetMethodName("setEjbqlString"); |
| sqlStringMapping.setXPath(getPrimaryNamespaceXPath() + "ejbql/text()"); |
| descriptor.addMapping(sqlStringMapping); |
| |
| return descriptor; |
| } |
| |
| // feature 2297 |
| protected ClassDescriptor buildReadQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReadQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| XMLDirectMapping maxRowsMapping = new XMLDirectMapping(); |
| maxRowsMapping.setAttributeName("maxRows"); |
| maxRowsMapping.setGetMethodName("getMaxRows"); |
| maxRowsMapping.setSetMethodName("setMaxRows"); |
| maxRowsMapping.setXPath(getPrimaryNamespaceXPath() + "max-rows/text()"); |
| maxRowsMapping.setNullValue(0); |
| descriptor.addMapping(maxRowsMapping); |
| |
| XMLDirectMapping firstResultMapping = new XMLDirectMapping(); |
| firstResultMapping.setAttributeName("firstResult"); |
| firstResultMapping.setGetMethodName("getFirstResult"); |
| firstResultMapping.setSetMethodName("setFirstResult"); |
| firstResultMapping.setXPath(getPrimaryNamespaceXPath() + "first-result/text()"); |
| firstResultMapping.setNullValue(0); |
| descriptor.addMapping(firstResultMapping); |
| XMLDirectMapping fetchSizeMapping = new XMLDirectMapping(); |
| fetchSizeMapping.setAttributeName("fetchSize"); |
| fetchSizeMapping.setGetMethodName("getFetchSize"); |
| fetchSizeMapping.setSetMethodName("setFetchSize"); |
| fetchSizeMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-size/text()"); |
| fetchSizeMapping.setNullValue(0); |
| descriptor.addMapping(fetchSizeMapping); |
| |
| XMLCompositeObjectMapping queryResultCachingPolicyMapping = new XMLCompositeObjectMapping(); |
| queryResultCachingPolicyMapping.setAttributeName("queryResultCachingPolicy"); |
| queryResultCachingPolicyMapping.setReferenceClass(QueryResultsCachePolicy.class); |
| queryResultCachingPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "query-result-cache-policy"); |
| descriptor.addMapping(queryResultCachingPolicyMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectLevelReadQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectLevelReadQuery.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ReadQuery.class); |
| |
| XMLDirectMapping referenceClassMapping = new XMLDirectMapping(); |
| referenceClassMapping.setAttributeName("referenceClass"); |
| referenceClassMapping.setGetMethodName("getReferenceClass"); |
| referenceClassMapping.setSetMethodName("setReferenceClass"); |
| referenceClassMapping.setXPath(getPrimaryNamespaceXPath() + "reference-class/text()"); |
| descriptor.addMapping(referenceClassMapping); |
| |
| XMLDirectMapping refreshIdentityMapping = new XMLDirectMapping(); |
| refreshIdentityMapping.setAttributeName("shouldRefreshIdentityMapResult"); |
| refreshIdentityMapping.setGetMethodName("shouldRefreshIdentityMapResult"); |
| refreshIdentityMapping.setSetMethodName("setShouldRefreshIdentityMapResult"); |
| refreshIdentityMapping.setXPath(getPrimaryNamespaceXPath() + "refresh/text()"); |
| refreshIdentityMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(refreshIdentityMapping); |
| |
| XMLDirectMapping refreshRemoteIdentityMapping = new XMLDirectMapping(); |
| refreshRemoteIdentityMapping.setAttributeName("shouldRefreshRemoteIdentityMapResult"); |
| refreshRemoteIdentityMapping.setGetMethodName("shouldRefreshRemoteIdentityMapResult"); |
| refreshRemoteIdentityMapping.setSetMethodName("setShouldRefreshRemoteIdentityMapResult"); |
| refreshRemoteIdentityMapping.setXPath(getPrimaryNamespaceXPath() + "remote-refresh/text()"); |
| refreshRemoteIdentityMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(refreshRemoteIdentityMapping); |
| |
| XMLDirectMapping cascadePolicyMapping = new XMLDirectMapping(); |
| cascadePolicyMapping.setAttributeName("cascadePolicy"); |
| cascadePolicyMapping.setGetMethodName("getCascadePolicy"); |
| cascadePolicyMapping.setSetMethodName("setCascadePolicy"); |
| ObjectTypeConverter cascadePolicyConverter = new ObjectTypeConverter(); |
| cascadePolicyConverter.addConversionValue("none", DatabaseQuery.NoCascading); |
| cascadePolicyConverter.addConversionValue("all", DatabaseQuery.CascadeAllParts); |
| cascadePolicyConverter.addConversionValue("private", DatabaseQuery.CascadePrivateParts); |
| cascadePolicyMapping.setConverter(cascadePolicyConverter); |
| cascadePolicyMapping.setNullValue(DatabaseQuery.NoCascading); |
| cascadePolicyMapping.setXPath(getPrimaryNamespaceXPath() + "cascade-policy/text()"); |
| descriptor.addMapping(cascadePolicyMapping); |
| |
| XMLDirectMapping cacheUsageMapping = new XMLDirectMapping(); |
| cacheUsageMapping.setAttributeName("cacheUsage"); |
| cacheUsageMapping.setGetMethodName("getCacheUsage"); |
| cacheUsageMapping.setSetMethodName("setCacheUsage"); |
| cacheUsageMapping.setXPath(getPrimaryNamespaceXPath() + "cache-usage/text()"); |
| ObjectTypeConverter cacheUsageConverter = new ObjectTypeConverter(); |
| cacheUsageConverter.addConversionValue("exact-primary-key", ObjectLevelReadQuery.CheckCacheByExactPrimaryKey); |
| cacheUsageConverter.addConversionValue("primary-key", ObjectLevelReadQuery.CheckCacheByPrimaryKey); |
| cacheUsageConverter.addConversionValue("cache-only", ObjectLevelReadQuery.CheckCacheOnly); |
| cacheUsageConverter.addConversionValue("cache-then-database", ObjectLevelReadQuery.CheckCacheThenDatabase); |
| cacheUsageConverter.addConversionValue("conform", ObjectLevelReadQuery.ConformResultsInUnitOfWork); |
| cacheUsageConverter.addConversionValue("none", ObjectLevelReadQuery.DoNotCheckCache); |
| cacheUsageConverter.addConversionValue("use-descriptor-setting", ObjectLevelReadQuery.UseDescriptorSetting); |
| cacheUsageMapping.setConverter(cacheUsageConverter); |
| cacheUsageMapping.setNullValue(ObjectLevelReadQuery.UseDescriptorSetting); |
| descriptor.addMapping(cacheUsageMapping); |
| |
| XMLDirectMapping lockModeMapping = new XMLDirectMapping(); |
| lockModeMapping.setAttributeName("lockMode"); |
| lockModeMapping.setGetMethodName("getLockMode"); |
| lockModeMapping.setSetMethodName("setLockMode"); |
| lockModeMapping.setXPath(getPrimaryNamespaceXPath() + "lock-mode/text()"); |
| ObjectTypeConverter lockModeConverter = new ObjectTypeConverter(); |
| lockModeConverter.addConversionValue("default", ObjectLevelReadQuery.DEFAULT_LOCK_MODE); |
| lockModeConverter.addConversionValue("lock", ObjectLevelReadQuery.LOCK); |
| lockModeConverter.addConversionValue("lock-no-wait", ObjectLevelReadQuery.LOCK_NOWAIT); |
| lockModeConverter.addConversionValue("none", ObjectLevelReadQuery.NO_LOCK); |
| lockModeMapping.setConverter(lockModeConverter); |
| lockModeMapping.setNullValue(ObjectLevelReadQuery.DEFAULT_LOCK_MODE); |
| descriptor.addMapping(lockModeMapping); |
| |
| XMLDirectMapping distinctStateMapping = new XMLDirectMapping(); |
| distinctStateMapping.setAttributeName("distinctState"); |
| distinctStateMapping.setGetMethodName("getDistinctState"); |
| distinctStateMapping.setSetMethodName("setDistinctState"); |
| distinctStateMapping.setXPath(getPrimaryNamespaceXPath() + "distinct-state/text()"); |
| ObjectTypeConverter distinctStateConverter = new ObjectTypeConverter(); |
| distinctStateConverter.addConversionValue("dont-use-distinct", ObjectLevelReadQuery.DONT_USE_DISTINCT); |
| distinctStateConverter.addConversionValue("none", ObjectLevelReadQuery.UNCOMPUTED_DISTINCT); |
| distinctStateConverter.addConversionValue("use-distinct", ObjectLevelReadQuery.USE_DISTINCT); |
| distinctStateMapping.setConverter(distinctStateConverter); |
| distinctStateMapping.setNullValue(ObjectLevelReadQuery.UNCOMPUTED_DISTINCT); |
| descriptor.addMapping(distinctStateMapping); |
| |
| XMLCompositeObjectMapping inMemoryQueryIndirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| inMemoryQueryIndirectionPolicyMapping.setAttributeName("inMemoryQueryIndirectionPolicy"); |
| inMemoryQueryIndirectionPolicyMapping.setReferenceClass(InMemoryQueryIndirectionPolicy.class); |
| // Handle translation of default to null. |
| inMemoryQueryIndirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| InMemoryQueryIndirectionPolicy policy = ((ObjectLevelReadQuery)object).getInMemoryQueryIndirectionPolicy(); |
| if (policy.shouldThrowIndirectionException()) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| if (value == null) { |
| return; |
| } |
| InMemoryQueryIndirectionPolicy policy = (InMemoryQueryIndirectionPolicy)value; |
| ((ObjectLevelReadQuery)object).setInMemoryQueryIndirectionPolicy(policy); |
| } |
| }); |
| inMemoryQueryIndirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "in-memory-querying"); |
| descriptor.addMapping(inMemoryQueryIndirectionPolicyMapping); |
| |
| // fetch group setting |
| XMLDirectMapping useDefaultFetchGroupMapping = new XMLDirectMapping(); |
| useDefaultFetchGroupMapping.setAttributeName("shouldUseDefaultFetchGroup"); |
| useDefaultFetchGroupMapping.setXPath(getPrimaryNamespaceXPath() + "use-default-fetch-group/text()"); |
| useDefaultFetchGroupMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(useDefaultFetchGroupMapping); |
| |
| XMLCompositeObjectMapping fetchGroupMapping = new XMLCompositeObjectMapping(); |
| fetchGroupMapping.setAttributeName("fetchGroup"); |
| fetchGroupMapping.setReferenceClass(FetchGroup.class); |
| fetchGroupMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-group"); |
| descriptor.addMapping(fetchGroupMapping); |
| |
| XMLDirectMapping fetchGroupNameMapping = new XMLDirectMapping(); |
| fetchGroupNameMapping.setAttributeName("fetchGroupName"); |
| fetchGroupNameMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-group-name/text()"); |
| descriptor.addMapping(fetchGroupNameMapping); |
| |
| // shouldUseExclusiveConnection setting |
| XMLDirectMapping useExclusiveConnectionMapping = new XMLDirectMapping(); |
| useExclusiveConnectionMapping.setAttributeName("shouldUseExclusiveConnection"); |
| useExclusiveConnectionMapping.setXPath(getPrimaryNamespaceXPath() + "use-exclusive-connection/text()"); |
| useExclusiveConnectionMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(useExclusiveConnectionMapping); |
| |
| XMLCompositeCollectionMapping joinedAttributeMapping = new XMLCompositeCollectionMapping(); |
| joinedAttributeMapping.useCollectionClass(NonSynchronizedVector.class); |
| joinedAttributeMapping.setAttributeName("joinedAttributeExpressions"); |
| joinedAttributeMapping.setGetMethodName("getJoinedAttributeExpressions"); |
| joinedAttributeMapping.setSetMethodName("setJoinedAttributeExpressions"); |
| joinedAttributeMapping.setReferenceClass(Expression.class); |
| joinedAttributeMapping.setXPath(getPrimaryNamespaceXPath() + "joined-attribute-expressions/" + getPrimaryNamespaceXPath() + "expression"); |
| descriptor.addMapping(joinedAttributeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReadObjectQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReadObjectQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(ObjectLevelReadQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReadAllObjectQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReadAllQuery.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ObjectLevelReadQuery.class); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| XMLCompositeCollectionMapping batchReadMapping = new XMLCompositeCollectionMapping(); |
| batchReadMapping.useCollectionClass(NonSynchronizedVector.class); |
| batchReadMapping.setAttributeName("batchReadAttributeExpressions"); |
| batchReadMapping.setGetMethodName("getBatchReadAttributeExpressions"); |
| batchReadMapping.setSetMethodName("setBatchReadAttributeExpressions"); |
| batchReadMapping.setReferenceClass(Expression.class); |
| batchReadMapping.setXPath(getPrimaryNamespaceXPath() + "batch-read-attribute-expressions/" + getPrimaryNamespaceXPath() + "expression"); |
| descriptor.addMapping(batchReadMapping); |
| |
| XMLCompositeCollectionMapping orderByMapping = new XMLCompositeCollectionMapping(); |
| orderByMapping.useCollectionClass(NonSynchronizedVector.class); |
| orderByMapping.setAttributeName("orderByExpressions"); |
| orderByMapping.setReferenceClass(Expression.class); |
| orderByMapping.setXPath(getPrimaryNamespaceXPath() + "order-by-expressions/" + getPrimaryNamespaceXPath() + "expression"); |
| descriptor.addMapping(orderByMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDeleteObjectQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DeleteObjectQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInsertObjectQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InsertObjectQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildUpdateObjectQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(UpdateObjectQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDoesExistQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DoesExistQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| XMLDirectMapping existenceCheckMapping = new XMLDirectMapping(); |
| existenceCheckMapping.setAttributeName("existenceCheck"); |
| existenceCheckMapping.setGetMethodName("getExistencePolicy"); |
| existenceCheckMapping.setSetMethodName("setExistencePolicy"); |
| existenceCheckMapping.setXPath(getPrimaryNamespaceXPath() + "existence-check/text()"); |
| ObjectTypeConverter existenceCheckConverter = new ObjectTypeConverter(); |
| existenceCheckConverter.addConversionValue("check-cache", DoesExistQuery.CheckCache); |
| existenceCheckConverter.addConversionValue("check-database", DoesExistQuery.CheckDatabase); |
| existenceCheckConverter.addConversionValue("assume-existence", DoesExistQuery.AssumeExistence); |
| existenceCheckConverter.addConversionValue("assume-non-existence", DoesExistQuery.AssumeNonExistence); |
| existenceCheckMapping.setConverter(existenceCheckConverter); |
| existenceCheckMapping.setNullValue(DoesExistQuery.CheckCache); |
| descriptor.addMapping(existenceCheckMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDataReadQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DataReadQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDataModifyQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DataModifyQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDeleteAllQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DeleteAllQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectReadQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DirectReadQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DataReadQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildValueReadQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ValueReadQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseQuery.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReportQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReportQuery.class); |
| descriptor.getInheritancePolicy().setParentClass(ReadAllQuery.class); |
| |
| XMLDirectMapping returnChoiceMapping = new XMLDirectMapping(); |
| returnChoiceMapping.setAttributeName("returnChoice"); |
| returnChoiceMapping.setXPath(getPrimaryNamespaceXPath() + "return-choice/text()"); |
| ObjectTypeConverter returnChoiceConverter = new ObjectTypeConverter(); |
| returnChoiceConverter.addConversionValue("return-single-result", ReportQuery.ShouldReturnSingleResult); |
| returnChoiceConverter.addConversionValue("return-single-value", ReportQuery.ShouldReturnSingleValue); |
| returnChoiceConverter.addConversionValue("return-single-attribute", ReportQuery.ShouldReturnSingleAttribute); |
| returnChoiceMapping.setConverter(returnChoiceConverter); |
| returnChoiceMapping.setNullValue(0); |
| descriptor.addMapping(returnChoiceMapping); |
| |
| XMLDirectMapping retrievePrimaryKeysMapping = new XMLDirectMapping(); |
| retrievePrimaryKeysMapping.setAttributeName("shouldRetrievePrimaryKeys"); |
| retrievePrimaryKeysMapping.setXPath(getPrimaryNamespaceXPath() + "retrieve-primary-keys/text()"); |
| ObjectTypeConverter retrievePrimaryKeysConverter = new ObjectTypeConverter(); |
| retrievePrimaryKeysConverter.addConversionValue("full-primary-key", ReportQuery.FULL_PRIMARY_KEY); |
| retrievePrimaryKeysConverter.addConversionValue("first-primary-key", ReportQuery.FIRST_PRIMARY_KEY); |
| retrievePrimaryKeysConverter.addConversionValue("no-primary-key", ReportQuery.NO_PRIMARY_KEY); |
| retrievePrimaryKeysMapping.setConverter(retrievePrimaryKeysConverter); |
| returnChoiceMapping.setNullValue(ReportQuery.NO_PRIMARY_KEY); |
| descriptor.addMapping(retrievePrimaryKeysMapping); |
| |
| XMLCompositeCollectionMapping reportItemsMapping = new XMLCompositeCollectionMapping(); |
| reportItemsMapping.useCollectionClass(NonSynchronizedVector.class); |
| reportItemsMapping.setAttributeName("items"); |
| reportItemsMapping.setReferenceClass(ReportItem.class); |
| reportItemsMapping.setXPath(getPrimaryNamespaceXPath() + "report-items/" + getPrimaryNamespaceXPath() + "item"); |
| descriptor.addMapping(reportItemsMapping); |
| |
| XMLCompositeCollectionMapping groupByMapping = new XMLCompositeCollectionMapping(); |
| groupByMapping.useCollectionClass(NonSynchronizedVector.class); |
| groupByMapping.setAttributeName("groupByExpressions"); |
| groupByMapping.setReferenceClass(Expression.class); |
| groupByMapping.setXPath(getPrimaryNamespaceXPath() + "group-by-expressions/" + getPrimaryNamespaceXPath() + "expression"); |
| descriptor.addMapping(groupByMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReportItemDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReportItem.class); |
| descriptor.setDefaultRootElement("item"); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setXPath(getPrimaryNamespaceXPath() + "name/text()"); |
| descriptor.addMapping(nameMapping); |
| |
| XMLCompositeObjectMapping attributeExpressionMapping = new XMLCompositeObjectMapping(); |
| attributeExpressionMapping.setAttributeName("attributeExpression"); |
| attributeExpressionMapping.setReferenceClass(Expression.class); |
| attributeExpressionMapping.setXPath(getPrimaryNamespaceXPath() + "attribute-expression"); |
| descriptor.addMapping(attributeExpressionMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildMethodBaseQueryRedirectorDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(MethodBaseQueryRedirector.class); |
| descriptor.setDefaultRootElement("method-base-query-redirector"); |
| |
| XMLDirectMapping methodNameMapping = new XMLDirectMapping(); |
| methodNameMapping.setAttributeName("methodName"); |
| methodNameMapping.setGetMethodName("getMethodName"); |
| methodNameMapping.setSetMethodName("setMethodName"); |
| methodNameMapping.setXPath(getPrimaryNamespaceXPath() + "method-name/text()"); |
| descriptor.addMapping(methodNameMapping); |
| |
| XMLDirectMapping methodClassMapping = new XMLDirectMapping(); |
| methodClassMapping.setAttributeName("methodClass"); |
| methodClassMapping.setGetMethodName("getMethodClass"); |
| methodClassMapping.setSetMethodName("setMethodClass"); |
| methodClassMapping.setXPath(getPrimaryNamespaceXPath() + "method-class/text()"); |
| descriptor.addMapping(methodClassMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInMemoryQueryIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InMemoryQueryIndirectionPolicy.class); |
| descriptor.setDefaultRootElement("in-memory-querying"); |
| |
| XMLDirectMapping policyMapping = new XMLDirectMapping(); |
| policyMapping.setAttributeName("policy"); |
| policyMapping.setGetMethodName("getPolicy"); |
| policyMapping.setSetMethodName("setPolicy"); |
| policyMapping.setXPath(getPrimaryNamespaceXPath() + "policy/text()"); |
| ObjectTypeConverter policyConverter = new ObjectTypeConverter(); |
| policyConverter.addConversionValue("ignore-exceptions-return-conformed", InMemoryQueryIndirectionPolicy.SHOULD_IGNORE_EXCEPTION_RETURN_CONFORMED); |
| policyConverter.addConversionValue("ignore-exceptions-returned-not-conformed", InMemoryQueryIndirectionPolicy.SHOULD_IGNORE_EXCEPTION_RETURN_NOT_CONFORMED); |
| policyConverter.addConversionValue("trigger-indirection", InMemoryQueryIndirectionPolicy.SHOULD_THROW_INDIRECTION_EXCEPTION); |
| policyConverter.addConversionValue("throw-indirection-exception", InMemoryQueryIndirectionPolicy.SHOULD_TRIGGER_INDIRECTION); |
| policyMapping.setConverter(policyConverter); |
| policyMapping.setNullValue(InMemoryQueryIndirectionPolicy.SHOULD_THROW_INDIRECTION_EXCEPTION); |
| descriptor.addMapping(policyMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDatabaseMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatabaseMapping.class); |
| descriptor.setDefaultRootElement("attribute-mapping"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DirectToFieldMapping.class, getPrimaryNamespaceXPath() + "direct-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(TransformationMapping.class, getPrimaryNamespaceXPath() + "transformation-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(OneToOneMapping.class, getPrimaryNamespaceXPath() + "one-to-one-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(VariableOneToOneMapping.class, getPrimaryNamespaceXPath() + "variable-one-to-one-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(OneToManyMapping.class, getPrimaryNamespaceXPath() + "one-to-many-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(ManyToManyMapping.class, getPrimaryNamespaceXPath() + "many-to-many-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(AggregateObjectMapping.class, getPrimaryNamespaceXPath() + "aggregate-object-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(AggregateCollectionMapping.class, getPrimaryNamespaceXPath() + "aggregate-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(DirectCollectionMapping.class, getPrimaryNamespaceXPath() + "direct-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(DirectMapMapping.class, getPrimaryNamespaceXPath() + "direct-map-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(NestedTableMapping.class, getPrimaryNamespaceXPath() + "nested-table-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(StructureMapping.class, getPrimaryNamespaceXPath() + "structure-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(ReferenceMapping.class, getPrimaryNamespaceXPath() + "reference-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(ArrayMapping.class, getPrimaryNamespaceXPath() + "array-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(ObjectArrayMapping.class, getPrimaryNamespaceXPath() + "object-array-mapping"); |
| DirectToXMLTypeMappingHelper.getInstance().addClassIndicator(descriptor, getPrimaryNamespaceXPath()); |
| descriptor.getInheritancePolicy().addClassIndicator(AbstractTransformationMapping.class, getPrimaryNamespaceXPath() + "abstract-transformation-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(AbstractCompositeDirectCollectionMapping.class, getPrimaryNamespaceXPath() + "abstract-composite-direct-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(AbstractCompositeObjectMapping.class, getPrimaryNamespaceXPath() + "abstract-composite-object-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(AbstractCompositeCollectionMapping.class, getPrimaryNamespaceXPath() + "abstract-composite-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLDirectMapping.class, getPrimaryNamespaceXPath() + "xml-direct-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLTransformationMapping.class, getPrimaryNamespaceXPath() + "xml-transformation-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLCompositeDirectCollectionMapping.class, getPrimaryNamespaceXPath() + "xml-composite-direct-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLCompositeObjectMapping.class, getPrimaryNamespaceXPath() + "xml-composite-object-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLCompositeCollectionMapping.class, getPrimaryNamespaceXPath() + "xml-composite-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLAnyCollectionMapping.class, getPrimaryNamespaceXPath() + "xml-any-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLAnyObjectMapping.class, getPrimaryNamespaceXPath() + "xml-any-object-mapping"); |
| |
| descriptor.getInheritancePolicy().addClassIndicator(EISDirectMapping.class, getPrimaryNamespaceXPath() + "eis-direct-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISTransformationMapping.class, getPrimaryNamespaceXPath() + "eis-transformation-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISCompositeDirectCollectionMapping.class, getPrimaryNamespaceXPath() + "eis-composite-direct-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISCompositeObjectMapping.class, getPrimaryNamespaceXPath() + "eis-composite-object-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISCompositeCollectionMapping.class, getPrimaryNamespaceXPath() + "eis-composite-collection-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISOneToOneMapping.class, getPrimaryNamespaceXPath() + "eis-one-to-one-mapping"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISOneToManyMapping.class, getPrimaryNamespaceXPath() + "eis-one-to-many-mapping"); |
| |
| XMLDirectMapping XMLDirectMapping = new XMLDirectMapping(); |
| XMLDirectMapping.setAttributeName("attributeName"); |
| XMLDirectMapping.setGetMethodName("getAttributeName"); |
| XMLDirectMapping.setSetMethodName("setAttributeName"); |
| XMLDirectMapping.setXPath(getSecondaryNamespaceXPath() + "attribute-name/text()"); |
| descriptor.addMapping(XMLDirectMapping); |
| |
| XMLDirectMapping readonlyMapping = new XMLDirectMapping(); |
| readonlyMapping.setAttributeName("isReadOnly"); |
| readonlyMapping.setGetMethodName("isReadOnly"); |
| readonlyMapping.setSetMethodName("setIsReadOnly"); |
| readonlyMapping.setXPath(getSecondaryNamespaceXPath() + "read-only/text()"); |
| readonlyMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(readonlyMapping); |
| |
| XMLDirectMapping XMLDirectMapping3 = new XMLDirectMapping(); |
| XMLDirectMapping3.setAttributeName("getMethodName"); |
| XMLDirectMapping3.setGetMethodName("getGetMethodName"); |
| XMLDirectMapping3.setSetMethodName("setGetMethodName"); |
| XMLDirectMapping3.setXPath(getSecondaryNamespaceXPath() + "get-method/text()"); |
| descriptor.addMapping(XMLDirectMapping3); |
| |
| XMLDirectMapping XMLDirectMapping4 = new XMLDirectMapping(); |
| XMLDirectMapping4.setAttributeName("setMethodName"); |
| XMLDirectMapping4.setGetMethodName("getSetMethodName"); |
| XMLDirectMapping4.setSetMethodName("setSetMethodName"); |
| XMLDirectMapping4.setXPath(getSecondaryNamespaceXPath() + "set-method/text()"); |
| descriptor.addMapping(XMLDirectMapping4); |
| |
| XMLCompositeCollectionMapping propertiesMapping = new XMLCompositeCollectionMapping(); |
| propertiesMapping.setAttributeName("properties"); |
| propertiesMapping.setReferenceClass(PropertyAssociation.class); |
| propertiesMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| DatabaseMapping mapping = (DatabaseMapping)object; |
| Vector propertyAssociations = new NonSynchronizedVector(); |
| for (Iterator i = mapping.getProperties().entrySet().iterator(); i.hasNext();) { |
| Map.Entry me = (Map.Entry)i.next(); |
| PropertyAssociation propertyAssociation = new PropertyAssociation(); |
| propertyAssociation.setKey(me.getKey()); |
| propertyAssociation.setValue(me.getValue()); |
| propertyAssociations.add(propertyAssociation); |
| } |
| return propertyAssociations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| DatabaseMapping mapping = (DatabaseMapping)object; |
| Vector propertyAssociations = (Vector)value; |
| for (int i = 0; i < propertyAssociations.size(); i++) { |
| PropertyAssociation propertyAssociation = (PropertyAssociation)propertyAssociations.get(i); |
| mapping.getProperties().put(propertyAssociation.getKey(), propertyAssociation.getValue()); |
| } |
| } |
| }); |
| propertiesMapping.setXPath(getSecondaryNamespaceXPath() + "properties/" + getSecondaryNamespaceXPath() + "property"); |
| descriptor.addMapping(propertiesMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildClassDescriptorDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ClassDescriptor.class); |
| descriptor.setDefaultRootElement("class-mapping-descriptor"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(ClassDescriptor.class, getPrimaryNamespaceXPath() + "relational-class-mapping-descriptor"); |
| descriptor.getInheritancePolicy().addClassIndicator(RelationalDescriptor.class, getPrimaryNamespaceXPath() + "relational-class-mapping-descriptor"); |
| descriptor.getInheritancePolicy().addClassIndicator(ObjectRelationalDataTypeDescriptor.class, getPrimaryNamespaceXPath() + "object-relational-class-mapping-descriptor"); |
| descriptor.getInheritancePolicy().addClassIndicator(EISDescriptor.class, getPrimaryNamespaceXPath() + "eis-class-mapping-descriptor"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLDescriptor.class, getPrimaryNamespaceXPath() + "xml-class-mapping-descriptor"); |
| descriptor.getInheritancePolicy().addClassIndicator(ClassDescriptor.class, getPrimaryNamespaceXPath() + "class-mapping-descriptor"); |
| |
| descriptor.getEventManager().setPostBuildSelector("applyAmendmentMethod"); |
| |
| XMLDirectMapping javaClassMapping = new XMLDirectMapping(); |
| javaClassMapping.setAttributeName("javaClass"); |
| javaClassMapping.setGetMethodName("getJavaClass"); |
| javaClassMapping.setSetMethodName("setJavaClass"); |
| javaClassMapping.setXPath(getSecondaryNamespaceXPath() + "class/text()"); |
| descriptor.addMapping(javaClassMapping); |
| |
| XMLDirectMapping aliasMapping = new XMLDirectMapping(); |
| aliasMapping.setAttributeName("alias"); |
| aliasMapping.setGetMethodName("getAlias"); |
| aliasMapping.setSetMethodName("setAlias"); |
| aliasMapping.setXPath(getSecondaryNamespaceXPath() + "alias/text()"); |
| descriptor.addMapping(aliasMapping); |
| |
| XMLCompositeCollectionMapping primaryKeyFieldNamesMapping = new XMLCompositeCollectionMapping(); |
| primaryKeyFieldNamesMapping.setAttributeName("primaryKeyFields"); |
| primaryKeyFieldNamesMapping.setReferenceClass(DatabaseField.class); |
| primaryKeyFieldNamesMapping.setGetMethodName("getPrimaryKeyFields"); |
| primaryKeyFieldNamesMapping.setSetMethodName("setPrimaryKeyFields"); |
| primaryKeyFieldNamesMapping.setXPath(getSecondaryNamespaceXPath() + "primary-key/" + getSecondaryNamespaceXPath() + "field"); |
| ((XMLField)primaryKeyFieldNamesMapping.getField()).setLeafElementType(fieldQname); |
| primaryKeyFieldNamesMapping.useCollectionClass(ArrayList.class); |
| descriptor.addMapping(primaryKeyFieldNamesMapping); |
| |
| XMLDirectMapping descriptorIsReadOnlyMapping = new XMLDirectMapping(); |
| descriptorIsReadOnlyMapping.setAttributeName("shouldBeReadOnly"); |
| descriptorIsReadOnlyMapping.setGetMethodName("shouldBeReadOnly"); |
| descriptorIsReadOnlyMapping.setSetMethodName("setShouldBeReadOnly"); |
| descriptorIsReadOnlyMapping.setXPath(getSecondaryNamespaceXPath() + "read-only/text()"); |
| descriptorIsReadOnlyMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(descriptorIsReadOnlyMapping); |
| |
| XMLCompositeObjectMapping inheritancePolicyMapping = new XMLCompositeObjectMapping(); |
| inheritancePolicyMapping.setAttributeName("inheritancePolicy"); |
| inheritancePolicyMapping.setGetMethodName("getInheritancePolicyOrNull"); |
| inheritancePolicyMapping.setSetMethodName("setInheritancePolicy"); |
| inheritancePolicyMapping.setReferenceClass(InheritancePolicy.class); |
| inheritancePolicyMapping.setXPath(getSecondaryNamespaceXPath() + "inheritance"); |
| descriptor.addMapping(inheritancePolicyMapping); |
| |
| XMLCompositeObjectMapping eventManagerMapping = new XMLCompositeObjectMapping(); |
| eventManagerMapping.setAttributeName("eventManager"); |
| eventManagerMapping.setGetMethodName("getEventManager"); |
| eventManagerMapping.setSetMethodName("setEventManager"); |
| eventManagerMapping.setReferenceClass(DescriptorEventManager.class); |
| eventManagerMapping.setXPath(getSecondaryNamespaceXPath() + "events"); |
| descriptor.addMapping(eventManagerMapping); |
| |
| XMLCompositeObjectMapping queryManagerMapping = new XMLCompositeObjectMapping(); |
| queryManagerMapping.setAttributeName("queryManager"); |
| queryManagerMapping.setGetMethodName("getQueryManager"); |
| queryManagerMapping.setSetMethodName("setQueryManager"); |
| queryManagerMapping.setReferenceClass(DescriptorQueryManager.class); |
| queryManagerMapping.setXPath(getSecondaryNamespaceXPath() + "querying"); |
| descriptor.addMapping(queryManagerMapping); |
| |
| XMLCompositeCollectionMapping aggregateCollectionMapping = new XMLCompositeCollectionMapping(); |
| aggregateCollectionMapping.useCollectionClass(NonSynchronizedVector.class); |
| aggregateCollectionMapping.setAttributeName("mappings"); |
| aggregateCollectionMapping.setReferenceClass(DatabaseMapping.class); |
| aggregateCollectionMapping.setXPath(getSecondaryNamespaceXPath() + "attribute-mappings/" + getSecondaryNamespaceXPath() + "attribute-mapping"); |
| aggregateCollectionMapping.setSetMethodName("setMappings"); |
| aggregateCollectionMapping.setGetMethodName("getMappings"); |
| descriptor.addMapping(aggregateCollectionMapping); |
| |
| XMLDirectMapping descriptorTypeMapping = new XMLDirectMapping(); |
| descriptorTypeMapping.setAttributeName("descriptorTypeValue"); |
| descriptorTypeMapping.setGetMethodName("getDescriptorTypeValue"); |
| descriptorTypeMapping.setSetMethodName("setDescriptorTypeValue"); |
| ObjectTypeConverter descriptorTypeConverter = new ObjectTypeConverter(); |
| descriptorTypeConverter.addConversionValue("aggregate", "Aggregate"); |
| descriptorTypeConverter.addConversionValue("aggregate-collection", "Aggregate collection"); |
| descriptorTypeConverter.addConversionValue("composite", "Composite"); |
| descriptorTypeConverter.addConversionValue("composite-collection", "Composite collection"); |
| descriptorTypeConverter.addConversionValue("interface", "Interface"); |
| descriptorTypeConverter.addConversionValue("independent", "Normal"); |
| descriptorTypeMapping.setConverter(descriptorTypeConverter); |
| descriptorTypeMapping.setXPath(getPrimaryNamespaceXPath() + "descriptor-type/text()"); |
| descriptor.addMapping(descriptorTypeMapping); |
| |
| XMLCompositeObjectMapping interfacePolicyMapping = new XMLCompositeObjectMapping(); |
| interfacePolicyMapping.setAttributeName("interfacePolicy"); |
| interfacePolicyMapping.setGetMethodName("getInterfacePolicyOrNull"); |
| interfacePolicyMapping.setSetMethodName("setInterfacePolicy"); |
| interfacePolicyMapping.setReferenceClass(InterfacePolicy.class); |
| interfacePolicyMapping.setXPath(getPrimaryNamespaceXPath() + "interfaces"); |
| descriptor.addMapping(interfacePolicyMapping); |
| |
| XMLCompositeObjectMapping lockingPolicyMapping = new XMLCompositeObjectMapping(); |
| lockingPolicyMapping.setAttributeName("lockingPolicy"); |
| lockingPolicyMapping.setGetMethodName("getOptimisticLockingPolicy"); |
| lockingPolicyMapping.setSetMethodName("setOptimisticLockingPolicy"); |
| lockingPolicyMapping.setReferenceClass(VersionLockingPolicy.class); |
| lockingPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "locking"); |
| descriptor.addMapping(lockingPolicyMapping); |
| |
| XMLDirectMapping sequenceNameMapping = new XMLDirectMapping(); |
| sequenceNameMapping.setAttributeName("sequenceNumberName"); |
| sequenceNameMapping.setGetMethodName("getSequenceNumberName"); |
| sequenceNameMapping.setSetMethodName("setSequenceNumberName"); |
| sequenceNameMapping.setXPath(getPrimaryNamespaceXPath() + "sequencing/" + getPrimaryNamespaceXPath() + "sequence-name/text()"); |
| descriptor.addMapping(sequenceNameMapping); |
| |
| XMLDirectMapping sequenceFieldMapping = new XMLDirectMapping(); |
| sequenceFieldMapping.setAttributeName("sequenceNumberField"); |
| sequenceFieldMapping.setGetMethodName("getSequenceNumberFieldName"); |
| sequenceFieldMapping.setSetMethodName("setSequenceNumberFieldName"); |
| sequenceFieldMapping.setXPath(getPrimaryNamespaceXPath() + "sequencing/" + getPrimaryNamespaceXPath() + "sequence-field/@name"); |
| descriptor.addMapping(sequenceFieldMapping); |
| |
| XMLDirectMapping identityMapClassMapping = new XMLDirectMapping(); |
| identityMapClassMapping.setAttributeName("identityMapClass"); |
| identityMapClassMapping.setGetMethodName("getIdentityMapClass"); |
| identityMapClassMapping.setSetMethodName("setIdentityMapClass"); |
| ObjectTypeConverter identityMapClassConverter = new ObjectTypeConverter(); |
| identityMapClassConverter.addConversionValue("none", NoIdentityMap.class); |
| identityMapClassConverter.addConversionValue("full", FullIdentityMap.class); |
| identityMapClassConverter.addConversionValue("cache", CacheIdentityMap.class); |
| identityMapClassConverter.addConversionValue("weak-reference", WeakIdentityMap.class); |
| identityMapClassConverter.addConversionValue("soft-cache-weak-reference", SoftCacheWeakIdentityMap.class); |
| identityMapClassConverter.addConversionValue("hard-cache-weak-reference", HardCacheWeakIdentityMap.class); |
| identityMapClassMapping.setConverter(identityMapClassConverter); |
| identityMapClassMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "cache-type/text()"); |
| identityMapClassMapping.setNullValue(SoftCacheWeakIdentityMap.class); |
| descriptor.addMapping(identityMapClassMapping); |
| |
| XMLDirectMapping remoteIdentityMapClassMapping = new XMLDirectMapping(); |
| remoteIdentityMapClassMapping.setAttributeName("remoteIdentityMapClass"); |
| remoteIdentityMapClassMapping.setGetMethodName("getRemoteIdentityMapClass"); |
| remoteIdentityMapClassMapping.setSetMethodName("setRemoteIdentityMapClass"); |
| ObjectTypeConverter remoteIdentityMapClassConverter = new ObjectTypeConverter(); |
| remoteIdentityMapClassConverter.addConversionValue("none", NoIdentityMap.class); |
| remoteIdentityMapClassConverter.addConversionValue("full", FullIdentityMap.class); |
| remoteIdentityMapClassConverter.addConversionValue("cache", CacheIdentityMap.class); |
| remoteIdentityMapClassConverter.addConversionValue("weak-reference", WeakIdentityMap.class); |
| remoteIdentityMapClassConverter.addConversionValue("soft-cache-weak-reference", SoftCacheWeakIdentityMap.class); |
| remoteIdentityMapClassConverter.addConversionValue("hard-cache-weak-reference", HardCacheWeakIdentityMap.class); |
| remoteIdentityMapClassMapping.setConverter(remoteIdentityMapClassConverter); |
| remoteIdentityMapClassMapping.setXPath(getPrimaryNamespaceXPath() + "remote-caching/" + getPrimaryNamespaceXPath() + "cache-type/text()"); |
| remoteIdentityMapClassMapping.setNullValue(SoftCacheWeakIdentityMap.class); |
| descriptor.addMapping(remoteIdentityMapClassMapping); |
| |
| XMLDirectMapping identityMapSizeMapping = new XMLDirectMapping(); |
| identityMapSizeMapping.setAttributeName("identityMapSize"); |
| identityMapSizeMapping.setGetMethodName("getIdentityMapSize"); |
| identityMapSizeMapping.setSetMethodName("setIdentityMapSize"); |
| identityMapSizeMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "cache-size/text()"); |
| identityMapSizeMapping.setNullValue(100); |
| descriptor.addMapping(identityMapSizeMapping); |
| |
| XMLDirectMapping remoteIdentityMapSizeMapping = new XMLDirectMapping(); |
| remoteIdentityMapSizeMapping.setAttributeName("remoteIdentityMapSize"); |
| remoteIdentityMapSizeMapping.setGetMethodName("getRemoteIdentityMapSize"); |
| remoteIdentityMapSizeMapping.setSetMethodName("setRemoteIdentityMapSize"); |
| remoteIdentityMapSizeMapping.setXPath(getPrimaryNamespaceXPath() + "remote-caching/" + getPrimaryNamespaceXPath() + "cache-size/text()"); |
| remoteIdentityMapSizeMapping.setNullValue(100); |
| descriptor.addMapping(remoteIdentityMapSizeMapping); |
| |
| XMLDirectMapping shouldAlwaysRefreshCacheMapping = new XMLDirectMapping(); |
| shouldAlwaysRefreshCacheMapping.setAttributeName("shouldAlwaysRefreshCache"); |
| shouldAlwaysRefreshCacheMapping.setGetMethodName("shouldAlwaysRefreshCache"); |
| shouldAlwaysRefreshCacheMapping.setSetMethodName("setShouldAlwaysRefreshCache"); |
| shouldAlwaysRefreshCacheMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "always-refresh/text()"); |
| shouldAlwaysRefreshCacheMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldAlwaysRefreshCacheMapping); |
| |
| XMLDirectMapping shouldAlwaysRefreshCacheOnRemoteMapping = new XMLDirectMapping(); |
| shouldAlwaysRefreshCacheOnRemoteMapping.setAttributeName("shouldAlwaysRefreshCacheOnRemote"); |
| shouldAlwaysRefreshCacheOnRemoteMapping.setGetMethodName("shouldAlwaysRefreshCacheOnRemote"); |
| shouldAlwaysRefreshCacheOnRemoteMapping.setSetMethodName("setShouldAlwaysRefreshCacheOnRemote"); |
| shouldAlwaysRefreshCacheOnRemoteMapping.setXPath(getPrimaryNamespaceXPath() + "remote-caching/" + getPrimaryNamespaceXPath() + "always-refresh/text()"); |
| shouldAlwaysRefreshCacheOnRemoteMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldAlwaysRefreshCacheOnRemoteMapping); |
| |
| XMLDirectMapping shouldOnlyRefreshCacheIfNewerVersionMapping = new XMLDirectMapping(); |
| shouldOnlyRefreshCacheIfNewerVersionMapping.setAttributeName("shouldOnlyRefreshCacheIfNewerVersion"); |
| shouldOnlyRefreshCacheIfNewerVersionMapping.setGetMethodName("shouldOnlyRefreshCacheIfNewerVersion"); |
| shouldOnlyRefreshCacheIfNewerVersionMapping.setSetMethodName("setShouldOnlyRefreshCacheIfNewerVersion"); |
| shouldOnlyRefreshCacheIfNewerVersionMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "only-refresh-cache-if-newer-version/text()"); |
| shouldOnlyRefreshCacheIfNewerVersionMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldOnlyRefreshCacheIfNewerVersionMapping); |
| |
| XMLDirectMapping shouldDisableCacheHitsMapping = new XMLDirectMapping(); |
| shouldDisableCacheHitsMapping.setAttributeName("shouldDisableCacheHits"); |
| shouldDisableCacheHitsMapping.setGetMethodName("shouldDisableCacheHits"); |
| shouldDisableCacheHitsMapping.setSetMethodName("setShouldDisableCacheHits"); |
| shouldDisableCacheHitsMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "disable-cache-hits/text()"); |
| shouldDisableCacheHitsMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldDisableCacheHitsMapping); |
| |
| XMLDirectMapping shouldDisableCacheHitsOnRemoteMapping = new XMLDirectMapping(); |
| shouldDisableCacheHitsOnRemoteMapping.setAttributeName("shouldDisableCacheHitsOnRemote"); |
| shouldDisableCacheHitsOnRemoteMapping.setGetMethodName("shouldDisableCacheHitsOnRemote"); |
| shouldDisableCacheHitsOnRemoteMapping.setSetMethodName("setShouldDisableCacheHitsOnRemote"); |
| shouldDisableCacheHitsOnRemoteMapping.setXPath(getPrimaryNamespaceXPath() + "remote-caching/" + getPrimaryNamespaceXPath() + "disable-cache-hits/text()"); |
| shouldDisableCacheHitsOnRemoteMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldDisableCacheHitsOnRemoteMapping); |
| |
| XMLDirectMapping shouldAlwaysConformResultsInUnitOfWorkMapping = new XMLDirectMapping(); |
| shouldAlwaysConformResultsInUnitOfWorkMapping.setAttributeName("shouldAlwaysConformResultsInUnitOfWork"); |
| shouldAlwaysConformResultsInUnitOfWorkMapping.setGetMethodName("shouldAlwaysConformResultsInUnitOfWork"); |
| shouldAlwaysConformResultsInUnitOfWorkMapping.setSetMethodName("setShouldAlwaysConformResultsInUnitOfWork"); |
| shouldAlwaysConformResultsInUnitOfWorkMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "always-conform/text()"); |
| shouldAlwaysConformResultsInUnitOfWorkMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldAlwaysConformResultsInUnitOfWorkMapping); |
| |
| XMLDirectMapping isIsolatedMapping = new XMLDirectMapping(); |
| isIsolatedMapping.setAttributeName("cacheIsolation"); |
| isIsolatedMapping.setGetMethodName("getCacheIsolation"); |
| isIsolatedMapping.setSetMethodName("setCacheIsolation"); |
| isIsolatedMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "isolated/text()"); |
| ObjectTypeConverter isIsolatedConverter = new ObjectTypeConverter(); |
| isIsolatedConverter.addConversionValue("true", CacheIsolationType.ISOLATED); |
| isIsolatedConverter.addConversionValue("false", CacheIsolationType.SHARED); |
| isIsolatedMapping.setConverter(isIsolatedConverter); |
| isIsolatedMapping.setNullValue(CacheIsolationType.SHARED); |
| descriptor.addMapping(isIsolatedMapping); |
| |
| XMLDirectMapping unitOfWorkCacheIsolationLevelMapping = new XMLDirectMapping(); |
| unitOfWorkCacheIsolationLevelMapping.setAttributeName("unitOfWorkCacheIsolationLevel"); |
| unitOfWorkCacheIsolationLevelMapping.setGetMethodName("getUnitOfWorkCacheIsolationLevel"); |
| unitOfWorkCacheIsolationLevelMapping.setSetMethodName("setUnitOfWorkCacheIsolationLevel"); |
| unitOfWorkCacheIsolationLevelMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "unitofwork-isolation-level/text()"); |
| ObjectTypeConverter unitOfWorkCacheIsolationLevelConverter = new ObjectTypeConverter(); |
| unitOfWorkCacheIsolationLevelConverter.addConversionValue("use-session-cache-after-transaction", ClassDescriptor.USE_SESSION_CACHE_AFTER_TRANSACTION); |
| unitOfWorkCacheIsolationLevelConverter.addConversionValue("isolate-new-data-after-transaction", ClassDescriptor.ISOLATE_NEW_DATA_AFTER_TRANSACTION); |
| unitOfWorkCacheIsolationLevelConverter.addConversionValue("isolate-cache-after-transaction", ClassDescriptor.ISOLATE_CACHE_AFTER_TRANSACTION); |
| unitOfWorkCacheIsolationLevelConverter.addConversionValue("isolate-cache-always", ClassDescriptor.ISOLATE_CACHE_ALWAYS); |
| unitOfWorkCacheIsolationLevelMapping.setConverter(unitOfWorkCacheIsolationLevelConverter); |
| unitOfWorkCacheIsolationLevelMapping.setNullValue(ClassDescriptor.ISOLATE_NEW_DATA_AFTER_TRANSACTION); |
| descriptor.addMapping(unitOfWorkCacheIsolationLevelMapping); |
| |
| XMLCompositeObjectMapping cacheInvalidationPolicyMapping = new XMLCompositeObjectMapping(); |
| cacheInvalidationPolicyMapping.setAttributeName("cacheInvalidationPolicy"); |
| cacheInvalidationPolicyMapping.setReferenceClass(CacheInvalidationPolicy.class); |
| cacheInvalidationPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "cache-invalidation-policy"); |
| descriptor.addMapping(cacheInvalidationPolicyMapping); |
| |
| XMLDirectMapping cacheSyncTypeMapping = new XMLDirectMapping(); |
| cacheSyncTypeMapping.setAttributeName("cacheSynchronizationType"); |
| cacheSyncTypeMapping.setGetMethodName("getCacheSynchronizationType"); |
| cacheSyncTypeMapping.setSetMethodName("setCacheSynchronizationType"); |
| cacheSyncTypeMapping.setXPath(getPrimaryNamespaceXPath() + "caching/" + getPrimaryNamespaceXPath() + "cache-sync-type/text()"); |
| ObjectTypeConverter cacheSyncTypeConverter = new ObjectTypeConverter(); |
| cacheSyncTypeConverter.addConversionValue("invalidation", ClassDescriptor.INVALIDATE_CHANGED_OBJECTS); |
| cacheSyncTypeConverter.addConversionValue("no-changes", ClassDescriptor.DO_NOT_SEND_CHANGES); |
| cacheSyncTypeConverter.addConversionValue("change-set-with-new-objects", ClassDescriptor.SEND_NEW_OBJECTS_WITH_CHANGES); |
| cacheSyncTypeConverter.addConversionValue("change-set", ClassDescriptor.SEND_OBJECT_CHANGES); |
| cacheSyncTypeMapping.setConverter(cacheSyncTypeConverter); |
| cacheSyncTypeMapping.setNullValue(ClassDescriptor.UNDEFINED_OBJECT_CHANGE_BEHAVIOR); |
| descriptor.addMapping(cacheSyncTypeMapping); |
| |
| XMLCompositeObjectMapping historyPolicyMapping = new XMLCompositeObjectMapping(); |
| historyPolicyMapping.setAttributeName("historyPolicy"); |
| historyPolicyMapping.setGetMethodName("getHistoryPolicy"); |
| historyPolicyMapping.setSetMethodName("setHistoryPolicy"); |
| historyPolicyMapping.setReferenceClass(HistoryPolicy.class); |
| historyPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "history-policy"); |
| descriptor.addMapping(historyPolicyMapping); |
| |
| XMLCompositeObjectMapping returningPolicyMapping = new XMLCompositeObjectMapping(); |
| returningPolicyMapping.setAttributeName("returningPolicy"); |
| returningPolicyMapping.setGetMethodName("getReturningPolicy"); |
| returningPolicyMapping.setSetMethodName("setReturningPolicy"); |
| returningPolicyMapping.setReferenceClass(ReturningPolicy.class); |
| returningPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "returning-policy"); |
| descriptor.addMapping(returningPolicyMapping); |
| |
| XMLDirectMapping amendmentClassMapping = new XMLDirectMapping(); |
| amendmentClassMapping.setAttributeName("amendmentClass"); |
| amendmentClassMapping.setGetMethodName("getAmendmentClass"); |
| amendmentClassMapping.setSetMethodName("setAmendmentClass"); |
| amendmentClassMapping.setXPath(getPrimaryNamespaceXPath() + "amendment/" + getPrimaryNamespaceXPath() + "amendment-class/text()"); |
| descriptor.addMapping(amendmentClassMapping); |
| |
| XMLDirectMapping amendmentMethodNameMapping = new XMLDirectMapping(); |
| amendmentMethodNameMapping.setAttributeName("amendmentMethodName"); |
| amendmentMethodNameMapping.setGetMethodName("getAmendmentMethodName"); |
| amendmentMethodNameMapping.setSetMethodName("setAmendmentMethodName"); |
| amendmentMethodNameMapping.setXPath(getPrimaryNamespaceXPath() + "amendment/" + getPrimaryNamespaceXPath() + "amendment-method/text()"); |
| descriptor.addMapping(amendmentMethodNameMapping); |
| |
| XMLCompositeObjectMapping instantiationPolicyMapping = new XMLCompositeObjectMapping(); |
| instantiationPolicyMapping.setAttributeName("instantiationPolicy"); |
| instantiationPolicyMapping.setGetMethodName("getInstantiationPolicy"); |
| instantiationPolicyMapping.setSetMethodName("setInstantiationPolicy"); |
| instantiationPolicyMapping.setReferenceClass(InstantiationPolicy.class); |
| instantiationPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "instantiation"); |
| descriptor.addMapping(instantiationPolicyMapping); |
| |
| XMLCompositeObjectMapping copyPolicyMapping = new XMLCompositeObjectMapping(); |
| copyPolicyMapping.setAttributeName("copyPolicy"); |
| copyPolicyMapping.setGetMethodName("getCopyPolicy"); |
| copyPolicyMapping.setSetMethodName("setCopyPolicy"); |
| copyPolicyMapping.setReferenceClass(AbstractCopyPolicy.class); |
| copyPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "copying"); |
| descriptor.addMapping(copyPolicyMapping); |
| |
| XMLCompositeCollectionMapping queryKeysMapping = new XMLCompositeCollectionMapping(); |
| queryKeysMapping.setAttributeName("queryKeys"); |
| queryKeysMapping.setReferenceClass(QueryKey.class); |
| queryKeysMapping.setXPath(getPrimaryNamespaceXPath() + "query-keys/" + getPrimaryNamespaceXPath() + "query-key"); |
| queryKeysMapping.setSetMethodName("setQueryKeys"); |
| queryKeysMapping.setGetMethodName("getQueryKeys"); |
| queryKeysMapping.useMapClass(HashMap.class, "getName"); |
| descriptor.addMapping(queryKeysMapping); |
| |
| XMLCompositeObjectMapping cmpPolicyMapping = new XMLCompositeObjectMapping(); |
| cmpPolicyMapping.setAttributeName("cmpPolicy"); |
| cmpPolicyMapping.setGetMethodName("getCMPPolicy"); |
| cmpPolicyMapping.setSetMethodName("setCMPPolicy"); |
| cmpPolicyMapping.setReferenceClass(CMPPolicy.class); |
| cmpPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "cmp-policy"); |
| descriptor.addMapping(cmpPolicyMapping); |
| |
| XMLCompositeObjectMapping fetchGroupManagerMapping = new XMLCompositeObjectMapping(); |
| fetchGroupManagerMapping.setAttributeName("fetchGroupManager"); |
| fetchGroupManagerMapping.setGetMethodName("getFetchGroupManager"); |
| fetchGroupManagerMapping.setSetMethodName("setFetchGroupManager"); |
| fetchGroupManagerMapping.setReferenceClass(FetchGroupManager.class); |
| fetchGroupManagerMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-groups"); |
| descriptor.addMapping(fetchGroupManagerMapping); |
| |
| XMLCompositeObjectMapping changePolicyMapping = new XMLCompositeObjectMapping(); |
| changePolicyMapping.setAttributeName("changePolicy"); |
| changePolicyMapping.setReferenceClass(ObjectChangePolicy.class); |
| changePolicyMapping.setXPath(getPrimaryNamespaceXPath() + "change-policy"); |
| descriptor.addMapping(changePolicyMapping); |
| |
| XMLCompositeCollectionMapping propertiesMapping = new XMLCompositeCollectionMapping(); |
| propertiesMapping.setAttributeName("properties"); |
| propertiesMapping.setReferenceClass(PropertyAssociation.class); |
| propertiesMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| ClassDescriptor desc = (ClassDescriptor)object; |
| Vector propertyAssociations = new NonSynchronizedVector(); |
| for (Iterator i = desc.getProperties().entrySet().iterator(); i.hasNext();) { |
| Map.Entry me = (Map.Entry)i.next(); |
| PropertyAssociation propertyAssociation = new PropertyAssociation(); |
| propertyAssociation.setKey(me.getKey()); |
| propertyAssociation.setValue(me.getValue()); |
| propertyAssociations.add(propertyAssociation); |
| } |
| return propertyAssociations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| ClassDescriptor desc = (ClassDescriptor)object; |
| Vector propertyAssociations = (Vector)value; |
| for (int i = 0; i < propertyAssociations.size(); i++) { |
| PropertyAssociation propertyAssociation = (PropertyAssociation)propertyAssociations.get(i); |
| desc.getProperties().put(propertyAssociation.getKey(), propertyAssociation.getValue()); |
| } |
| } |
| }); |
| propertiesMapping.setXPath(getSecondaryNamespaceXPath() + "properties/" + getSecondaryNamespaceXPath() + "property"); |
| descriptor.addMapping(propertiesMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildRelationalDescriptorDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(RelationalDescriptor.class); |
| descriptor.getInheritancePolicy().setParentClass(ClassDescriptor.class); |
| |
| XMLCompositeCollectionMapping tablesMapping = new XMLCompositeCollectionMapping(); |
| tablesMapping.useCollectionClass(NonSynchronizedVector.class); |
| tablesMapping.setAttributeName("tables/table"); |
| tablesMapping.setGetMethodName("getTables"); |
| tablesMapping.setSetMethodName("setTables"); |
| tablesMapping.setXPath(getPrimaryNamespaceXPath() + "tables/" + getPrimaryNamespaceXPath() + "table"); |
| tablesMapping.setReferenceClass(DatabaseTable.class); |
| descriptor.addMapping(tablesMapping); |
| |
| XMLCompositeCollectionMapping multipleTablesPrimaryKey = new XMLCompositeCollectionMapping(); |
| multipleTablesPrimaryKey.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| ClassDescriptor mapping = (ClassDescriptor)object; |
| Vector associations = mapping.getMultipleTablePrimaryKeyAssociations(); |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(new DatabaseField((String)association.getKey())); |
| association.setValue(new DatabaseField((String)association.getValue())); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| ClassDescriptor mapping = (ClassDescriptor)object; |
| Vector associations = (Vector)value; |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(((DatabaseField)association.getKey()).getQualifiedName()); |
| association.setValue(((DatabaseField)association.getValue()).getQualifiedName()); |
| } |
| mapping.setForeignKeyFieldNamesForMultipleTable(associations); |
| } |
| }); |
| multipleTablesPrimaryKey.setAttributeName("multipleTablesPrimaryKeys"); |
| multipleTablesPrimaryKey.setReferenceClass(Association.class); |
| multipleTablesPrimaryKey.setXPath(getPrimaryNamespaceXPath() + "multiple-table-primary-keys/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(multipleTablesPrimaryKey); |
| |
| XMLCompositeCollectionMapping multipleTables = new XMLCompositeCollectionMapping(); |
| multipleTables.setReferenceClass(Association.class); |
| multipleTables.setXPath(getPrimaryNamespaceXPath() + "multiple-table-foreign-keys/" + getSecondaryNamespaceXPath() + "field-reference"); |
| multipleTables.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| ClassDescriptor mapping = (ClassDescriptor)object; |
| Vector associations = mapping.getMultipleTableForeignKeyAssociations(); |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(new DatabaseField((String)association.getKey())); |
| association.setValue(new DatabaseField((String)association.getValue())); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| ClassDescriptor mapping = (ClassDescriptor)object; |
| Vector associations = (Vector)value; |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(((DatabaseField)association.getKey()).getQualifiedName()); |
| association.setValue(((DatabaseField)association.getValue()).getQualifiedName()); |
| } |
| mapping.setForeignKeyFieldNamesForMultipleTable(associations); |
| } |
| }); |
| multipleTables.setAttributeName("multipleTablesForeignKeys"); |
| descriptor.addMapping(multipleTables); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DirectCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("containerPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| XMLDirectMapping referenceTableMapping = new XMLDirectMapping(); |
| referenceTableMapping.setAttributeName("referenceTableName"); |
| // CR#2407 Call getReferenceTableQualifiedName that includes table qualifier. |
| referenceTableMapping.setGetMethodName("getReferenceTableQualifiedName"); |
| referenceTableMapping.setSetMethodName("setReferenceTableName"); |
| referenceTableMapping.setXPath(getPrimaryNamespaceXPath() + "reference-table/text()"); |
| descriptor.addMapping(referenceTableMapping); |
| |
| XMLCompositeObjectMapping directFieldMapping = new XMLCompositeObjectMapping(); |
| directFieldMapping.setAttributeName("directField"); |
| directFieldMapping.setGetMethodName("getDirectField"); |
| directFieldMapping.setSetMethodName("setDirectField"); |
| directFieldMapping.setXPath(getPrimaryNamespaceXPath() + "direct-field"); |
| directFieldMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)directFieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(directFieldMapping); |
| |
| XMLCompositeCollectionMapping sourceToReferenceKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| sourceToReferenceKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| sourceToReferenceKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| List<DatabaseField> sourceFields = ((DirectCollectionMapping)object).getSourceKeyFields(); |
| List<DatabaseField> referenceFields = ((DirectCollectionMapping)object).getReferenceKeyFields(); |
| List associations = new ArrayList(sourceFields.size()); |
| for (int index = 0; index < sourceFields.size(); index++) { |
| associations.add(new Association(referenceFields.get(index), sourceFields.get(index))); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| DirectCollectionMapping mapping = (DirectCollectionMapping)object; |
| List associations = (List)value; |
| mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| mapping.setReferenceKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); |
| mapping.getReferenceKeyFields().add((DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| sourceToReferenceKeyFieldAssociationsMapping.setAttributeName("sourceToReferenceKeyFieldAssociations"); |
| sourceToReferenceKeyFieldAssociationsMapping.setXPath(getPrimaryNamespaceXPath() + "reference-foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(sourceToReferenceKeyFieldAssociationsMapping); |
| |
| XMLCompositeObjectMapping valueConverterMapping = new XMLCompositeObjectMapping(); |
| valueConverterMapping.setAttributeName("valueConverter"); |
| valueConverterMapping.setGetMethodName("getValueConverter"); |
| valueConverterMapping.setSetMethodName("setValueConverter"); |
| valueConverterMapping.setXPath(getPrimaryNamespaceXPath() + "value-converter"); |
| valueConverterMapping.setReferenceClass(Converter.class); |
| descriptor.addMapping(valueConverterMapping); |
| |
| XMLCompositeObjectMapping historyPolicyMapping = new XMLCompositeObjectMapping(); |
| historyPolicyMapping.setAttributeName("historyPolicy"); |
| historyPolicyMapping.setGetMethodName("getHistoryPolicy"); |
| historyPolicyMapping.setSetMethodName("setHistoryPolicy"); |
| historyPolicyMapping.setReferenceClass(HistoryPolicy.class); |
| historyPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "history-policy"); |
| descriptor.addMapping(historyPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectMapMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DirectMapMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DirectCollectionMapping.class); |
| |
| XMLCompositeObjectMapping directKeyFieldMapping = new XMLCompositeObjectMapping(); |
| directKeyFieldMapping.setAttributeName("directKeyField"); |
| directKeyFieldMapping.setGetMethodName("getDirectKeyField"); |
| directKeyFieldMapping.setSetMethodName("setDirectKeyField"); |
| directKeyFieldMapping.setXPath(getPrimaryNamespaceXPath() + "direct-key-field"); |
| directKeyFieldMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)directKeyFieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(directKeyFieldMapping); |
| |
| XMLCompositeObjectMapping keyConverterMapping = new XMLCompositeObjectMapping(); |
| keyConverterMapping.setAttributeName("keyConverter"); |
| keyConverterMapping.setGetMethodName("getKeyConverter"); |
| keyConverterMapping.setSetMethodName("setKeyConverter"); |
| keyConverterMapping.setXPath(getPrimaryNamespaceXPath() + "key-converter"); |
| keyConverterMapping.setReferenceClass(Converter.class); |
| descriptor.addMapping(keyConverterMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectMapContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(MappedKeyMapContainerPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(InterfaceContainerPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectQueryKeyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(DirectQueryKey.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(QueryKey.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAbstractDirectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(AbstractDirectMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getSecondaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLDirectMapping nullValueMapping = new XMLDirectMapping(); |
| nullValueMapping.setAttributeName("nullValue"); |
| nullValueMapping.setGetMethodName("getNullValue"); |
| nullValueMapping.setSetMethodName("setNullValue"); |
| nullValueMapping.setField(buildTypedField(getSecondaryNamespaceXPath() + "null-value/text()")); |
| descriptor.addMapping(nullValueMapping); |
| |
| XMLCompositeObjectMapping converterMapping = new XMLCompositeObjectMapping(); |
| converterMapping.setAttributeName("converter"); |
| converterMapping.setGetMethodName("getConverter"); |
| converterMapping.setSetMethodName("setConverter"); |
| converterMapping.setXPath(getSecondaryNamespaceXPath() + "converter"); |
| converterMapping.setReferenceClass(Converter.class); |
| descriptor.addMapping(converterMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectToFieldMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.descriptorIsAggregate(); |
| |
| descriptor.setJavaClass(DirectToFieldMapping.class); |
| descriptor.getInheritancePolicy().setParentClass(AbstractDirectMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLDirectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLDirectMapping.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(AbstractDirectMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildEventManagerDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(DescriptorEventManager.class); |
| descriptor.setDefaultRootElement("event-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DescriptorEventManager.class, getPrimaryNamespaceXPath() + "event-policy"); |
| |
| XMLCompositeDirectCollectionMapping eventListenersMapping = new XMLCompositeDirectCollectionMapping(); |
| eventListenersMapping.setAttributeName("eventListeners"); |
| eventListenersMapping.setGetMethodName("getEventListeners"); |
| eventListenersMapping.setSetMethodName("setEventListeners"); |
| eventListenersMapping.useCollectionClass(org.eclipse.persistence.internal.helper.NonSynchronizedVector.class); |
| eventListenersMapping.setValueConverter(new ClassInstanceConverter()); |
| eventListenersMapping.setXPath(getSecondaryNamespaceXPath() + "event-listeners/" + getSecondaryNamespaceXPath() + "event-listener/text()"); |
| descriptor.addMapping(eventListenersMapping); |
| |
| XMLDirectMapping postBuildSelectorMapping = new XMLDirectMapping(); |
| postBuildSelectorMapping.setAttributeName("getPostBuildSelector"); |
| postBuildSelectorMapping.setGetMethodName("getPostBuildSelector"); |
| postBuildSelectorMapping.setSetMethodName("setPostBuildSelector"); |
| postBuildSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-build-method/text()"); |
| descriptor.addMapping(postBuildSelectorMapping); |
| |
| XMLDirectMapping preWriteSelectorMapping = new XMLDirectMapping(); |
| preWriteSelectorMapping.setAttributeName("preWriteSelector"); |
| preWriteSelectorMapping.setGetMethodName("getPreWriteSelector"); |
| preWriteSelectorMapping.setSetMethodName("setPreWriteSelector"); |
| preWriteSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "pre-write-method/text()"); |
| descriptor.addMapping(preWriteSelectorMapping); |
| |
| XMLDirectMapping postWriteSelectorMapping = new XMLDirectMapping(); |
| postWriteSelectorMapping.setAttributeName("postWriteSelector"); |
| postWriteSelectorMapping.setGetMethodName("getPostWriteSelector"); |
| postWriteSelectorMapping.setSetMethodName("setPostWriteSelector"); |
| postWriteSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-write-method/text()"); |
| descriptor.addMapping(postWriteSelectorMapping); |
| |
| XMLDirectMapping preInsertSelectorMapping = new XMLDirectMapping(); |
| preInsertSelectorMapping.setAttributeName("preInsertSelector"); |
| preInsertSelectorMapping.setGetMethodName("getPreInsertSelector"); |
| preInsertSelectorMapping.setSetMethodName("setPreInsertSelector"); |
| preInsertSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "pre-insert-method/text()"); |
| descriptor.addMapping(preInsertSelectorMapping); |
| |
| XMLDirectMapping postInsertSelectorMapping = new XMLDirectMapping(); |
| postInsertSelectorMapping.setAttributeName("postInsertSelector"); |
| postInsertSelectorMapping.setGetMethodName("getPostInsertSelector"); |
| postInsertSelectorMapping.setSetMethodName("setPostInsertSelector"); |
| postInsertSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-insert-method/text()"); |
| descriptor.addMapping(postInsertSelectorMapping); |
| |
| XMLDirectMapping preUpdateSelectorMapping = new XMLDirectMapping(); |
| preUpdateSelectorMapping.setAttributeName("preUpdateSelector"); |
| preUpdateSelectorMapping.setGetMethodName("getPreUpdateSelector"); |
| preUpdateSelectorMapping.setSetMethodName("setPreUpdateSelector"); |
| preUpdateSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "pre-update-method/text()"); |
| descriptor.addMapping(preUpdateSelectorMapping); |
| |
| XMLDirectMapping postUpdateSelectorMapping = new XMLDirectMapping(); |
| postUpdateSelectorMapping.setAttributeName("postUpdateSelector"); |
| postUpdateSelectorMapping.setGetMethodName("getPostUpdateSelector"); |
| postUpdateSelectorMapping.setSetMethodName("setPostUpdateSelector"); |
| postUpdateSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-update-method/text()"); |
| descriptor.addMapping(postUpdateSelectorMapping); |
| |
| XMLDirectMapping preDeleteSelectorMapping = new XMLDirectMapping(); |
| preDeleteSelectorMapping.setAttributeName("preDeleteSelector"); |
| preDeleteSelectorMapping.setGetMethodName("getPreDeleteSelector"); |
| preDeleteSelectorMapping.setSetMethodName("setPreDeleteSelector"); |
| preDeleteSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "pre-delete-method/text()"); |
| descriptor.addMapping(preDeleteSelectorMapping); |
| |
| XMLDirectMapping postDeleteSelectorMapping = new XMLDirectMapping(); |
| postDeleteSelectorMapping.setAttributeName("postDeleteSelector"); |
| postDeleteSelectorMapping.setGetMethodName("getPostDeleteSelector"); |
| postDeleteSelectorMapping.setSetMethodName("setPostDeleteSelector"); |
| postDeleteSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-delete-method/text()"); |
| descriptor.addMapping(postDeleteSelectorMapping); |
| |
| XMLDirectMapping aboutToInsertSelectorMapping = new XMLDirectMapping(); |
| aboutToInsertSelectorMapping.setAttributeName("aboutToInsertSelector"); |
| aboutToInsertSelectorMapping.setGetMethodName("getAboutToInsertSelector"); |
| aboutToInsertSelectorMapping.setSetMethodName("setAboutToInsertSelector"); |
| aboutToInsertSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "about-to-insert-method/text()"); |
| descriptor.addMapping(aboutToInsertSelectorMapping); |
| |
| XMLDirectMapping aboutToUpdateSelectorMapping = new XMLDirectMapping(); |
| aboutToUpdateSelectorMapping.setAttributeName("aboutToUpdateSelector"); |
| aboutToUpdateSelectorMapping.setGetMethodName("getAboutToUpdateSelector"); |
| aboutToUpdateSelectorMapping.setSetMethodName("setAboutToUpdateSelector"); |
| aboutToUpdateSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "about-to-update-method/text()"); |
| descriptor.addMapping(aboutToUpdateSelectorMapping); |
| |
| XMLDirectMapping postCloneSelectorMapping = new XMLDirectMapping(); |
| postCloneSelectorMapping.setAttributeName("postCloneSelector"); |
| postCloneSelectorMapping.setGetMethodName("getPostCloneSelector"); |
| postCloneSelectorMapping.setSetMethodName("setPostCloneSelector"); |
| postCloneSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-clone-method/text()"); |
| descriptor.addMapping(postCloneSelectorMapping); |
| |
| XMLDirectMapping postMergeSelectorMapping = new XMLDirectMapping(); |
| postMergeSelectorMapping.setAttributeName("postMergeSelector"); |
| postMergeSelectorMapping.setGetMethodName("getPostMergeSelector"); |
| postMergeSelectorMapping.setSetMethodName("setPostMergeSelector"); |
| postMergeSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-merge-method/text()"); |
| descriptor.addMapping(postMergeSelectorMapping); |
| |
| XMLDirectMapping postRefreshSelectorMapping = new XMLDirectMapping(); |
| postRefreshSelectorMapping.setAttributeName("getPostRefreshSelector"); |
| postRefreshSelectorMapping.setGetMethodName("getPostRefreshSelector"); |
| postRefreshSelectorMapping.setSetMethodName("setPostRefreshSelector"); |
| postRefreshSelectorMapping.setXPath(getPrimaryNamespaceXPath() + "post-refresh-method/text()"); |
| descriptor.addMapping(postRefreshSelectorMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildForeignReferenceMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ForeignReferenceMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLDirectMapping referenceClassMapping = new XMLDirectMapping(); |
| referenceClassMapping.setAttributeName("referenceClass"); |
| referenceClassMapping.setGetMethodName("getReferenceClass"); |
| referenceClassMapping.setSetMethodName("setReferenceClass"); |
| referenceClassMapping.setXPath(getSecondaryNamespaceXPath() + "reference-class/text()"); |
| descriptor.addMapping(referenceClassMapping); |
| |
| XMLDirectMapping isPrivateOwnedMapping = new XMLDirectMapping(); |
| isPrivateOwnedMapping.setAttributeName("isPrivateOwned"); |
| isPrivateOwnedMapping.setGetMethodName("isPrivateOwned"); |
| isPrivateOwnedMapping.setSetMethodName("setIsPrivateOwned"); |
| isPrivateOwnedMapping.setXPath(getSecondaryNamespaceXPath() + "private-owned/text()"); |
| isPrivateOwnedMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(isPrivateOwnedMapping); |
| |
| XMLDirectMapping cascadePersistMapping = new XMLDirectMapping(); |
| cascadePersistMapping.setAttributeName("cascadePersist"); |
| cascadePersistMapping.setGetMethodName("isCascadePersist"); |
| cascadePersistMapping.setSetMethodName("setCascadePersist"); |
| cascadePersistMapping.setXPath(getSecondaryNamespaceXPath() + "cascade-persist/text()"); |
| cascadePersistMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(cascadePersistMapping); |
| |
| XMLDirectMapping cascadeMergeMapping = new XMLDirectMapping(); |
| cascadeMergeMapping.setAttributeName("cascadeMerge"); |
| cascadeMergeMapping.setGetMethodName("isCascadeMerge"); |
| cascadeMergeMapping.setSetMethodName("setCascadeMerge"); |
| cascadeMergeMapping.setXPath(getSecondaryNamespaceXPath() + "cascade-merge/text()"); |
| cascadeMergeMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(cascadeMergeMapping); |
| |
| XMLDirectMapping cascadeRefreshMapping = new XMLDirectMapping(); |
| cascadeRefreshMapping.setAttributeName("cascadeRefresh"); |
| cascadeRefreshMapping.setGetMethodName("isCascadeRefresh"); |
| cascadeRefreshMapping.setSetMethodName("setCascadeRefresh"); |
| cascadeRefreshMapping.setXPath(getSecondaryNamespaceXPath() + "cascade-refresh/text()"); |
| cascadeRefreshMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(cascadeRefreshMapping); |
| |
| XMLDirectMapping cascadeRemoveMapping = new XMLDirectMapping(); |
| cascadeRemoveMapping.setAttributeName("cascadeRemove"); |
| cascadeRemoveMapping.setGetMethodName("isCascadeRemove"); |
| cascadeRemoveMapping.setSetMethodName("setCascadeRemove"); |
| cascadeRemoveMapping.setXPath(getSecondaryNamespaceXPath() + "cascade-remove/text()"); |
| cascadeRemoveMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(cascadeRemoveMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildHistoryPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(HistoryPolicy.class); |
| descriptor.setDefaultRootElement("history-policy"); |
| |
| XMLCompositeCollectionMapping historyTablesMapping = new XMLCompositeCollectionMapping(); |
| historyTablesMapping.useCollectionClass(NonSynchronizedVector.class); |
| historyTablesMapping.setAttributeName("historicalTables"); |
| historyTablesMapping.setReferenceClass(HistoricalDatabaseTable.class); |
| historyTablesMapping.setGetMethodName("getHistoricalTables"); |
| historyTablesMapping.setSetMethodName("setHistoricalTables"); |
| historyTablesMapping.setXPath(getPrimaryNamespaceXPath() + "history-tables/" + getPrimaryNamespaceXPath() + "history-table"); |
| descriptor.addMapping(historyTablesMapping); |
| |
| XMLCompositeCollectionMapping startFieldNamesMapping = new XMLCompositeCollectionMapping(); |
| startFieldNamesMapping.useCollectionClass(NonSynchronizedVector.class); |
| startFieldNamesMapping.setAttributeName("startFields"); |
| startFieldNamesMapping.setReferenceClass(DatabaseField.class); |
| startFieldNamesMapping.setGetMethodName("getStartFields"); |
| startFieldNamesMapping.setSetMethodName("setStartFields"); |
| startFieldNamesMapping.setXPath(getPrimaryNamespaceXPath() + "start-fields/" + getPrimaryNamespaceXPath() + "start-field"); |
| ((XMLField)startFieldNamesMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(startFieldNamesMapping); |
| |
| XMLCompositeCollectionMapping endFieldNamesMapping = new XMLCompositeCollectionMapping(); |
| endFieldNamesMapping.useCollectionClass(NonSynchronizedVector.class); |
| endFieldNamesMapping.setAttributeName("endFields"); |
| endFieldNamesMapping.setReferenceClass(DatabaseField.class); |
| endFieldNamesMapping.setGetMethodName("getEndFields"); |
| endFieldNamesMapping.setSetMethodName("setEndFields"); |
| endFieldNamesMapping.setXPath(getPrimaryNamespaceXPath() + "end-fields/" + getPrimaryNamespaceXPath() + "end-field"); |
| ((XMLField)endFieldNamesMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(endFieldNamesMapping); |
| |
| XMLDirectMapping shouldHandleWritesMapping = new XMLDirectMapping(); |
| shouldHandleWritesMapping.setAttributeName("shouldHandleWrites"); |
| shouldHandleWritesMapping.setGetMethodName("shouldHandleWrites"); |
| shouldHandleWritesMapping.setSetMethodName("setShouldHandleWrites"); |
| shouldHandleWritesMapping.setXPath(getPrimaryNamespaceXPath() + "handle-writes/text()"); |
| shouldHandleWritesMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldHandleWritesMapping); |
| |
| XMLDirectMapping useDatabaseTimeMapping = new XMLDirectMapping(); |
| useDatabaseTimeMapping.setAttributeName("shouldUseLocalTime"); |
| useDatabaseTimeMapping.setGetMethodName("shouldUseDatabaseTime"); |
| useDatabaseTimeMapping.setSetMethodName("setShouldUseDatabaseTime"); |
| useDatabaseTimeMapping.setXPath(getPrimaryNamespaceXPath() + "use-database-time/text()"); |
| useDatabaseTimeMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(useDatabaseTimeMapping); |
| |
| // No support has been added for defining the type of database field, |
| // as no support exists for defining the classification of DirectToFieldMappings. |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildHistoryTableDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(HistoricalDatabaseTable.class); |
| descriptor.setDefaultRootElement("history-table"); |
| |
| XMLDirectMapping sourceMapping = new XMLDirectMapping(); |
| sourceMapping.setAttributeName("name"); |
| sourceMapping.setGetMethodName("getName"); |
| sourceMapping.setSetMethodName("setName"); |
| sourceMapping.setXPath(getPrimaryNamespaceXPath() + "source/text()"); |
| descriptor.addMapping(sourceMapping); |
| |
| XMLDirectMapping historyMapping = new XMLDirectMapping(); |
| historyMapping.setAttributeName("historicalName"); |
| historyMapping.setGetMethodName("getQualifiedName"); |
| historyMapping.setSetMethodName("setHistoricalName"); |
| historyMapping.setXPath(getPrimaryNamespaceXPath() + "history/text()"); |
| descriptor.addMapping(historyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(IndirectionPolicy.class); |
| descriptor.setDefaultRootElement("indirection-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(BasicIndirectionPolicy.class, getPrimaryNamespaceXPath() + "value-holder-indirection-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(TransparentIndirectionPolicy.class, getPrimaryNamespaceXPath() + "transparent-collection-indirection-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(ProxyIndirectionPolicy.class, getPrimaryNamespaceXPath() + "proxy-indirection-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(ContainerIndirectionPolicy.class, getPrimaryNamespaceXPath() + "container-indirection-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInheritancePolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InheritancePolicy.class); |
| descriptor.setDefaultRootElement("inheritance-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(InheritancePolicy.class, getPrimaryNamespaceXPath() + "inheritance-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(QNameInheritancePolicy.class, getPrimaryNamespaceXPath() + "qname-inheritance-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(String.class, "string"); |
| |
| XMLDirectMapping parentClassMapping = new XMLDirectMapping(); |
| parentClassMapping.setAttributeName("parentClass"); |
| parentClassMapping.setGetMethodName("getParentClass"); |
| parentClassMapping.setSetMethodName("setParentClass"); |
| parentClassMapping.setXPath(getSecondaryNamespaceXPath() + "parent-class/text()"); |
| descriptor.addMapping(parentClassMapping); |
| |
| XMLDirectMapping shouldReadSubclassesMapping = new XMLDirectMapping(); |
| shouldReadSubclassesMapping.setAttributeName("shouldReadSubclasses"); |
| shouldReadSubclassesMapping.setGetMethodName("shouldReadSubclassesValue"); |
| shouldReadSubclassesMapping.setSetMethodName("setShouldReadSubclasses"); |
| shouldReadSubclassesMapping.setXPath(getPrimaryNamespaceXPath() + "read-subclasses-on-queries/text()"); |
| descriptor.addMapping(shouldReadSubclassesMapping); |
| |
| XMLDirectMapping readAllSubclassesViewMapping = new XMLDirectMapping(); |
| readAllSubclassesViewMapping.setAttributeName("readAllSubclassesView"); |
| readAllSubclassesViewMapping.setGetMethodName("getReadAllSubclassesViewName"); |
| readAllSubclassesViewMapping.setSetMethodName("setReadAllSubclassesViewName"); |
| readAllSubclassesViewMapping.setXPath(getPrimaryNamespaceXPath() + "all-subclasses-view/text()"); |
| descriptor.addMapping(readAllSubclassesViewMapping); |
| |
| XMLDirectMapping shouldUseClassNameAsIndicatorMapping = new XMLDirectMapping(); |
| shouldUseClassNameAsIndicatorMapping.setAttributeName("shouldUseClassNameAsIndicator"); |
| shouldUseClassNameAsIndicatorMapping.setGetMethodName("shouldUseClassNameAsIndicator"); |
| shouldUseClassNameAsIndicatorMapping.setSetMethodName("setShouldUseClassNameAsIndicator"); |
| shouldUseClassNameAsIndicatorMapping.setXPath(getPrimaryNamespaceXPath() + "use-class-name-as-indicator/text()"); |
| shouldUseClassNameAsIndicatorMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(shouldUseClassNameAsIndicatorMapping); |
| |
| XMLDirectMapping classExtractionMethodMapping = new XMLDirectMapping(); |
| classExtractionMethodMapping.setAttributeName("classExtractionMethod"); |
| classExtractionMethodMapping.setGetMethodName("getClassExtractionMethodName"); |
| classExtractionMethodMapping.setSetMethodName("setClassExtractionMethodName"); |
| classExtractionMethodMapping.setXPath(getPrimaryNamespaceXPath() + "class-extraction-method/text()"); |
| descriptor.addMapping(classExtractionMethodMapping); |
| |
| XMLCompositeObjectMapping classIndicatorFieldNameMapping = new XMLCompositeObjectMapping(); |
| classIndicatorFieldNameMapping.setAttributeName("classIndicatorField"); |
| classIndicatorFieldNameMapping.setReferenceClass(DatabaseField.class); |
| classIndicatorFieldNameMapping.setGetMethodName("getClassIndicatorField"); |
| classIndicatorFieldNameMapping.setSetMethodName("setClassIndicatorField"); |
| classIndicatorFieldNameMapping.setXPath(getPrimaryNamespaceXPath() + "class-indicator-field"); |
| ((XMLField)classIndicatorFieldNameMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(classIndicatorFieldNameMapping); |
| |
| XMLCompositeCollectionMapping classIndicatorsMapping = new XMLCompositeCollectionMapping(); |
| classIndicatorsMapping.setAttributeName("classIndicatorAssociations"); |
| classIndicatorsMapping.setGetMethodName("getClassIndicatorAssociations"); |
| classIndicatorsMapping.setSetMethodName("setClassIndicatorAssociations"); |
| classIndicatorsMapping.setXPath(getPrimaryNamespaceXPath() + "class-indicator-mappings/" + getPrimaryNamespaceXPath() + "class-indicator-mapping"); |
| classIndicatorsMapping.setReferenceClass(TypedAssociation.class); |
| descriptor.addMapping(classIndicatorsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQNameInheritancePolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QNameInheritancePolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(InheritancePolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildConverterDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Converter.class); |
| |
| descriptor.setDefaultRootElement("converter"); |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(ObjectTypeConverter.class, getPrimaryNamespaceXPath() + "object-type-converter"); |
| descriptor.getInheritancePolicy().addClassIndicator(TypeConversionConverter.class, getPrimaryNamespaceXPath() + "type-conversion-converter"); |
| descriptor.getInheritancePolicy().addClassIndicator(SerializedObjectConverter.class, getPrimaryNamespaceXPath() + "serialized-object-converter"); |
| try { |
| Class<Object> typesafeenumClass = new PrivilegedClassForName<>("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run(); |
| descriptor.getInheritancePolicy().addClassIndicator(typesafeenumClass, getPrimaryNamespaceXPath() + "typesafe-enumeration-converter"); |
| } |
| catch (ClassNotFoundException cnfe) { |
| // The JAXB component isn't available, so no need to do anything |
| } |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInstantiationPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InstantiationPolicy.class); |
| descriptor.setDefaultRootElement("instantiation-policy"); |
| |
| XMLDirectMapping methodNameMapping = new XMLDirectMapping(); |
| methodNameMapping.setAttributeName("methodName"); |
| methodNameMapping.setGetMethodName("getMethodName"); |
| methodNameMapping.setSetMethodName("setMethodName"); |
| methodNameMapping.setXPath(getPrimaryNamespaceXPath() + "method/text()"); |
| descriptor.addMapping(methodNameMapping); |
| |
| XMLDirectMapping factoryClassMapping = new XMLDirectMapping(); |
| factoryClassMapping.setAttributeName("factoryClass"); |
| factoryClassMapping.setGetMethodName("getFactoryClass"); |
| factoryClassMapping.setSetMethodName("setFactoryClass"); |
| factoryClassMapping.setXPath(getPrimaryNamespaceXPath() + "factory-class/text()"); |
| descriptor.addMapping(factoryClassMapping); |
| |
| XMLDirectMapping factoryMethodNameMapping = new XMLDirectMapping(); |
| factoryMethodNameMapping.setAttributeName("factoryMethod"); |
| factoryMethodNameMapping.setGetMethodName("getFactoryMethodName"); |
| factoryMethodNameMapping.setSetMethodName("setFactoryMethodName"); |
| factoryMethodNameMapping.setXPath(getPrimaryNamespaceXPath() + "factory-method/text()"); |
| descriptor.addMapping(factoryMethodNameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInterfaceContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InterfaceContainerPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ContainerPolicy.class); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeName("containerClass"); |
| keyMapping.setGetMethodName("getContainerClass"); |
| keyMapping.setSetMethodName("setContainerClass"); |
| keyMapping.setXPath(getPrimaryNamespaceXPath() + "collection-type/text()"); |
| descriptor.addMapping(keyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildInterfacePolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InterfacePolicy.class); |
| descriptor.setDefaultRootElement("interfaces"); |
| |
| XMLCompositeDirectCollectionMapping parentInterfacesMapping = new XMLCompositeDirectCollectionMapping(); |
| parentInterfacesMapping.setAttributeElementClass(Class.class); |
| parentInterfacesMapping.setAttributeName("parentInterfaces"); |
| parentInterfacesMapping.setGetMethodName("getParentInterfaces"); |
| parentInterfacesMapping.setSetMethodName("setParentInterfaces"); |
| parentInterfacesMapping.setXPath(getPrimaryNamespaceXPath() + "interface/text()"); |
| descriptor.addMapping(parentInterfacesMapping); |
| |
| XMLDirectMapping implementorDescriptorMapping = new XMLDirectMapping(); |
| implementorDescriptorMapping.setAttributeName("implementorDescriptor"); |
| implementorDescriptorMapping.setGetMethodName("getImplementorDescriptor"); |
| implementorDescriptorMapping.setSetMethodName("setImplementorDescriptor"); |
| implementorDescriptorMapping.setXPath(getPrimaryNamespaceXPath() + "implementor-descriptor/text()"); |
| descriptor.addMapping(implementorDescriptorMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildListContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(ListContainerPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(CollectionContainerPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildManyToManyMappingMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ManyToManyMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(CollectionMapping.class); |
| |
| XMLDirectMapping relationTableMapping = new XMLDirectMapping(); |
| relationTableMapping.setAttributeName("relationTableName"); |
| // CR#2407 Call getRelationTableQualifiedName that includes table qualifier. |
| relationTableMapping.setGetMethodName("getRelationTableQualifiedName"); |
| relationTableMapping.setSetMethodName("setRelationTableName"); |
| relationTableMapping.setXPath(getSecondaryNamespaceXPath() + "relation-table/text()"); |
| descriptor.addMapping(relationTableMapping); |
| |
| XMLCompositeCollectionMapping sourceToRelationKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| sourceToRelationKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| sourceToRelationKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| List<DatabaseField> sourceFields = ((ManyToManyMapping)object).getSourceKeyFields(); |
| List<DatabaseField> relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields(); |
| List associations = new ArrayList(sourceFields.size()); |
| for (int index = 0; index < sourceFields.size(); index++) { |
| associations.add(new Association(relationFields.get(index), sourceFields.get(index))); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| ManyToManyMapping mapping = (ManyToManyMapping)object; |
| List associations = (List)value; |
| mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| mapping.setSourceRelationKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); |
| mapping.getSourceRelationKeyFields().add((DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| sourceToRelationKeyFieldAssociationsMapping.setAttributeName("sourceToRelationKeyFieldAssociationsMapping"); |
| sourceToRelationKeyFieldAssociationsMapping.setXPath(getSecondaryNamespaceXPath() + "source-relation-foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(sourceToRelationKeyFieldAssociationsMapping); |
| |
| XMLCompositeCollectionMapping targetToRelationKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| targetToRelationKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| targetToRelationKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| List<DatabaseField> targetFields = ((ManyToManyMapping)object).getTargetKeyFields(); |
| List<DatabaseField> relationFields = ((ManyToManyMapping)object).getTargetRelationKeyFields(); |
| List associations = new ArrayList(targetFields.size()); |
| for (int index = 0; index < targetFields.size(); index++) { |
| associations.add(new Association(relationFields.get(index), targetFields.get(index))); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| ManyToManyMapping mapping = (ManyToManyMapping)object; |
| List associations = (List)value; |
| mapping.setTargetKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| mapping.setTargetRelationKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getTargetKeyFields().add((DatabaseField)association.getValue()); |
| mapping.getTargetRelationKeyFields().add((DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| targetToRelationKeyFieldAssociationsMapping.setAttributeName("targetToRelationKeyFieldAssociations"); |
| targetToRelationKeyFieldAssociationsMapping.setXPath(getSecondaryNamespaceXPath() + "target-relation-foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(targetToRelationKeyFieldAssociationsMapping); |
| |
| XMLDirectMapping relationshipPartnerAttributeNameMapping = new XMLDirectMapping(); |
| relationshipPartnerAttributeNameMapping.setAttributeName("relationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setGetMethodName("getRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setSetMethodName("setRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setXPath(getPrimaryNamespaceXPath() + "bidirectional-target-attribute/text()"); |
| descriptor.addMapping(relationshipPartnerAttributeNameMapping); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| XMLCompositeObjectMapping insertQueryMapping = new XMLCompositeObjectMapping(); |
| insertQueryMapping.setAttributeName("insertQuery"); |
| insertQueryMapping.setGetMethodName("getInsertQuery"); |
| insertQueryMapping.setSetMethodName("setInsertQuery"); |
| insertQueryMapping.setReferenceClass(DataModifyQuery.class); |
| insertQueryMapping.setXPath(getPrimaryNamespaceXPath() + "insert-query"); |
| descriptor.addMapping(insertQueryMapping); |
| |
| XMLCompositeObjectMapping deleteQueryMapping = new XMLCompositeObjectMapping(); |
| deleteQueryMapping.setAttributeName("deleteQuery"); |
| deleteQueryMapping.setGetMethodName("getDeleteQuery"); |
| deleteQueryMapping.setSetMethodName("setDeleteQuery"); |
| deleteQueryMapping.setReferenceClass(DataModifyQuery.class); |
| deleteQueryMapping.setXPath(getPrimaryNamespaceXPath() + "delete-query"); |
| descriptor.addMapping(deleteQueryMapping); |
| |
| XMLCompositeObjectMapping deleteAllQueryMapping = new XMLCompositeObjectMapping(); |
| deleteAllQueryMapping.setAttributeName("deleteAllQuery"); |
| deleteAllQueryMapping.setGetMethodName("getDeleteAllQuery"); |
| deleteAllQueryMapping.setSetMethodName("setDeleteAllQuery"); |
| deleteAllQueryMapping.setReferenceClass(DataModifyQuery.class); |
| deleteAllQueryMapping.setXPath(getPrimaryNamespaceXPath() + "delete-all-query"); |
| descriptor.addMapping(deleteAllQueryMapping); |
| |
| XMLCompositeObjectMapping historyPolicyMapping = new XMLCompositeObjectMapping(); |
| historyPolicyMapping.setAttributeName("historyPolicy"); |
| historyPolicyMapping.setGetMethodName("getHistoryPolicy"); |
| historyPolicyMapping.setSetMethodName("setHistoryPolicy"); |
| historyPolicyMapping.setReferenceClass(HistoryPolicy.class); |
| historyPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "history-policy"); |
| descriptor.addMapping(historyPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildMapContainerPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(MapContainerPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(InterfaceContainerPolicy.class); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeName("keyName"); |
| keyMapping.setGetMethodName("getKeyName"); |
| keyMapping.setSetMethodName("setKeyName"); |
| keyMapping.setXPath(getPrimaryNamespaceXPath() + "map-key-method/text()"); |
| descriptor.addMapping(keyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNestedTableMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NestedTableMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(CollectionMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLDirectMapping structureMapping = new XMLDirectMapping(); |
| structureMapping.setAttributeName("structureName"); |
| structureMapping.setGetMethodName("getStructureName"); |
| structureMapping.setSetMethodName("setStructureName"); |
| structureMapping.setXPath(getPrimaryNamespaceXPath() + "structure/text()"); |
| descriptor.addMapping(structureMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNoExpiryCacheInvalidationPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NoExpiryCacheInvalidationPolicy.class); |
| descriptor.getInheritancePolicy().setParentClass(CacheInvalidationPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectArrayMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectArrayMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeCollectionMapping.class); |
| |
| XMLDirectMapping structureMapping = new XMLDirectMapping(); |
| structureMapping.setAttributeName("structureName"); |
| structureMapping.setGetMethodName("getStructureName"); |
| structureMapping.setSetMethodName("setStructureName"); |
| structureMapping.setXPath(getPrimaryNamespaceXPath() + "structure/text()"); |
| descriptor.addMapping(structureMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectReferenceMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectReferenceMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ForeignReferenceMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectRelationalDataTypeDescriptorDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectRelationalDataTypeDescriptor.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(RelationalDescriptor.class); |
| |
| XMLDirectMapping structureMapping = new XMLDirectMapping(); |
| structureMapping.setAttributeName("structureName"); |
| structureMapping.setGetMethodName("getStructureName"); |
| structureMapping.setSetMethodName("setStructureName"); |
| structureMapping.setXPath(getPrimaryNamespaceXPath() + "structure/text()"); |
| descriptor.addMapping(structureMapping); |
| |
| XMLCompositeCollectionMapping orderedFieldsMapping = new XMLCompositeCollectionMapping(); |
| orderedFieldsMapping.useCollectionClass(NonSynchronizedVector.class); |
| orderedFieldsMapping.setAttributeName("orderedFields"); |
| orderedFieldsMapping.setXPath(getPrimaryNamespaceXPath() + "field-order/" + getPrimaryNamespaceXPath() + "field"); |
| orderedFieldsMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)orderedFieldsMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(orderedFieldsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectTypeConverterDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectTypeConverter.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Converter.class); |
| |
| XMLDirectMapping XMLDirectMapping4 = new XMLDirectMapping(); |
| XMLDirectMapping4.setAttributeName("defaultAttributeValue"); |
| XMLDirectMapping4.setGetMethodName("getDefaultAttributeValue"); |
| XMLDirectMapping4.setSetMethodName("setDefaultAttributeValue"); |
| XMLDirectMapping4.setXPath(getPrimaryNamespaceXPath() + "default-value/text()"); |
| descriptor.addMapping(XMLDirectMapping4); |
| |
| XMLCompositeCollectionMapping fieldToAttributeValueAssociationsMapping = new XMLCompositeCollectionMapping(); |
| fieldToAttributeValueAssociationsMapping.setAttributeName("fieldToAttributeValueAssociations"); |
| fieldToAttributeValueAssociationsMapping.setGetMethodName("getFieldToAttributeValueAssociations"); |
| fieldToAttributeValueAssociationsMapping.setSetMethodName("setFieldToAttributeValueAssociations"); |
| fieldToAttributeValueAssociationsMapping.setXPath(getPrimaryNamespaceXPath() + "type-mappings/" + getPrimaryNamespaceXPath() + "type-mapping"); |
| fieldToAttributeValueAssociationsMapping.setReferenceClass(TypeMapping.class); |
| descriptor.addMapping(fieldToAttributeValueAssociationsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOneToManyMappingMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(OneToManyMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(CollectionMapping.class); |
| |
| XMLCompositeCollectionMapping sourceToTargetKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| sourceToTargetKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| List<DatabaseField> sourceFields = ((OneToManyMapping)object).getSourceKeyFields(); |
| List<DatabaseField> targetFields = ((OneToManyMapping)object).getTargetForeignKeyFields(); |
| List associations = new ArrayList(sourceFields.size()); |
| for (int index = 0; index < sourceFields.size(); index++) { |
| associations.add(new Association(targetFields.get(index), sourceFields.get(index))); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| OneToManyMapping mapping = (OneToManyMapping)object; |
| List associations = (List)value; |
| mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| mapping.setTargetForeignKeyFields(NonSynchronizedVector.newInstance(associations.size())); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); |
| mapping.getTargetForeignKeyFields().add((DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeName("sourceToTargetKeyFieldAssociations"); |
| sourceToTargetKeyFieldAssociationsMapping.setXPath(getSecondaryNamespaceXPath() + "target-foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(sourceToTargetKeyFieldAssociationsMapping); |
| |
| XMLDirectMapping relationshipPartnerAttributeNameMapping = new XMLDirectMapping(); |
| relationshipPartnerAttributeNameMapping.setAttributeName("relationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setGetMethodName("getRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setSetMethodName("setRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setXPath(getPrimaryNamespaceXPath() + "bidirectional-target-attribute/text()"); |
| descriptor.addMapping(relationshipPartnerAttributeNameMapping); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| // delete-all query |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOneToOneMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(OneToOneMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ObjectReferenceMapping.class); |
| |
| XMLCompositeCollectionMapping sourceToTargetKeyFieldAssociationsMapping = new XMLCompositeCollectionMapping(); |
| sourceToTargetKeyFieldAssociationsMapping.setReferenceClass(Association.class); |
| // Handle translation of foreign key associations to hashtables. |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| Map<DatabaseField, DatabaseField> sourceToTargetKeyFields = ((OneToOneMapping)object).getSourceToTargetKeyFields(); |
| List associations = new ArrayList(sourceToTargetKeyFields.size()); |
| Iterator<Map.Entry<DatabaseField, DatabaseField>> iterator = sourceToTargetKeyFields.entrySet().iterator(); |
| while (iterator.hasNext()) { |
| Map.Entry<DatabaseField, DatabaseField> entry = iterator.next(); |
| associations.add(new Association(entry.getKey(), entry.getValue())); |
| } |
| return associations; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| OneToOneMapping mapping = (OneToOneMapping)object; |
| List associations = (List)value; |
| mapping.setSourceToTargetKeyFields(new HashMap(associations.size() + 1)); |
| mapping.setTargetToSourceKeyFields(new HashMap(associations.size() + 1)); |
| Iterator iterator = associations.iterator(); |
| while (iterator.hasNext()) { |
| Association association = (Association)iterator.next(); |
| mapping.getSourceToTargetKeyFields().put((DatabaseField)association.getKey(), (DatabaseField)association.getValue()); |
| mapping.getTargetToSourceKeyFields().put((DatabaseField)association.getValue(), (DatabaseField)association.getKey()); |
| } |
| } |
| }); |
| sourceToTargetKeyFieldAssociationsMapping.setAttributeName("sourceToTargetKeyFieldAssociations"); |
| sourceToTargetKeyFieldAssociationsMapping.setXPath(getSecondaryNamespaceXPath() + "foreign-key/" + getSecondaryNamespaceXPath() + "field-reference"); |
| descriptor.addMapping(sourceToTargetKeyFieldAssociationsMapping); |
| |
| XMLCompositeCollectionMapping foreignKeyFieldNamesMapping = new XMLCompositeCollectionMapping(); |
| foreignKeyFieldNamesMapping.useCollectionClass(NonSynchronizedVector.class); |
| foreignKeyFieldNamesMapping.setAttributeName("foreignKeyFields"); |
| foreignKeyFieldNamesMapping.setGetMethodName("getForeignKeyFields"); |
| foreignKeyFieldNamesMapping.setSetMethodName("setForeignKeyFields"); |
| foreignKeyFieldNamesMapping.setXPath(getSecondaryNamespaceXPath() + "foreign-key-fields/" + getSecondaryNamespaceXPath() + "field"); |
| foreignKeyFieldNamesMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)foreignKeyFieldNamesMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(foreignKeyFieldNamesMapping); |
| |
| XMLDirectMapping relationshipPartnerAttributeNameMapping = new XMLDirectMapping(); |
| relationshipPartnerAttributeNameMapping.setAttributeName("relationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setGetMethodName("getRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setSetMethodName("setRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setXPath(getPrimaryNamespaceXPath() + "bidirectional-target-attribute/text()"); |
| descriptor.addMapping(relationshipPartnerAttributeNameMapping); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLDirectMapping joinFetchMapping = new XMLDirectMapping(); |
| joinFetchMapping.setAttributeName("joinFetch"); |
| joinFetchMapping.setXPath(getPrimaryNamespaceXPath() + "join-fetch/text()"); |
| ObjectTypeConverter joinFetchConverter = new ObjectTypeConverter(); |
| joinFetchConverter.addConversionValue("true", ForeignReferenceMapping.INNER_JOIN); |
| joinFetchConverter.addConversionValue("false", ForeignReferenceMapping.NONE); |
| joinFetchMapping.setConverter(joinFetchConverter); |
| joinFetchMapping.setNullValue(ForeignReferenceMapping.NONE); |
| descriptor.addMapping(joinFetchMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAssociationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Association.class); |
| descriptor.setDefaultRootElement("field-reference"); |
| |
| XMLCompositeObjectMapping keyMapping = new XMLCompositeObjectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setXPath(getSecondaryNamespaceXPath() + "source-field"); |
| keyMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)keyMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(keyMapping); |
| |
| XMLCompositeObjectMapping valueMapping = new XMLCompositeObjectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setXPath(getSecondaryNamespaceXPath() + "target-field"); |
| valueMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)valueMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildPropertyAssociationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(PropertyAssociation.class); |
| descriptor.setDefaultRootElement("properties"); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setXPath("@name"); |
| descriptor.addMapping(keyMapping); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setXPath(getSecondaryNamespaceXPath() + "value/text()"); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildFieldTranslationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FieldTranslation.class); |
| descriptor.setDefaultRootElement("field-translation"); |
| |
| XMLCompositeObjectMapping keyMapping = new XMLCompositeObjectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setXPath(getPrimaryNamespaceXPath() + "source-field"); |
| keyMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)keyMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(keyMapping); |
| |
| XMLCompositeObjectMapping valueMapping = new XMLCompositeObjectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setXPath(getPrimaryNamespaceXPath() + "target-field"); |
| valueMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)valueMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTypedAssociationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TypedAssociation.class); |
| descriptor.setDefaultRootElement("class-indicator-mapping"); |
| |
| descriptor.getEventManager().setPostBuildSelector("postBuild"); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeClassification(Class.class); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setXPath(getPrimaryNamespaceXPath() + "class/text()"); |
| descriptor.addMapping(keyMapping); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setField(buildTypedField(getPrimaryNamespaceXPath() + "class-indicator/text()")); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected XMLField buildTypedField(String fieldName) { |
| XMLField field = new XMLField(fieldName); |
| field.setIsTypedTextField(true); |
| field.addConversion(new QName(XMLConstants.SCHEMA_URL, XMLConstants.TIME), java.sql.Time.class); |
| field.addConversion(new QName(XMLConstants.SCHEMA_URL, XMLConstants.DATE), java.sql.Date.class); |
| field.addConversion(new QName(getPrimaryNamespace(), "java-character"), Character.class); |
| field.addConversion(new QName(getPrimaryNamespace(), "java-util-date"), java.util.Date.class); |
| field.addConversion(new QName(getPrimaryNamespace(), "java-timestamp"), java.sql.Timestamp.class); |
| return field; |
| } |
| |
| protected ClassDescriptor buildFieldTransformationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FieldTransformation.class); |
| descriptor.setDefaultRootElement("field-transformation"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().setShouldReadSubclasses(true); |
| descriptor.getInheritancePolicy().addClassIndicator(FieldTransformation.class, getPrimaryNamespaceXPath() + "field-transformation"); |
| descriptor.getInheritancePolicy().addClassIndicator(MethodBasedFieldTransformation.class, getPrimaryNamespaceXPath() + "method-based-field-transformation"); |
| descriptor.getInheritancePolicy().addClassIndicator(TransformerBasedFieldTransformation.class, getPrimaryNamespaceXPath() + "transformer-based-field-transformation"); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| |
| descriptor.addMapping(fieldMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildMethodBasedFieldTransformationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(MethodBasedFieldTransformation.class); |
| descriptor.getInheritancePolicy().setParentClass(FieldTransformation.class); |
| |
| XMLDirectMapping methodNameMapping = new XMLDirectMapping(); |
| methodNameMapping.setAttributeName("methodName"); |
| methodNameMapping.setXPath(getPrimaryNamespaceXPath() + "method/text()"); |
| methodNameMapping.setGetMethodName("getMethodName"); |
| methodNameMapping.setSetMethodName("setMethodName"); |
| |
| descriptor.addMapping(methodNameMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTransformerBasedFieldTransformationDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TransformerBasedFieldTransformation.class); |
| descriptor.getInheritancePolicy().setParentClass(FieldTransformation.class); |
| |
| XMLDirectMapping methodNameMapping = new XMLDirectMapping(); |
| methodNameMapping.setAttributeName("transformerClass"); |
| methodNameMapping.setXPath(getPrimaryNamespaceXPath() + "transformer-class/text()"); |
| methodNameMapping.setGetMethodName("getTransformerClass"); |
| methodNameMapping.setSetMethodName("setTransformerClass"); |
| |
| descriptor.addMapping(methodNameMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryArgumentDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryArgument.class); |
| descriptor.setDefaultRootElement("query-argument"); |
| |
| descriptor.getEventManager().setPostBuildSelector("postBuild"); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setXPath("@name"); |
| descriptor.addMapping(keyMapping); |
| |
| XMLDirectMapping typeMapping = new XMLDirectMapping(); |
| typeMapping.setAttributeName("type"); |
| typeMapping.setGetMethodName("getType"); |
| typeMapping.setSetMethodName("setType"); |
| typeMapping.setXPath(getSecondaryNamespaceXPath() + "type/text()"); |
| descriptor.addMapping(typeMapping); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setField(buildTypedField(getSecondaryNamespaceXPath() + "value/text()")); |
| descriptor.addMapping(valueMapping); |
| |
| XMLDirectMapping nullableMapping = new XMLDirectMapping(); |
| nullableMapping.setAttributeName("nullable"); |
| nullableMapping.setGetMethodName("isNullable"); |
| nullableMapping.setSetMethodName("setNullable"); |
| nullableMapping.setNullValue(Boolean.FALSE); |
| nullableMapping.setField(buildTypedField(getSecondaryNamespaceXPath() + "nullable/text()")); |
| descriptor.addMapping(nullableMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTypeMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TypeMapping.class); |
| descriptor.setDefaultRootElement("type-mapping"); |
| |
| descriptor.getEventManager().setPostBuildSelector("postBuild"); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setField(buildTypedField(getPrimaryNamespaceXPath() + "object-value/text()")); |
| descriptor.addMapping(valueMapping); |
| |
| XMLDirectMapping keyMapping = new XMLDirectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setField(buildTypedField(getPrimaryNamespaceXPath() + "data-value/text()")); |
| descriptor.addMapping(keyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildProjectDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Project.class); |
| descriptor.setDefaultRootElement(getPrimaryNamespaceXPath() + "object-persistence"); |
| |
| descriptor.setSchemaReference(new XMLSchemaClassPathReference(SCHEMA_DIR + TOPLINK_10_SCHEMA)); |
| |
| XMLTransformationMapping versionMapping = new XMLTransformationMapping(); |
| versionMapping.addFieldTransformer("@version", getConstantTransformerForProjectVersionMapping()); |
| descriptor.addMapping(versionMapping); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setSetMethodName("setName"); |
| nameMapping.setGetMethodName("getName"); |
| nameMapping.setXPath(getSecondaryNamespaceXPath() + "name/text()"); |
| descriptor.addMapping(nameMapping); |
| |
| XMLCompositeCollectionMapping descriptorsMapping = new XMLCompositeCollectionMapping(); |
| descriptorsMapping.useCollectionClass(NonSynchronizedVector.class); |
| descriptorsMapping.setAttributeName("descriptors"); |
| descriptorsMapping.setSetMethodName("setOrderedDescriptors"); |
| descriptorsMapping.setGetMethodName("getOrderedDescriptors"); |
| descriptorsMapping.setReferenceClass(ClassDescriptor.class); |
| descriptorsMapping.setXPath(getSecondaryNamespaceXPath() + "class-mapping-descriptors/" + getSecondaryNamespaceXPath() + "class-mapping-descriptor"); |
| descriptor.addMapping(descriptorsMapping); |
| |
| XMLCompositeObjectMapping loginMapping = new XMLCompositeObjectMapping(); |
| loginMapping.setSetMethodName("setDatasourceLogin"); |
| loginMapping.setGetMethodName("getDatasourceLogin"); |
| loginMapping.setAttributeName("login"); |
| loginMapping.setReferenceClass(DatasourceLogin.class); |
| loginMapping.setXPath(getPrimaryNamespaceXPath() + "login"); |
| descriptor.addMapping(loginMapping); |
| |
| return descriptor; |
| } |
| |
| /** |
| * INTERNAL: |
| */ |
| protected ConstantTransformer getConstantTransformerForProjectVersionMapping() { |
| return new ConstantTransformer("Oracle TopLink - 10g Release 1 (10.1.3)"); |
| } |
| |
| protected ClassDescriptor buildProxyIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(ProxyIndirectionPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(IndirectionPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryKeyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryKey.class); |
| descriptor.setDefaultRootElement("query-key"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(QueryKey.class, getPrimaryNamespaceXPath() + "query-key"); |
| descriptor.getInheritancePolicy().addClassIndicator(OneToOneQueryKey.class, getPrimaryNamespaceXPath() + "one-to-one-query-key"); |
| descriptor.getInheritancePolicy().addClassIndicator(OneToManyQueryKey.class, getPrimaryNamespaceXPath() + "one-to-many-query-key"); |
| descriptor.getInheritancePolicy().addClassIndicator(DirectQueryKey.class, getPrimaryNamespaceXPath() + "direct-query-key"); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setGetMethodName("getName"); |
| nameMapping.setSetMethodName("setName"); |
| nameMapping.setXPath("@name"); |
| descriptor.addMapping(nameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildRelationshipQueryKeyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ForeignReferenceQueryKey.class); |
| descriptor.setDefaultRootElement("relationship-query-key"); |
| |
| descriptor.getInheritancePolicy().setParentClass(QueryKey.class); |
| |
| XMLDirectMapping referenceClassMapping = new XMLDirectMapping(); |
| referenceClassMapping.setAttributeName("referenceClass"); |
| referenceClassMapping.setGetMethodName("getReferenceClass"); |
| referenceClassMapping.setSetMethodName("setReferenceClass"); |
| referenceClassMapping.setXPath(getPrimaryNamespaceXPath() + "reference-class/text()"); |
| descriptor.addMapping(referenceClassMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOneToOneQueryKeyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(OneToOneQueryKey.class); |
| descriptor.setDefaultRootElement("one-to-one-query-key"); |
| |
| descriptor.getInheritancePolicy().setParentClass(ForeignReferenceQueryKey.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOneToManyQueryKeyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(OneToManyQueryKey.class); |
| descriptor.setDefaultRootElement("one-to-many-query-key"); |
| |
| descriptor.getInheritancePolicy().setParentClass(ForeignReferenceQueryKey.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryManagerDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DescriptorQueryManager.class); |
| descriptor.setDefaultRootElement("query-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DescriptorQueryManager.class, getPrimaryNamespaceXPath() + "query-policy"); |
| |
| XMLCompositeCollectionMapping namedQueriesMapping = new XMLCompositeCollectionMapping(); |
| namedQueriesMapping.setReferenceClass(DatabaseQuery.class); |
| namedQueriesMapping.useCollectionClass(Vector.class); |
| namedQueriesMapping.setAttributeName("queries"); |
| namedQueriesMapping.setGetMethodName("getAllQueries"); |
| namedQueriesMapping.setSetMethodName("setAllQueries"); |
| namedQueriesMapping.setXPath(getSecondaryNamespaceXPath() + "queries/" + getSecondaryNamespaceXPath() + "query"); |
| descriptor.addMapping(namedQueriesMapping); |
| |
| XMLDirectMapping queryTimeoutMapping = new XMLDirectMapping(); |
| queryTimeoutMapping.setAttributeName("queryTimeout"); |
| queryTimeoutMapping.setGetMethodName("getQueryTimeout"); |
| queryTimeoutMapping.setSetMethodName("setQueryTimeout"); |
| queryTimeoutMapping.setXPath(getPrimaryNamespaceXPath() + "timeout/text()"); |
| queryTimeoutMapping.setNullValue(DescriptorQueryManager.DefaultTimeout); |
| descriptor.addMapping(queryTimeoutMapping); |
| |
| XMLCompositeObjectMapping insertQueryMapping = new XMLCompositeObjectMapping(); |
| insertQueryMapping.setAttributeName("insertQuery"); |
| insertQueryMapping.setGetMethodName("getInsertQuery"); |
| insertQueryMapping.setSetMethodName("setInsertQuery"); |
| insertQueryMapping.setXPath(getPrimaryNamespaceXPath() + "insert-query"); |
| insertQueryMapping.setReferenceClass(InsertObjectQuery.class); |
| descriptor.addMapping(insertQueryMapping); |
| |
| XMLCompositeObjectMapping updateQueryMapping = new XMLCompositeObjectMapping(); |
| updateQueryMapping.setAttributeName("updateQuery"); |
| updateQueryMapping.setGetMethodName("getUpdateQuery"); |
| updateQueryMapping.setSetMethodName("setUpdateQuery"); |
| updateQueryMapping.setXPath(getPrimaryNamespaceXPath() + "update-query"); |
| updateQueryMapping.setReferenceClass(UpdateObjectQuery.class); |
| descriptor.addMapping(updateQueryMapping); |
| |
| XMLCompositeObjectMapping deleteQueryMapping = new XMLCompositeObjectMapping(); |
| deleteQueryMapping.setAttributeName("deleteQuery"); |
| deleteQueryMapping.setGetMethodName("getDeleteQuery"); |
| deleteQueryMapping.setSetMethodName("setDeleteQuery"); |
| deleteQueryMapping.setXPath(getPrimaryNamespaceXPath() + "delete-query"); |
| deleteQueryMapping.setReferenceClass(DeleteObjectQuery.class); |
| descriptor.addMapping(deleteQueryMapping); |
| |
| XMLCompositeObjectMapping doesExistQueryMapping = new XMLCompositeObjectMapping(); |
| doesExistQueryMapping.setAttributeName("doesExistQuery"); |
| // Handle translation of default does-exist to null. |
| doesExistQueryMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| DoesExistQuery query = ((DescriptorQueryManager)object).getDoesExistQuery(); |
| if ((!query.isCallQuery()) && query.shouldCheckCacheForDoesExist()) { |
| return null; |
| } |
| return query; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| DoesExistQuery query = (DoesExistQuery)value; |
| if (value == null) { |
| return; |
| } |
| ((DescriptorQueryManager)object).setDoesExistQuery(query); |
| } |
| }); |
| doesExistQueryMapping.setXPath(getPrimaryNamespaceXPath() + "does-exist-query"); |
| doesExistQueryMapping.setReferenceClass(DoesExistQuery.class); |
| descriptor.addMapping(doesExistQueryMapping); |
| |
| XMLCompositeObjectMapping readObjectQueryMapping = new XMLCompositeObjectMapping(); |
| readObjectQueryMapping.setAttributeName("readObjectQuery"); |
| readObjectQueryMapping.setGetMethodName("getReadObjectQuery"); |
| readObjectQueryMapping.setSetMethodName("setReadObjectQuery"); |
| readObjectQueryMapping.setXPath(getPrimaryNamespaceXPath() + "read-object-query"); |
| readObjectQueryMapping.setReferenceClass(ReadObjectQuery.class); |
| descriptor.addMapping(readObjectQueryMapping); |
| |
| XMLCompositeObjectMapping readAllQueryMapping = new XMLCompositeObjectMapping(); |
| readAllQueryMapping.setAttributeName("readAllQuery"); |
| readAllQueryMapping.setGetMethodName("getReadAllQuery"); |
| readAllQueryMapping.setSetMethodName("setReadAllQuery"); |
| readAllQueryMapping.setXPath(getPrimaryNamespaceXPath() + "read-all-query"); |
| readAllQueryMapping.setReferenceClass(ReadAllQuery.class); |
| descriptor.addMapping(readAllQueryMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReferenceMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReferenceMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ObjectReferenceMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReturningPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReturningPolicy.class); |
| descriptor.setDefaultRootElement("returning-policy"); |
| |
| XMLCompositeCollectionMapping returningFieldInfoMapping = new XMLCompositeCollectionMapping(); |
| returningFieldInfoMapping.useCollectionClass(NonSynchronizedVector.class); |
| returningFieldInfoMapping.setAttributeName("infos"); |
| returningFieldInfoMapping.setReferenceClass(ReturningPolicy.Info.class); |
| returningFieldInfoMapping.setGetMethodName("getFieldInfos"); |
| returningFieldInfoMapping.setSetMethodName("setFieldInfos"); |
| returningFieldInfoMapping.setXPath(getPrimaryNamespaceXPath() + "returning-field-infos/" + getPrimaryNamespaceXPath() + "returning-field-info"); |
| descriptor.addMapping(returningFieldInfoMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildReturningFieldInfoDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ReturningPolicy.Info.class); |
| descriptor.setDefaultRootElement("returning-policy-infos"); |
| |
| XMLDirectMapping referenceClassMapping = new XMLDirectMapping(); |
| referenceClassMapping.setAttributeName("referenceClass"); |
| referenceClassMapping.setGetMethodName("getReferenceClass"); |
| referenceClassMapping.setSetMethodName("setReferenceClass"); |
| referenceClassMapping.setXPath(getPrimaryNamespaceXPath() + "reference-class/text()"); |
| descriptor.addMapping(referenceClassMapping); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLDirectMapping sourceMapping1 = new XMLDirectMapping(); |
| sourceMapping1.setAttributeName("isInsert"); |
| sourceMapping1.setGetMethodName("isInsert"); |
| sourceMapping1.setSetMethodName("setIsInsert"); |
| sourceMapping1.setXPath(getPrimaryNamespaceXPath() + "insert/text()"); |
| descriptor.addMapping(sourceMapping1); |
| |
| XMLDirectMapping sourceMapping2 = new XMLDirectMapping(); |
| sourceMapping2.setAttributeName("isInsertModeReturnOnly"); |
| sourceMapping2.setGetMethodName("isInsertModeReturnOnly"); |
| sourceMapping2.setSetMethodName("setIsInsertModeReturnOnly"); |
| sourceMapping2.setXPath(getPrimaryNamespaceXPath() + "insert-mode-return-only/text()"); |
| descriptor.addMapping(sourceMapping2); |
| |
| XMLDirectMapping sourceMapping3 = new XMLDirectMapping(); |
| sourceMapping3.setAttributeName("isUpdate"); |
| sourceMapping3.setGetMethodName("isUpdate"); |
| sourceMapping3.setSetMethodName("setIsUpdate"); |
| sourceMapping3.setXPath(getPrimaryNamespaceXPath() + "update/text()"); |
| descriptor.addMapping(sourceMapping3); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAbstractCompositeCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AbstractCompositeCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AggregateMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLCompositeCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLCompositeCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeCollectionMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLAnyCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLAnyCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAbstractCompositeObjectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AbstractCompositeObjectMapping.class); |
| descriptor.getInheritancePolicy().setParentClass(AggregateMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLAnyObjectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLAnyObjectMapping.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLCompositeObjectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLCompositeObjectMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeObjectMapping.class); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDatabaseTableDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatabaseTable.class); |
| |
| descriptor.setDefaultRootElement("table"); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setGetMethodName("getQualifiedName"); |
| nameMapping.setSetMethodName("setPossiblyQualifiedName"); |
| nameMapping.setXPath("@name"); |
| descriptor.addMapping(nameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDatabaseFieldDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DatabaseField.class); |
| descriptor.setDefaultRootElement("field"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DatabaseField.class, getSecondaryNamespaceXPath() + "column"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLField.class, getPrimaryNamespaceXPath() + "node"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLUnionField.class, getPrimaryNamespaceXPath() + "union-node"); |
| |
| XMLSchemaReference reference = new XMLSchemaClassPathReference(); |
| reference.setSchemaContext("/"+ getSecondaryNamespaceXPath() + "column"); |
| descriptor.setSchemaReference(reference); |
| |
| XMLDirectMapping tableMapping = new XMLDirectMapping(); |
| tableMapping.setAttributeName("table"); |
| tableMapping.setGetMethodName("getTableName"); |
| tableMapping.setSetMethodName("setTableName"); |
| tableMapping.setXPath("@table"); |
| tableMapping.setNullValue(""); |
| descriptor.addMapping(tableMapping); |
| |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setGetMethodName("getName"); |
| nameMapping.setSetMethodName("setName"); |
| nameMapping.setXPath("@name"); |
| nameMapping.getNullPolicy().setNullRepresentedByEmptyNode(false); |
| descriptor.addMapping(nameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAbstractCompositeDirectCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AbstractCompositeDirectCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping(); |
| fieldMapping.setAttributeName("field"); |
| fieldMapping.setReferenceClass(DatabaseField.class); |
| fieldMapping.setGetMethodName("getField"); |
| fieldMapping.setSetMethodName("setField"); |
| fieldMapping.setXPath(getPrimaryNamespaceXPath() + "field"); |
| ((XMLField)fieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldMapping); |
| |
| XMLCompositeObjectMapping valueConverterMapping = new XMLCompositeObjectMapping(); |
| valueConverterMapping.setAttributeName("valueConverter"); |
| valueConverterMapping.setGetMethodName("getValueConverter"); |
| valueConverterMapping.setSetMethodName("setValueConverter"); |
| valueConverterMapping.setXPath(getPrimaryNamespaceXPath() + "value-converter"); |
| valueConverterMapping.setReferenceClass(Converter.class); |
| descriptor.addMapping(valueConverterMapping); |
| |
| XMLCompositeObjectMapping containerPolicyMapping = new XMLCompositeObjectMapping(); |
| containerPolicyMapping.setAttributeName("collectionPolicy"); |
| containerPolicyMapping.setGetMethodName("getContainerPolicy"); |
| containerPolicyMapping.setSetMethodName("setContainerPolicy"); |
| containerPolicyMapping.setReferenceClass(ContainerPolicy.class); |
| containerPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "container"); |
| descriptor.addMapping(containerPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLCompositeDirectCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLCompositeDirectCollectionMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeDirectCollectionMapping.class); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildSerializedObjectConverterDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(SerializedObjectConverter.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Converter.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildStructureMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(StructureMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeObjectMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTimestmapLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TimestampLockingPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(VersionLockingPolicy.class); |
| |
| XMLDirectMapping usesServerTimeMapping = new XMLDirectMapping(); |
| usesServerTimeMapping.setAttributeName("usesServerTime"); |
| usesServerTimeMapping.setGetMethodName("usesServerTime"); |
| usesServerTimeMapping.setSetMethodName("setUsesServerTime"); |
| usesServerTimeMapping.setXPath(getPrimaryNamespaceXPath() + "server-time/text()"); |
| usesServerTimeMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesServerTimeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTimeToLiveCacheInvalidationPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TimeToLiveCacheInvalidationPolicy.class); |
| descriptor.getInheritancePolicy().setParentClass(CacheInvalidationPolicy.class); |
| |
| XMLDirectMapping timeToLiveMapping = new XMLDirectMapping(); |
| timeToLiveMapping.setAttributeName("timeToLive"); |
| timeToLiveMapping.setXPath(getPrimaryNamespaceXPath() + "time-to-live/text()"); |
| descriptor.addMapping(timeToLiveMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAbstractTransformationMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AbstractTransformationMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(DatabaseMapping.class); |
| |
| XMLDirectMapping attributeMethodNameMapping = new XMLDirectMapping(); |
| attributeMethodNameMapping.setAttributeName("attributeMethodName"); |
| attributeMethodNameMapping.setGetMethodName("getAttributeMethodName"); |
| attributeMethodNameMapping.setSetMethodName("setAttributeTransformation"); |
| attributeMethodNameMapping.setXPath(getPrimaryNamespaceXPath() + "attribute-method/text()"); |
| descriptor.addMapping(attributeMethodNameMapping); |
| |
| XMLDirectMapping attributeTransformerClassMapping = new XMLDirectMapping(); |
| attributeTransformerClassMapping.setAttributeName("attributeTransformerClass"); |
| attributeTransformerClassMapping.setGetMethodName("getAttributeTransformerClass"); |
| attributeTransformerClassMapping.setSetMethodName("setAttributeTransformerClass"); |
| attributeTransformerClassMapping.setXPath(getPrimaryNamespaceXPath() + "attribute-transformer/text()"); |
| descriptor.addMapping(attributeTransformerClassMapping); |
| |
| XMLDirectMapping isMutableMapping = new XMLDirectMapping(); |
| isMutableMapping.setAttributeName("isMutable"); |
| isMutableMapping.setGetMethodName("isMutable"); |
| isMutableMapping.setSetMethodName("setIsMutable"); |
| isMutableMapping.setNullValue(Boolean.TRUE); |
| isMutableMapping.setXPath(getPrimaryNamespaceXPath() + "mutable/text()"); |
| descriptor.addMapping(isMutableMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((AbstractTransformationMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((AbstractTransformationMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeCollectionMapping fieldTransformationsMapping = new XMLCompositeCollectionMapping(); |
| |
| // Handle translation of field-method hashtable to field-transformations. |
| fieldTransformationsMapping.setAttributeName("fieldTransformations"); |
| fieldTransformationsMapping.setGetMethodName("getFieldTransformations"); |
| fieldTransformationsMapping.setSetMethodName("setFieldTransformations"); |
| fieldTransformationsMapping.setXPath(getPrimaryNamespaceXPath() + "field-transformations/" + getPrimaryNamespaceXPath() + "field-transformation"); |
| fieldTransformationsMapping.setReferenceClass(FieldTransformation.class); |
| descriptor.addMapping(fieldTransformationsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTransformationMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TransformationMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractTransformationMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLTransformationMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLTransformationMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(AbstractTransformationMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTransparentIndirectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TransparentIndirectionPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(IndirectionPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTypesafeEnumConverterDescriptor(Class jaxbTypesafeEnumConverter) { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(jaxbTypesafeEnumConverter); |
| |
| descriptor.getInheritancePolicy().setParentClass(Converter.class); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTypeConversionConverterDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TypeConversionConverter.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Converter.class); |
| |
| XMLDirectMapping objectClassMapping = new XMLDirectMapping(); |
| objectClassMapping.setAttributeName("objectClass"); |
| objectClassMapping.setGetMethodName("getObjectClass"); |
| objectClassMapping.setSetMethodName("setObjectClass"); |
| objectClassMapping.setXPath(getPrimaryNamespaceXPath() + "object-class/text()"); |
| descriptor.addMapping(objectClassMapping); |
| |
| XMLDirectMapping dataClassMapping = new XMLDirectMapping(); |
| dataClassMapping.setAttributeName("dataClass"); |
| dataClassMapping.setGetMethodName("getDataClass"); |
| dataClassMapping.setSetMethodName("setDataClass"); |
| dataClassMapping.setXPath(getPrimaryNamespaceXPath() + "data-class/text()"); |
| descriptor.addMapping(dataClassMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildVariableOneToOneMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(VariableOneToOneMapping.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(ObjectReferenceMapping.class); |
| |
| XMLDirectMapping relationshipPartnerAttributeNameMapping = new XMLDirectMapping(); |
| relationshipPartnerAttributeNameMapping.setAttributeName("relationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setGetMethodName("getRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setSetMethodName("setRelationshipPartnerAttributeName"); |
| relationshipPartnerAttributeNameMapping.setXPath(getPrimaryNamespaceXPath() + "bidirectional-target-attribute/text()"); |
| descriptor.addMapping(relationshipPartnerAttributeNameMapping); |
| |
| XMLDirectMapping usesBatchReadingMapping = new XMLDirectMapping(); |
| usesBatchReadingMapping.setAttributeName("usesBatchReading"); |
| usesBatchReadingMapping.setGetMethodName("shouldUseBatchReading"); |
| usesBatchReadingMapping.setSetMethodName("setUsesBatchReading"); |
| usesBatchReadingMapping.setXPath(getPrimaryNamespaceXPath() + "batch-reading/text()"); |
| usesBatchReadingMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(usesBatchReadingMapping); |
| |
| XMLCompositeObjectMapping indirectionPolicyMapping = new XMLCompositeObjectMapping(); |
| indirectionPolicyMapping.setReferenceClass(IndirectionPolicy.class); |
| // Handle translation of NoIndirectionPolicy -> null. |
| indirectionPolicyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| IndirectionPolicy policy = ((ForeignReferenceMapping)object).getIndirectionPolicy(); |
| if (policy instanceof NoIndirectionPolicy) { |
| return null; |
| } |
| return policy; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| IndirectionPolicy policy = (IndirectionPolicy)value; |
| if (value == null) { |
| policy = new NoIndirectionPolicy(); |
| } |
| ((ForeignReferenceMapping)object).setIndirectionPolicy(policy); |
| } |
| }); |
| indirectionPolicyMapping.setAttributeName("indirectionPolicy"); |
| indirectionPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "indirection"); |
| descriptor.addMapping(indirectionPolicyMapping); |
| |
| XMLCompositeObjectMapping selectionQueryMapping = new XMLCompositeObjectMapping(); |
| selectionQueryMapping.setAttributeName("selectionQuery"); |
| selectionQueryMapping.setGetMethodName("getSelectionQuery"); |
| selectionQueryMapping.setSetMethodName("setSelectionQuery"); |
| selectionQueryMapping.setReferenceClass(ReadQuery.class); |
| selectionQueryMapping.setXPath(getPrimaryNamespaceXPath() + "selection-query"); |
| descriptor.addMapping(selectionQueryMapping); |
| |
| XMLCompositeObjectMapping typeFieldMapping = new XMLCompositeObjectMapping(); |
| typeFieldMapping.setAttributeName("typeField"); |
| typeFieldMapping.setGetMethodName("getTypeField"); |
| typeFieldMapping.setSetMethodName("setTypeField"); |
| typeFieldMapping.setReferenceClass(DatabaseField.class); |
| typeFieldMapping.setXPath(getPrimaryNamespaceXPath() + "type-field"); |
| ((XMLField)typeFieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(typeFieldMapping); |
| |
| XMLCompositeCollectionMapping foreignKeyFieldsMapping = new XMLCompositeCollectionMapping(); |
| foreignKeyFieldsMapping.useCollectionClass(NonSynchronizedVector.class); |
| foreignKeyFieldsMapping.setAttributeName("foreignKeyFields"); |
| foreignKeyFieldsMapping.setGetMethodName("getForeignKeyFields"); |
| foreignKeyFieldsMapping.setSetMethodName("setForeignKeyFields"); |
| foreignKeyFieldsMapping.setXPath(getPrimaryNamespaceXPath() + "foreign-key-fields/" + getPrimaryNamespaceXPath() + "field"); |
| foreignKeyFieldsMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)foreignKeyFieldsMapping.getField()).setLeafElementType(new QName(getSecondaryNamespace(), "field")); |
| descriptor.addMapping(foreignKeyFieldsMapping); |
| |
| XMLCompositeCollectionMapping sourceFieldToTargetQueryKeyMapping = new XMLCompositeCollectionMapping(); |
| sourceFieldToTargetQueryKeyMapping.setAttributeName("sourceToTargetQueryKeyNames"); |
| sourceFieldToTargetQueryKeyMapping.setXPath(getPrimaryNamespaceXPath() + "foreign-key-to-query-key/" + getPrimaryNamespaceXPath() + "query-key-reference"); |
| sourceFieldToTargetQueryKeyMapping.setGetMethodName("getSourceToTargetQueryKeyFieldAssociations"); |
| sourceFieldToTargetQueryKeyMapping.setSetMethodName("setSourceToTargetQueryKeyFieldAssociations"); |
| // Handle translation of query key associations string to field. |
| sourceFieldToTargetQueryKeyMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| VariableOneToOneMapping mapping = (VariableOneToOneMapping)object; |
| Vector associations = mapping.getSourceToTargetQueryKeyFieldAssociations(); |
| Vector queryKeyReferences = new Vector(associations.size()); |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| QueryKeyReference reference = new QueryKeyReference(); |
| reference.setKey(new DatabaseField((String)association.getKey())); |
| reference.setValue(association.getValue()); |
| queryKeyReferences.add(reference); |
| } |
| return queryKeyReferences; |
| } |
| |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| VariableOneToOneMapping mapping = (VariableOneToOneMapping)object; |
| Vector associations = (Vector)value; |
| for (int index = 0; index < associations.size(); index++) { |
| Association association = (Association)associations.get(index); |
| association.setKey(((DatabaseField)association.getKey()).getQualifiedName()); |
| } |
| mapping.setSourceToTargetQueryKeyFieldAssociations(associations); |
| } |
| }); |
| sourceFieldToTargetQueryKeyMapping.setReferenceClass(QueryKeyReference.class); |
| descriptor.addMapping(sourceFieldToTargetQueryKeyMapping); |
| |
| XMLCompositeCollectionMapping classIndicatorsMapping = new XMLCompositeCollectionMapping(); |
| classIndicatorsMapping.setAttributeName("classIndicatorAssociations"); |
| classIndicatorsMapping.setGetMethodName("getClassIndicatorAssociations"); |
| classIndicatorsMapping.setSetMethodName("setClassIndicatorAssociations"); |
| classIndicatorsMapping.setXPath(getPrimaryNamespaceXPath() + "class-indicator-mappings/" + getPrimaryNamespaceXPath() + "class-indicator-mapping"); |
| classIndicatorsMapping.setReferenceClass(TypedAssociation.class); |
| descriptor.addMapping(classIndicatorsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildQueryKeyReferenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryKeyReference.class); |
| descriptor.setDefaultRootElement("query-key-reference"); |
| |
| XMLCompositeObjectMapping keyMapping = new XMLCompositeObjectMapping(); |
| keyMapping.setAttributeName("key"); |
| keyMapping.setGetMethodName("getKey"); |
| keyMapping.setSetMethodName("setKey"); |
| keyMapping.setReferenceClass(DatabaseField.class); |
| keyMapping.setXPath(getPrimaryNamespaceXPath() + "source-field"); |
| ((XMLField)keyMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(keyMapping); |
| |
| XMLDirectMapping valueMapping = new XMLDirectMapping(); |
| valueMapping.setAttributeName("value"); |
| valueMapping.setGetMethodName("getValue"); |
| valueMapping.setSetMethodName("setValue"); |
| valueMapping.setXPath(getPrimaryNamespaceXPath() + "target-query-key/text()"); |
| descriptor.addMapping(valueMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOptimisticLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(OptimisticLockingPolicy.class); |
| descriptor.setDefaultRootElement("locking-policy"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(VersionLockingPolicy.class, getPrimaryNamespaceXPath() + "version-locking-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(TimestampLockingPolicy.class, getPrimaryNamespaceXPath() + "timestamp-locking-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(SelectedFieldsLockingPolicy.class, getPrimaryNamespaceXPath() + "selected-fields-locking-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(ChangedFieldsLockingPolicy.class, getPrimaryNamespaceXPath() + "changed-fields-locking-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(AllFieldsLockingPolicy.class, getPrimaryNamespaceXPath() + "all-fields-locking-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildVersionLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(VersionLockingPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(OptimisticLockingPolicy.class); |
| |
| XMLCompositeObjectMapping versionFieldMapping = new XMLCompositeObjectMapping(); |
| versionFieldMapping.setAttributeName("writeLockField"); |
| versionFieldMapping.setGetMethodName("getWriteLockField"); |
| versionFieldMapping.setSetMethodName("setWriteLockField"); |
| versionFieldMapping.setXPath(getPrimaryNamespaceXPath() + "version-field"); |
| versionFieldMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)versionFieldMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(versionFieldMapping); |
| |
| XMLDirectMapping shouldStoreInCacheMapping = new XMLDirectMapping(); |
| shouldStoreInCacheMapping.setAttributeName("isStoredInCache"); |
| shouldStoreInCacheMapping.setGetMethodName("isStoredInCache"); |
| shouldStoreInCacheMapping.setSetMethodName("setIsStoredInCache"); |
| shouldStoreInCacheMapping.setXPath(getPrimaryNamespaceXPath() + "store-version-in-cache/text()"); |
| shouldStoreInCacheMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(shouldStoreInCacheMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildSelectedFieldsLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(SelectedFieldsLockingPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(OptimisticLockingPolicy.class); |
| |
| XMLCompositeCollectionMapping fieldsMapping = new XMLCompositeCollectionMapping(); |
| fieldsMapping.useCollectionClass(NonSynchronizedVector.class); |
| fieldsMapping.setAttributeName("lockFields"); |
| fieldsMapping.setXPath(getPrimaryNamespaceXPath() + "fields/" + getPrimaryNamespaceXPath() + "field"); |
| fieldsMapping.setReferenceClass(DatabaseField.class); |
| ((XMLField)fieldsMapping.getField()).setLeafElementType(fieldQname); |
| descriptor.addMapping(fieldsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAllFieldsLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AllFieldsLockingPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(OptimisticLockingPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildChangedFieldsLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ChangedFieldsLockingPolicy.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(OptimisticLockingPolicy.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCompositeObjectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLCompositeObjectMapping.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeObjectMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCompositeCollectionMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLCompositeCollectionMapping.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(AbstractCompositeCollectionMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDirectMappingDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLDirectMapping.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(DirectToFieldMapping.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildOXXMLDescriptorDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLDescriptor.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(ClassDescriptor.class); |
| XMLCompositeDirectCollectionMapping defaultRootElementMapping = new XMLCompositeDirectCollectionMapping(); |
| defaultRootElementMapping.setAttributeName("defaultRootElement"); |
| defaultRootElementMapping.setGetMethodName("getTableNames"); |
| defaultRootElementMapping.setSetMethodName("setTableNames"); |
| defaultRootElementMapping.setXPath(getPrimaryNamespaceXPath() + "default-root-element/text()"); |
| descriptor.addMapping(defaultRootElementMapping); |
| |
| XMLDirectMapping shouldPreserveDocument = new XMLDirectMapping(); |
| shouldPreserveDocument.setAttributeName("shouldPreserveDocument"); |
| shouldPreserveDocument.setGetMethodName("shouldPreserveDocument"); |
| shouldPreserveDocument.setSetMethodName("setShouldPreserveDocument"); |
| shouldPreserveDocument.setNullValue(Boolean.FALSE); |
| shouldPreserveDocument.setXPath(getPrimaryNamespaceXPath() + "should-preserve-document/text()"); |
| descriptor.addMapping(shouldPreserveDocument); |
| |
| XMLCompositeObjectMapping namespaceResolverMapping = new XMLCompositeObjectMapping(); |
| namespaceResolverMapping.setXPath(getPrimaryNamespaceXPath() + "namespace-resolver"); |
| namespaceResolverMapping.setAttributeName("namespaceResolver"); |
| namespaceResolverMapping.setGetMethodName("getNamespaceResolver"); |
| namespaceResolverMapping.setSetMethodName("setNamespaceResolver"); |
| namespaceResolverMapping.setReferenceClass(NamespaceResolver.class); |
| descriptor.addMapping(namespaceResolverMapping); |
| |
| XMLCompositeObjectMapping schemaReferenceMapping = new XMLCompositeObjectMapping(); |
| schemaReferenceMapping.setAttributeName("schemaReference"); |
| schemaReferenceMapping.setXPath(getPrimaryNamespaceXPath() + "schema"); |
| schemaReferenceMapping.setReferenceClass(XMLSchemaReference.class); |
| descriptor.addMapping(schemaReferenceMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLSchemaReferenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLSchemaReference.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.setDefaultRootElement("schema-reference"); |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLSchemaReference.class, getPrimaryNamespaceXPath() + "schema-reference"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLSchemaClassPathReference.class, getPrimaryNamespaceXPath() + "schema-class-path-reference"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLSchemaFileReference.class, getPrimaryNamespaceXPath() + "schema-file-reference"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLSchemaURLReference.class, getPrimaryNamespaceXPath() + "schema-url-reference"); |
| |
| XMLDirectMapping resourceMapping = new XMLDirectMapping(); |
| resourceMapping.setAttributeName("resource"); |
| resourceMapping.setXPath(getPrimaryNamespaceXPath() + "resource/text()"); |
| descriptor.addMapping(resourceMapping); |
| |
| XMLDirectMapping contextMapping = new XMLDirectMapping(); |
| contextMapping.setAttributeName("schemaContext"); |
| contextMapping.setXPath(getPrimaryNamespaceXPath() + "schema-context/text()"); |
| descriptor.addMapping(contextMapping); |
| |
| XMLDirectMapping nodeTypeMapping = new XMLDirectMapping(); |
| nodeTypeMapping.setAttributeName("type"); |
| nodeTypeMapping.setXPath(getPrimaryNamespaceXPath() + "node-type/text()"); |
| |
| ObjectTypeConverter nodeTypeConverter = new ObjectTypeConverter(); |
| nodeTypeConverter.addConversionValue("element", XMLSchemaReference.ELEMENT); |
| nodeTypeConverter.addConversionValue("simple-type", XMLSchemaReference.SIMPLE_TYPE); |
| nodeTypeConverter.addConversionValue("complex-type", XMLSchemaReference.COMPLEX_TYPE); |
| nodeTypeConverter.addConversionValue("group", XMLSchemaReference.GROUP); |
| nodeTypeMapping.setConverter(nodeTypeConverter); |
| |
| descriptor.addMapping(nodeTypeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLFieldDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLField.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseField.class); |
| |
| XMLDirectMapping typedFieldMapping = new XMLDirectMapping(); |
| typedFieldMapping.setAttributeName("isTypedTextField"); |
| typedFieldMapping.setGetMethodName("isTypedTextField"); |
| typedFieldMapping.setSetMethodName("setIsTypedTextField"); |
| typedFieldMapping.setXPath(getPrimaryNamespaceXPath() + "typed-text-field/text()"); |
| typedFieldMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(typedFieldMapping); |
| |
| XMLDirectMapping singleNodeMapping = new XMLDirectMapping(); |
| singleNodeMapping.setAttributeName("usesSingleNode"); |
| singleNodeMapping.setGetMethodName("usesSingleNode"); |
| singleNodeMapping.setSetMethodName("setUsesSingleNode"); |
| singleNodeMapping.setXPath(getPrimaryNamespaceXPath() + "single-node/text()"); |
| singleNodeMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(singleNodeMapping); |
| |
| XMLDirectMapping schemaTypeMapping = new XMLDirectMapping(); |
| schemaTypeMapping.setAttributeName("schemaType"); |
| schemaTypeMapping.setGetMethodName("getSchemaType"); |
| schemaTypeMapping.setSetMethodName("setSchemaType"); |
| schemaTypeMapping.setXPath(getPrimaryNamespaceXPath() + "schema-type/text()"); |
| descriptor.addMapping(schemaTypeMapping); |
| |
| XMLCompositeCollectionMapping xmlToJavaPairsMapping = new XMLCompositeCollectionMapping(); |
| xmlToJavaPairsMapping.setXPath(getPrimaryNamespaceXPath() + "xml-to-java-conversion-pair"); |
| xmlToJavaPairsMapping.useCollectionClass(ArrayList.class); |
| xmlToJavaPairsMapping.setReferenceClass(XMLConversionPair.class); |
| xmlToJavaPairsMapping.setAttributeName("userXMLTypes"); |
| xmlToJavaPairsMapping.setGetMethodName("getUserXMLTypesForDeploymentXML"); |
| xmlToJavaPairsMapping.setSetMethodName("setUserXMLTypesForDeploymentXML"); |
| descriptor.addMapping(xmlToJavaPairsMapping); |
| |
| XMLCompositeCollectionMapping javaToXMLPairsMapping = new XMLCompositeCollectionMapping(); |
| javaToXMLPairsMapping.useCollectionClass(ArrayList.class); |
| javaToXMLPairsMapping.setXPath(getPrimaryNamespaceXPath() + "java-to-xml-conversion-pair"); |
| javaToXMLPairsMapping.setReferenceClass(XMLConversionPair.class); |
| javaToXMLPairsMapping.setAttributeName("userJavaTypes"); |
| javaToXMLPairsMapping.setGetMethodName("getUserJavaTypesForDeploymentXML"); |
| javaToXMLPairsMapping.setSetMethodName("setUserJavaTypesForDeploymentXML"); |
| descriptor.addMapping(javaToXMLPairsMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLUnionFieldDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLUnionField.class); |
| descriptor.getInheritancePolicy().setParentClass(DatabaseField.class); |
| |
| XMLDirectMapping typedFieldMapping = new XMLDirectMapping(); |
| typedFieldMapping.setAttributeName("isTypedTextField"); |
| typedFieldMapping.setGetMethodName("isTypedTextField"); |
| typedFieldMapping.setSetMethodName("setIsTypedTextField"); |
| typedFieldMapping.setXPath(getPrimaryNamespaceXPath() + "typed-text-field/text()"); |
| typedFieldMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(typedFieldMapping); |
| |
| XMLDirectMapping singleNodeMapping = new XMLDirectMapping(); |
| singleNodeMapping.setAttributeName("usesSingleNode"); |
| singleNodeMapping.setGetMethodName("usesSingleNode"); |
| singleNodeMapping.setSetMethodName("setUsesSingleNode"); |
| singleNodeMapping.setXPath(getPrimaryNamespaceXPath() + "single-node/text()"); |
| singleNodeMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(singleNodeMapping); |
| |
| XMLCompositeDirectCollectionMapping schemaTypeMapping = new XMLCompositeDirectCollectionMapping(); |
| schemaTypeMapping.setAttributeName("schemaTypes"); |
| schemaTypeMapping.setGetMethodName("getSchemaTypes"); |
| schemaTypeMapping.setSetMethodName("setSchemaTypes"); |
| schemaTypeMapping.useCollectionClass(ArrayList.class); |
| schemaTypeMapping.setAttributeElementClass(QName.class); |
| schemaTypeMapping.setXPath(getPrimaryNamespaceXPath() + "schema-type/text()"); |
| descriptor.addMapping(schemaTypeMapping); |
| |
| XMLCompositeCollectionMapping xmlToJavaPairsMapping = new XMLCompositeCollectionMapping(); |
| xmlToJavaPairsMapping.setXPath(getPrimaryNamespaceXPath() + "xml-to-java-conversion-pair"); |
| xmlToJavaPairsMapping.setReferenceClass(XMLConversionPair.class); |
| xmlToJavaPairsMapping.useCollectionClass(ArrayList.class); |
| xmlToJavaPairsMapping.setAttributeName("userXMLTypes"); |
| xmlToJavaPairsMapping.setGetMethodName("getUserXMLTypesForDeploymentXML"); |
| xmlToJavaPairsMapping.setSetMethodName("setUserXMLTypesForDeploymentXML"); |
| descriptor.addMapping(xmlToJavaPairsMapping); |
| |
| XMLCompositeCollectionMapping javaToXMLPairsMapping = new XMLCompositeCollectionMapping(); |
| javaToXMLPairsMapping.setXPath(getPrimaryNamespaceXPath() + "java-to-xml-conversion-pair"); |
| javaToXMLPairsMapping.useCollectionClass(ArrayList.class); |
| javaToXMLPairsMapping.setReferenceClass(XMLConversionPair.class); |
| javaToXMLPairsMapping.setAttributeName("userJavaTypes"); |
| javaToXMLPairsMapping.setGetMethodName("getUserJavaTypesForDeploymentXML"); |
| javaToXMLPairsMapping.setSetMethodName("setUserJavaTypesForDeploymentXML"); |
| descriptor.addMapping(javaToXMLPairsMapping); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLConversionPairDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLConversionPair.class); |
| |
| XMLDirectMapping xmlTypeMapping = new XMLDirectMapping(); |
| xmlTypeMapping.setXPath(getPrimaryNamespaceXPath() + "qname/text()"); |
| xmlTypeMapping.setAttributeName("xmlType"); |
| xmlTypeMapping.setGetMethodName("getXmlType"); |
| xmlTypeMapping.setSetMethodName("setXmlType"); |
| descriptor.addMapping(xmlTypeMapping); |
| |
| XMLDirectMapping javaTypeMapping = new XMLDirectMapping(); |
| javaTypeMapping.setXPath(getPrimaryNamespaceXPath() + "class-name/text()"); |
| javaTypeMapping.setAttributeName("javaType"); |
| javaTypeMapping.setGetMethodName("getJavaType"); |
| javaTypeMapping.setSetMethodName("setJavaType"); |
| descriptor.addMapping(javaTypeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLLoginDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLLogin.class); |
| descriptor.getInheritancePolicy().setParentClass(DatasourceLogin.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNamespaceResolverDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(NamespaceResolver.class); |
| |
| XMLCompositeCollectionMapping namespaceMapping = new XMLCompositeCollectionMapping(); |
| namespaceMapping.setXPath(getPrimaryNamespaceXPath() + "namespaces/" + getPrimaryNamespaceXPath() + "namespace"); |
| namespaceMapping.setAttributeName("namespaces"); |
| namespaceMapping.setGetMethodName("getNamespaces"); |
| namespaceMapping.setSetMethodName("setNamespaces"); |
| namespaceMapping.setReferenceClass(Namespace.class); |
| descriptor.addMapping(namespaceMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNamespaceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Namespace.class); |
| |
| XMLDirectMapping prefixMapping = new XMLDirectMapping(); |
| prefixMapping.setXPath(getPrimaryNamespaceXPath() + "prefix/text()"); |
| prefixMapping.setAttributeName("prefix"); |
| prefixMapping.setGetMethodName("getPrefix"); |
| prefixMapping.setSetMethodName("setPrefix"); |
| descriptor.addMapping(prefixMapping); |
| |
| XMLDirectMapping uriMapping = new XMLDirectMapping(); |
| uriMapping.setXPath(getPrimaryNamespaceXPath() + "namespace-uri/text()"); |
| uriMapping.setAttributeName("namespaceURI"); |
| uriMapping.setGetMethodName("getNamespaceURI"); |
| uriMapping.setSetMethodName("setNamespaceURI"); |
| descriptor.addMapping(uriMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLSchemaClassPathReferenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLSchemaClassPathReference.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(XMLSchemaReference.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLSchemaFileReferenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLSchemaFileReference.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(XMLSchemaReference.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLSchemaURLReferenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| |
| descriptor.setJavaClass(XMLSchemaURLReference.class); |
| descriptor.descriptorIsAggregate(); |
| descriptor.getInheritancePolicy().setParentClass(XMLSchemaReference.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildCMPPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(CMPPolicy.class); |
| descriptor.setDefaultRootElement("cmp-policy"); |
| |
| XMLDirectMapping modificationDeferralLevelMapping = new XMLDirectMapping(); |
| modificationDeferralLevelMapping.setAttributeName("modificationDeferralLevel"); |
| modificationDeferralLevelMapping.setGetMethodName("getDeferModificationsUntilCommit"); |
| modificationDeferralLevelMapping.setSetMethodName("setDeferModificationsUntilCommit"); |
| ObjectTypeConverter modificationDeferralLevelConverter = new ObjectTypeConverter(); |
| modificationDeferralLevelConverter.addConversionValue("all-modifications", CMPPolicy.ALL_MODIFICATIONS); |
| modificationDeferralLevelConverter.addConversionValue("update-modifications", CMPPolicy.UPDATE_MODIFICATIONS); |
| modificationDeferralLevelConverter.addConversionValue("none", CMPPolicy.NONE); |
| modificationDeferralLevelMapping.setConverter(modificationDeferralLevelConverter); |
| modificationDeferralLevelMapping.setXPath(getPrimaryNamespaceXPath() + "defer-until-commit/text()"); |
| modificationDeferralLevelMapping.setNullValue(CMPPolicy.ALL_MODIFICATIONS); |
| descriptor.addMapping(modificationDeferralLevelMapping); |
| |
| XMLDirectMapping nonDeferredCreateTimeMapping = new XMLDirectMapping(); |
| nonDeferredCreateTimeMapping.setAttributeName("nonDeferredCreateTime"); |
| nonDeferredCreateTimeMapping.setGetMethodName("getNonDeferredCreateTime"); |
| nonDeferredCreateTimeMapping.setSetMethodName("setNonDeferredCreateTime"); |
| ObjectTypeConverter nonDeferredCreateTimeConverter = new ObjectTypeConverter(); |
| nonDeferredCreateTimeConverter.addConversionValue("after-ejbcreate", CMPPolicy.AFTER_EJBCREATE); |
| nonDeferredCreateTimeConverter.addConversionValue("after-ejbpostcreate", CMPPolicy.AFTER_EJBPOSTCREATE); |
| nonDeferredCreateTimeConverter.addConversionValue("undefined", CMPPolicy.UNDEFINED); |
| nonDeferredCreateTimeMapping.setConverter(nonDeferredCreateTimeConverter); |
| nonDeferredCreateTimeMapping.setXPath(getPrimaryNamespaceXPath() + "non-deferred-create-time/text()"); |
| nonDeferredCreateTimeMapping.setNullValue(CMPPolicy.UNDEFINED); |
| descriptor.addMapping(nonDeferredCreateTimeMapping); |
| |
| XMLCompositeObjectMapping pessimisticLockingPolicyMapping = new XMLCompositeObjectMapping(); |
| pessimisticLockingPolicyMapping.setAttributeName("pessimisticLockingPolicy"); |
| pessimisticLockingPolicyMapping.setGetMethodName("getPessimisticLockingPolicy"); |
| pessimisticLockingPolicyMapping.setSetMethodName("setPessimisticLockingPolicy"); |
| pessimisticLockingPolicyMapping.setReferenceClass(PessimisticLockingPolicy.class); |
| pessimisticLockingPolicyMapping.setXPath(getPrimaryNamespaceXPath() + "pessimistic-locking"); |
| descriptor.addMapping(pessimisticLockingPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildPessimisticLockingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(PessimisticLockingPolicy.class); |
| descriptor.setDefaultRootElement("pessimistic-locking-policy"); |
| |
| XMLDirectMapping lockingModeMapping = new XMLDirectMapping(); |
| lockingModeMapping.setXPath(getPrimaryNamespaceXPath() + "locking-mode/text()"); |
| lockingModeMapping.setAttributeName("lockingMode"); |
| lockingModeMapping.setGetMethodName("getLockingMode"); |
| lockingModeMapping.setSetMethodName("setLockingMode"); |
| ObjectTypeConverter lockingModeConverter = new ObjectTypeConverter(); |
| lockingModeConverter.addConversionValue("wait", ObjectLevelReadQuery.LOCK); |
| lockingModeConverter.addConversionValue("no-wait", ObjectLevelReadQuery.LOCK_NOWAIT); |
| lockingModeMapping.setConverter(lockingModeConverter); |
| descriptor.addMapping(lockingModeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildSequenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Sequence.class); |
| descriptor.setDefaultRootElement("sequence"); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DefaultSequence.class, getPrimaryNamespaceXPath() + "default-sequence"); |
| descriptor.getInheritancePolicy().addClassIndicator(NativeSequence.class, getPrimaryNamespaceXPath() + "native-sequence"); |
| descriptor.getInheritancePolicy().addClassIndicator(TableSequence.class, getPrimaryNamespaceXPath() + "table-sequence"); |
| descriptor.getInheritancePolicy().addClassIndicator(UnaryTableSequence.class, getPrimaryNamespaceXPath() + "unary-table-sequence"); |
| try { |
| descriptor.getInheritancePolicy().addClassIndicator(Class.forName("org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence"), getPrimaryNamespaceXPath() + "xmlfile-sequence"); |
| } catch (Exception missing) { |
| // Ignore. |
| } |
| XMLDirectMapping nameMapping = new XMLDirectMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setGetMethodName("getName"); |
| nameMapping.setSetMethodName("setName"); |
| nameMapping.setXPath(getPrimaryNamespaceXPath() + "name/text()"); |
| nameMapping.setNullValue(""); |
| descriptor.addMapping(nameMapping); |
| |
| XMLDirectMapping preallocationSizeMapping = new XMLDirectMapping(); |
| preallocationSizeMapping.setAttributeName("preallocationSize"); |
| preallocationSizeMapping.setGetMethodName("getPreallocationSize"); |
| preallocationSizeMapping.setSetMethodName("setPreallocationSize"); |
| preallocationSizeMapping.setXPath(getPrimaryNamespaceXPath() + "preallocation-size/text()"); |
| preallocationSizeMapping.setNullValue(50); |
| descriptor.addMapping(preallocationSizeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDefaultSequenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DefaultSequence.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Sequence.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNativeSequenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NativeSequence.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Sequence.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildTableSequenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(TableSequence.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Sequence.class); |
| |
| XMLDirectMapping tableNameMapping = new XMLDirectMapping(); |
| tableNameMapping.setAttributeName("tableName"); |
| // CR#2407 Call getQualifiedSequenceTableName that includes table qualifier. |
| // tableNameMapping.setGetMethodName("getQualifiedSequenceTableName"); |
| tableNameMapping.setGetMethodName("getTableName"); |
| tableNameMapping.setSetMethodName("setTableName"); |
| tableNameMapping.setXPath(getPrimaryNamespaceXPath() + "table/text()"); |
| tableNameMapping.setNullValue("SEQUENCE"); |
| descriptor.addMapping(tableNameMapping); |
| |
| XMLDirectMapping nameFieldNameMapping = new XMLDirectMapping(); |
| nameFieldNameMapping.setAttributeName("nameFieldName"); |
| nameFieldNameMapping.setGetMethodName("getNameFieldName"); |
| nameFieldNameMapping.setSetMethodName("setNameFieldName"); |
| nameFieldNameMapping.setXPath(getPrimaryNamespaceXPath() + "name-field/text()"); |
| nameFieldNameMapping.setNullValue("SEQ_NAME"); |
| descriptor.addMapping(nameFieldNameMapping); |
| |
| XMLDirectMapping counterFieldNameMapping = new XMLDirectMapping(); |
| counterFieldNameMapping.setAttributeName("counterFieldName"); |
| counterFieldNameMapping.setGetMethodName("getCounterFieldName"); |
| counterFieldNameMapping.setSetMethodName("setCounterFieldName"); |
| counterFieldNameMapping.setXPath(getPrimaryNamespaceXPath() + "counter-field/text()"); |
| counterFieldNameMapping.setNullValue("SEQ_COUNT"); |
| descriptor.addMapping(counterFieldNameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildUnaryTableSequenceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(UnaryTableSequence.class); |
| |
| descriptor.getInheritancePolicy().setParentClass(Sequence.class); |
| |
| XMLDirectMapping counterFieldNameMapping = new XMLDirectMapping(); |
| counterFieldNameMapping.setAttributeName("counterFieldName"); |
| counterFieldNameMapping.setGetMethodName("getCounterFieldName"); |
| counterFieldNameMapping.setSetMethodName("setCounterFieldName"); |
| counterFieldNameMapping.setXPath(getPrimaryNamespaceXPath() + "counter-field/text()"); |
| counterFieldNameMapping.setNullValue("SEQ_COUNT"); |
| descriptor.addMapping(counterFieldNameMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLFileSequenceDescriptor() { |
| // Can no longer reference class directly as in a different project. |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| try { |
| descriptor.setJavaClass(Class.forName("org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence")); |
| } catch (Exception missing) { |
| descriptor.setJavaClass(DefaultSequence.class); |
| } |
| |
| descriptor.getInheritancePolicy().setParentClass(Sequence.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildFetchGroupManagerDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FetchGroupManager.class); |
| |
| XMLCompositeObjectMapping defaultFetchGroupMapping = new XMLCompositeObjectMapping(); |
| defaultFetchGroupMapping.setAttributeName("defaultFetchGroup"); |
| defaultFetchGroupMapping.setReferenceClass(FetchGroup.class); |
| defaultFetchGroupMapping.setXPath(getPrimaryNamespaceXPath() + "default-fetch-group"); |
| descriptor.addMapping(defaultFetchGroupMapping); |
| |
| XMLCompositeCollectionMapping fetchGroupManagerMapping = new XMLCompositeCollectionMapping(); |
| fetchGroupManagerMapping.setAttributeName("fetchGroups"); |
| fetchGroupManagerMapping.setReferenceClass(FetchGroup.class); |
| fetchGroupManagerMapping.useMapClass(HashMap.class, "getName"); |
| fetchGroupManagerMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-group"); |
| descriptor.addMapping(fetchGroupManagerMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildFetchGroupDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(FetchGroup.class); |
| descriptor.setDefaultRootElement("fetch-group"); |
| |
| XMLDirectMapping fetchGroupNameMapping = new XMLDirectMapping(); |
| fetchGroupNameMapping.setAttributeName("name"); |
| fetchGroupNameMapping.setXPath(getPrimaryNamespaceXPath() + "name"); |
| descriptor.addMapping(fetchGroupNameMapping); |
| |
| XMLCompositeDirectCollectionMapping fetchGroupAttributeMapping = new XMLCompositeDirectCollectionMapping(); |
| CollectionContainerPolicy containerPolicy = new CollectionContainerPolicy(TreeSet.class); |
| fetchGroupAttributeMapping.setContainerPolicy(containerPolicy); |
| fetchGroupAttributeMapping.setAttributeName("attributes"); |
| fetchGroupAttributeMapping.setGetMethodName("getAttributeNames"); |
| fetchGroupAttributeMapping.setSetMethodName("setAttributeNames"); |
| fetchGroupAttributeMapping.setXPath(getPrimaryNamespaceXPath() + "fetch-group-attributes/" + getPrimaryNamespaceXPath() + "fetch-group-attribute/text()"); |
| descriptor.addMapping(fetchGroupAttributeMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildChangePolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectChangePolicy.class); |
| descriptor.setDefaultRootElement("change-policy"); |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DeferredChangeDetectionPolicy.class, getPrimaryNamespaceXPath() + "deferred-detection-change-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(ObjectChangeTrackingPolicy.class, getPrimaryNamespaceXPath() + "object-level-change-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(AttributeChangeTrackingPolicy.class, getPrimaryNamespaceXPath() + "attribute-level-change-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDeferredChangeDetectionPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DeferredChangeDetectionPolicy.class); |
| descriptor.setDefaultRootElement("change-policy"); |
| descriptor.getInheritancePolicy().setParentClass(ObjectChangePolicy.class); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildObjectChangeTrackingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ObjectChangeTrackingPolicy.class); |
| descriptor.setDefaultRootElement("change-policy"); |
| descriptor.getInheritancePolicy().setParentClass(ObjectChangePolicy.class); |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAttributeChangeTrackingPolicyDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AttributeChangeTrackingPolicy.class); |
| descriptor.setDefaultRootElement("change-policy"); |
| descriptor.getInheritancePolicy().setParentClass(ObjectChangePolicy.class); |
| return descriptor; |
| } |
| } |