| /* |
| * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved. |
| * Copyright (c) 1998, 2018 IBM Corporation 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 |
| // Rick Curtis - Add support for WebSphere Liberty |
| // 03/15/2016 Jody Grassel |
| // - 489794: Add support for WebSphere EJBEmbeddable platform. |
| package org.eclipse.persistence.internal.sessions.factories; |
| |
| import static javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI; |
| import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; |
| |
| import java.util.Iterator; |
| |
| import org.eclipse.persistence.descriptors.ClassDescriptor; |
| import org.eclipse.persistence.oxm.NamespaceResolver; |
| import org.eclipse.persistence.oxm.XMLDescriptor; |
| import org.eclipse.persistence.oxm.XMLField; |
| import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; |
| import org.eclipse.persistence.oxm.mappings.nullpolicy.NullPolicy; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.AppendNewElementsOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.DescriptorLevelDocumentPreservationPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.DocumentPreservationPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.IgnoreNewElementsOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.NoDocumentPreservationPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.NodeOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.RelativePositionOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.XMLBinderPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.GlassfishPlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.Oc4jPlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.SunAS9PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebLogic_10_PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebLogic_9_PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebSphere_6_1_PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebSphere_7_0_PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebSphere_EJBEmbeddable_PlatformConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.platform.WebSphere_Liberty_Platform_Config; |
| import org.eclipse.persistence.internal.sessions.factories.model.transport.Oc4jJGroupsTransportManagerConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.transport.TransportManagerConfig; |
| |
| /** |
| * INTERNAL: |
| * OX mapping project for the 11gR1 sessions XML schema. |
| * This subclasses the 10.1.3 project and adds any changes. |
| */ |
| public class XMLSessionConfigProject_11_1_1 extends XMLSessionConfigProject { |
| // Default null values |
| public static final boolean BIND_ALL_PARAMETERS_DEFAULT = true; |
| public static final boolean USE_SINGLE_THREADED_NOTIFICATION_DEFAULT = false; |
| |
| public XMLSessionConfigProject_11_1_1() { |
| super(); |
| addDescriptor(buildOc4jJGroupsTransportManagerConfigDescriptor()); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(Oc4jPlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(GlassfishPlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(SunAS9PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebLogic_9_PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebLogic_10_PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebSphere_6_1_PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebSphere_7_0_PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebSphere_EJBEmbeddable_PlatformConfig.class)); |
| addDescriptor(buildServerPlatformConfigDescriptorFor(WebSphere_Liberty_Platform_Config.class)); |
| |
| // 242452 -- add metadata support for XMLLogin's DocumentPreservationPolicy |
| addDescriptor(buildDocumentPreservationPolicyConfigDescriptor()); |
| addDescriptor(buildDescriptorLevelDocumentPreservationPolicyConfigDescriptor()); |
| addDescriptor(buildNoDocumentPreservationPolicyConfigDescriptor()); |
| addDescriptor(buildXMLBinderPolicyConfigDescriptor()); |
| addDescriptor(buildNodeOrderingPolicyConfigDescriptor()); |
| addDescriptor(buildAppendNewElementsOrderingPolicyConfigDescriptor()); |
| addDescriptor(buildIgnoreNewElementsOrderingPolicyConfigDescriptor()); |
| addDescriptor(buildRelativePositionOrderingPolicyConfigDescriptor()); |
| |
| // Set the namespaces on all descriptors. |
| NamespaceResolver namespaceResolver = new NamespaceResolver(); |
| namespaceResolver.put("xsi", W3C_XML_SCHEMA_INSTANCE_NS_URI); |
| namespaceResolver.put("xsd", W3C_XML_SCHEMA_NS_URI); |
| |
| for (Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) { |
| XMLDescriptor descriptor = (XMLDescriptor)descriptors.next(); |
| descriptor.setNamespaceResolver(namespaceResolver); |
| } |
| } |
| |
| @Override |
| public ClassDescriptor buildSessionConfigsDescriptor() { |
| XMLDescriptor descriptor = (XMLDescriptor)super.buildSessionConfigsDescriptor(); |
| descriptor.setDefaultRootElement("sessions"); |
| return descriptor; |
| } |
| |
| @Override |
| public ClassDescriptor buildDatabaseLoginConfigDescriptor() { |
| ClassDescriptor descriptor = super.buildDatabaseLoginConfigDescriptor(); |
| |
| XMLDirectMapping bindAllParametersMapping = (XMLDirectMapping)descriptor.getMappingForAttributeName("m_bindAllParameters"); |
| bindAllParametersMapping.setNullValue(Boolean.TRUE); |
| |
| XMLDirectMapping validateConnectionHealthOnErrorMapping = new XMLDirectMapping(); |
| validateConnectionHealthOnErrorMapping.setAttributeName("connectionHealthValidatedOnError"); |
| validateConnectionHealthOnErrorMapping.setGetMethodName("isConnectionHealthValidatedOnError"); |
| validateConnectionHealthOnErrorMapping.setSetMethodName("setConnectionHealthValidatedOnError"); |
| validateConnectionHealthOnErrorMapping.setXPath("connection-health-validated-on-error/text()"); |
| validateConnectionHealthOnErrorMapping.setNullPolicy(new NullPolicy(null, false, false, false)); |
| validateConnectionHealthOnErrorMapping.setNullValue(true); |
| descriptor.addMapping(validateConnectionHealthOnErrorMapping); |
| |
| XMLDirectMapping delayBetweenReconnectAttempts = new XMLDirectMapping(); |
| delayBetweenReconnectAttempts.setAttributeName("delayBetweenConnectionAttempts"); |
| delayBetweenReconnectAttempts.setGetMethodName("getDelayBetweenConnectionAttempts"); |
| delayBetweenReconnectAttempts.setSetMethodName("setDelayBetweenConnectionAttempts"); |
| delayBetweenReconnectAttempts.setXPath("delay-between-reconnect-attempts/text()"); |
| delayBetweenReconnectAttempts.setNullPolicy(new NullPolicy(null, false, false, false)); |
| descriptor.addMapping(delayBetweenReconnectAttempts); |
| |
| XMLDirectMapping queryRetryAttemptCount = new XMLDirectMapping(); |
| queryRetryAttemptCount.setAttributeName("queryRetryAttemptCount"); |
| queryRetryAttemptCount.setGetMethodName("getQueryRetryAttemptCount"); |
| queryRetryAttemptCount.setSetMethodName("setQueryRetryAttemptCount"); |
| queryRetryAttemptCount.setXPath("query-retry-attempt-count/text()"); |
| queryRetryAttemptCount.setNullPolicy(new NullPolicy(null, false, false, false)); |
| descriptor.addMapping(queryRetryAttemptCount); |
| |
| XMLDirectMapping pingSQLMapping = new XMLDirectMapping(); |
| pingSQLMapping.setAttributeName("pingSQL"); |
| pingSQLMapping.setGetMethodName("getPingSQL"); |
| pingSQLMapping.setSetMethodName("setPingSQL"); |
| pingSQLMapping.setXPath("ping-sql/text()"); |
| pingSQLMapping.setNullPolicy(new NullPolicy(null, false, false, false)); |
| descriptor.addMapping(pingSQLMapping); |
| |
| return descriptor; |
| } |
| |
| public ClassDescriptor buildOc4jJGroupsTransportManagerConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Oc4jJGroupsTransportManagerConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(TransportManagerConfig.class); |
| |
| XMLDirectMapping useSingleThreadedNotificationMapping = new XMLDirectMapping(); |
| useSingleThreadedNotificationMapping.setAttributeName("m_useSingleThreadedNotification"); |
| useSingleThreadedNotificationMapping.setGetMethodName("useSingleThreadedNotification"); |
| useSingleThreadedNotificationMapping.setSetMethodName("setUseSingleThreadedNotification"); |
| useSingleThreadedNotificationMapping.setXPath("use-single-threaded-notification/text()"); |
| useSingleThreadedNotificationMapping.setNullValue(Boolean.FALSE); |
| descriptor.addMapping(useSingleThreadedNotificationMapping); |
| |
| XMLDirectMapping topicNameMapping = new XMLDirectMapping(); |
| topicNameMapping.setAttributeName("m_topicName"); |
| topicNameMapping.setGetMethodName("getTopicName"); |
| topicNameMapping.setSetMethodName("setTopicName"); |
| topicNameMapping.setXPath("topic-name/text()"); |
| descriptor.addMapping(topicNameMapping); |
| |
| return descriptor; |
| } |
| |
| @Override |
| public ClassDescriptor buildTransportManagerConfigDescriptor() { |
| XMLDescriptor descriptor = (XMLDescriptor)super.buildTransportManagerConfigDescriptor(); |
| descriptor.getInheritancePolicy().addClassIndicator(Oc4jJGroupsTransportManagerConfig.class, "oc4j-jgroups-transport"); |
| |
| return descriptor; |
| } |
| |
| @Override |
| public ClassDescriptor buildServerPlatformConfigDescriptor() { |
| XMLDescriptor descriptor =(XMLDescriptor)super.buildServerPlatformConfigDescriptor(); |
| descriptor.getInheritancePolicy().addClassIndicator(Oc4jPlatformConfig.class, "oc4j-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(SunAS9PlatformConfig.class, "sunas-9-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(GlassfishPlatformConfig.class, "glassfish-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebLogic_9_PlatformConfig.class, "weblogic-9-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebLogic_10_PlatformConfig.class, "weblogic-10-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebSphere_6_1_PlatformConfig.class, "websphere-61-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebSphere_7_0_PlatformConfig.class, "websphere-7-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebSphere_EJBEmbeddable_PlatformConfig.class, "websphere-ejbembeddable-platform"); |
| descriptor.getInheritancePolicy().addClassIndicator(WebSphere_Liberty_Platform_Config.class, "websphere-liberty-platform"); |
| return descriptor; |
| } |
| |
| @Override |
| public ClassDescriptor buildXMLLoginConfigDescriptor() { |
| ClassDescriptor descriptor = super.buildXMLLoginConfigDescriptor(); |
| |
| XMLDirectMapping equalNamespaceResolversMapping = new XMLDirectMapping(); |
| equalNamespaceResolversMapping.setAttributeName("m_equalNamespaceResolvers"); |
| equalNamespaceResolversMapping.setGetMethodName("getEqualNamespaceResolvers"); |
| equalNamespaceResolversMapping.setSetMethodName("setEqualNamespaceResolvers"); |
| equalNamespaceResolversMapping.setXPath("equal-namespace-resolvers/text()"); |
| equalNamespaceResolversMapping.setNullValue(Boolean.TRUE); |
| descriptor.addMapping(equalNamespaceResolversMapping); |
| |
| XMLCompositeObjectMapping documentPreservationPolicyMapping = new XMLCompositeObjectMapping(); |
| documentPreservationPolicyMapping.setReferenceClass(DocumentPreservationPolicyConfig.class); |
| documentPreservationPolicyMapping.setAttributeName("m_documentPreservationPolicy"); |
| documentPreservationPolicyMapping.setGetMethodName("getDocumentPreservationPolicy"); |
| documentPreservationPolicyMapping.setSetMethodName("setDocumentPreservationPolicy"); |
| documentPreservationPolicyMapping.setXPath("document-preservation-policy"); |
| descriptor.addMapping(documentPreservationPolicyMapping); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDocumentPreservationPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DocumentPreservationPolicyConfig.class); |
| descriptor.setDefaultRootElement("document-preservation-policy"); |
| |
| XMLCompositeObjectMapping nodeOrderingPolicyMapping = new XMLCompositeObjectMapping(); |
| nodeOrderingPolicyMapping.setReferenceClass(NodeOrderingPolicyConfig.class); |
| nodeOrderingPolicyMapping.setAttributeName("m_nodeOrderingPolicy"); |
| nodeOrderingPolicyMapping.setGetMethodName("getNodeOrderingPolicy"); |
| nodeOrderingPolicyMapping.setSetMethodName("setNodeOrderingPolicy"); |
| nodeOrderingPolicyMapping.setXPath("node-ordering-policy"); |
| descriptor.addMapping(nodeOrderingPolicyMapping); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(DescriptorLevelDocumentPreservationPolicyConfig.class, "descriptor-level-document-preservation-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(NoDocumentPreservationPolicyConfig.class, "no-document-preservation-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(XMLBinderPolicyConfig.class, "xml-binder-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildDescriptorLevelDocumentPreservationPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DescriptorLevelDocumentPreservationPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(DocumentPreservationPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNoDocumentPreservationPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NoDocumentPreservationPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(DocumentPreservationPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildXMLBinderPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(XMLBinderPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(DocumentPreservationPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildNodeOrderingPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NodeOrderingPolicyConfig.class); |
| |
| descriptor.getInheritancePolicy().setClassIndicatorField(new XMLField("@xsi:type")); |
| descriptor.getInheritancePolicy().addClassIndicator(AppendNewElementsOrderingPolicyConfig.class, "append-new-elements-ordering-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(IgnoreNewElementsOrderingPolicyConfig.class, "ignore-new-elements-ordering-policy"); |
| descriptor.getInheritancePolicy().addClassIndicator(RelativePositionOrderingPolicyConfig.class, "relative-position-ordering-policy"); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildAppendNewElementsOrderingPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(AppendNewElementsOrderingPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(NodeOrderingPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildIgnoreNewElementsOrderingPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(IgnoreNewElementsOrderingPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(NodeOrderingPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| protected ClassDescriptor buildRelativePositionOrderingPolicyConfigDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(RelativePositionOrderingPolicyConfig.class); |
| descriptor.getInheritancePolicy().setParentClass(NodeOrderingPolicyConfig.class); |
| |
| return descriptor; |
| } |
| |
| } |