| /* |
| * 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 |
| |
| package org.eclipse.persistence.dbws; |
| |
| //javase imports |
| // Java extension imports |
| import static javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI; |
| import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; |
| import static org.eclipse.persistence.internal.oxm.Constants.BOOLEAN_QNAME; |
| import static org.eclipse.persistence.internal.xr.sxf.SimpleXMLFormat.DEFAULT_SIMPLE_XML_FORMAT_TAG; |
| import static org.eclipse.persistence.internal.xr.sxf.SimpleXMLFormat.DEFAULT_SIMPLE_XML_TAG; |
| |
| import java.util.Iterator; |
| import java.util.Map; |
| import java.util.Vector; |
| |
| // EclipseLink imports |
| import org.eclipse.persistence.descriptors.ClassExtractor; |
| import org.eclipse.persistence.exceptions.DescriptorException; |
| import org.eclipse.persistence.internal.xr.Attachment; |
| import org.eclipse.persistence.internal.xr.BatchQueryOperation; |
| import org.eclipse.persistence.internal.xr.CollectionResult; |
| import org.eclipse.persistence.internal.xr.DeleteOperation; |
| import org.eclipse.persistence.internal.xr.InsertOperation; |
| import org.eclipse.persistence.internal.xr.JPQLQueryHandler; |
| import org.eclipse.persistence.internal.xr.NamedQueryHandler; |
| import org.eclipse.persistence.internal.xr.Operation; |
| import org.eclipse.persistence.internal.xr.Parameter; |
| import org.eclipse.persistence.internal.xr.ProcedureArgument; |
| import org.eclipse.persistence.internal.xr.ProcedureOutputArgument; |
| import org.eclipse.persistence.internal.xr.QNameTransformer; |
| import org.eclipse.persistence.internal.xr.QueryOperation; |
| import org.eclipse.persistence.internal.xr.Result; |
| import org.eclipse.persistence.internal.xr.SQLQueryHandler; |
| import org.eclipse.persistence.internal.xr.StoredFunctionQueryHandler; |
| import org.eclipse.persistence.internal.xr.StoredProcedureQueryHandler; |
| import org.eclipse.persistence.internal.xr.UpdateOperation; |
| import org.eclipse.persistence.internal.xr.XRServiceModel; |
| import org.eclipse.persistence.internal.xr.sxf.SimpleXMLFormat; |
| import org.eclipse.persistence.mappings.AttributeAccessor; |
| import org.eclipse.persistence.oxm.NamespaceResolver; |
| import org.eclipse.persistence.oxm.XMLDescriptor; |
| import org.eclipse.persistence.oxm.XMLField; |
| import org.eclipse.persistence.oxm.mappings.XMLChoiceCollectionMapping; |
| import org.eclipse.persistence.oxm.mappings.XMLChoiceObjectMapping; |
| 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.record.UnmarshalRecord; |
| import org.eclipse.persistence.sessions.DataRecord; |
| import org.eclipse.persistence.sessions.Project; |
| import org.eclipse.persistence.sessions.Session; |
| import org.xml.sax.Attributes; |
| |
| @SuppressWarnings({"serial", "rawtypes"}) |
| public class DBWSModelProject extends Project { |
| |
| public transient NamespaceResolver ns; |
| |
| public DBWSModelProject() { |
| setName("DBWSModelProject"); |
| |
| ns = new NamespaceResolver(); |
| ns.put("xsi", W3C_XML_SCHEMA_INSTANCE_NS_URI); |
| ns.put("xsd", W3C_XML_SCHEMA_NS_URI); |
| |
| addDescriptor(buildServiceDescriptor()); |
| addDescriptor(buildAttachmentDescriptor()); |
| addDescriptor(buildResultDescriptor()); |
| addDescriptor(buildCollectionResultDescriptor()); |
| addDescriptor(buildParameterDescriptor()); |
| addDescriptor(buildSimpleXMLFormatDescriptor()); |
| addDescriptor(buildNamedQueryDescriptor()); |
| addDescriptor(buildSqlQueryDescriptor()); |
| addDescriptor(buildJpqlQueryDescriptor()); |
| addDescriptor(buildStoredProcedureQueryDescriptor()); |
| addDescriptor(buildProcedureArgumentDescriptor()); |
| addDescriptor(buildProcedureOutputArgumentDescriptor()); |
| addDescriptor(buildStoredFunctionQueryDescriptor()); |
| addDescriptor(buildQueryDescriptor()); |
| addDescriptor(buildInsertDescriptor()); |
| addDescriptor(buildDeleteDescriptor()); |
| addDescriptor(buildUpdateDescriptor()); |
| addDescriptor(buildBatchQueryDescriptor()); |
| |
| for (Iterator descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) { |
| XMLDescriptor descriptor = (XMLDescriptor)descriptors.next(); |
| descriptor.setNamespaceResolver(ns); |
| } |
| } |
| |
| protected XMLDescriptor buildServiceDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DBWSModel.class); |
| descriptor.setDefaultRootElement("dbws"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLDirectMapping sessionFile = new XMLDirectMapping(); |
| sessionFile.setAttributeName("sessionsFile"); |
| sessionFile.setXPath("sessions-file/text()"); |
| descriptor.addMapping(sessionFile); |
| |
| XMLChoiceCollectionMapping operationsMapping = new XMLChoiceCollectionMapping(); |
| operationsMapping.setAttributeName("operations"); |
| operationsMapping.setAttributeAccessor(new AttributeAccessor() { |
| @Override |
| public Object getAttributeValueFromObject(Object object) { |
| return ((XRServiceModel)object).getOperationsList(); |
| } |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) { |
| Vector v = (Vector)value; |
| XRServiceModel dbwsModel = (XRServiceModel)object; |
| Map<String, Operation> operations = dbwsModel.getOperations(); |
| for (Iterator i = v.iterator(); i.hasNext();) { |
| Object obj = i.next(); |
| if (obj instanceof Operation) { |
| Operation op = (Operation)obj; |
| operations.put(op.getName(), op); |
| } |
| } |
| } |
| }); |
| operationsMapping.addChoiceElement("insert", InsertOperation.class); |
| operationsMapping.addChoiceElement("query", QueryOperation.class); |
| operationsMapping.addChoiceElement("update", UpdateOperation.class); |
| operationsMapping.addChoiceElement("delete", DeleteOperation.class); |
| operationsMapping.addChoiceElement("batch-sql-query", BatchQueryOperation.class); |
| descriptor.addMapping(operationsMapping); |
| return descriptor; |
| } |
| |
| // query |
| // |
| // name,parameter*,result,named-query|sql|jpql|stored-procedure|stored-function |
| protected XMLDescriptor buildQueryDescriptor() { |
| |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(QueryOperation.class); |
| descriptor.setDefaultRootElement("query"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLCompositeCollectionMapping parameters = new XMLCompositeCollectionMapping(); |
| parameters.setAttributeName("parameters"); |
| parameters.setReferenceClass(Parameter.class); |
| parameters.setXPath("parameter"); |
| descriptor.addMapping(parameters); |
| |
| XMLCompositeObjectMapping resultMapping = new XMLCompositeObjectMapping(); |
| resultMapping.setAttributeName("result"); |
| resultMapping.setReferenceClass(Result.class); |
| resultMapping.setXPath( "result"); |
| descriptor.addMapping(resultMapping); |
| |
| XMLChoiceObjectMapping queryHandlerMapping = new XMLChoiceObjectMapping(); |
| queryHandlerMapping.setAttributeName("queryHandler"); |
| queryHandlerMapping.addChoiceElement("jpql", JPQLQueryHandler.class); |
| queryHandlerMapping.addChoiceElement("named-query", NamedQueryHandler.class); |
| queryHandlerMapping.addChoiceElement("sql", SQLQueryHandler.class); |
| queryHandlerMapping.addChoiceElement("stored-procedure", |
| StoredProcedureQueryHandler.class); |
| queryHandlerMapping.addChoiceElement("stored-function", |
| StoredFunctionQueryHandler.class); |
| descriptor.addMapping(queryHandlerMapping); |
| |
| return descriptor; |
| } |
| |
| /** |
| * Build an XMLDescriptor for BatchQueryOperation. |
| */ |
| protected XMLDescriptor buildBatchQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(BatchQueryOperation.class); |
| descriptor.setDefaultRootElement("batch-sql-query"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLCompositeDirectCollectionMapping statementsMapping = new XMLCompositeDirectCollectionMapping(); |
| statementsMapping.setAttributeName("batchSql"); |
| XMLField f1 = new XMLField("batch-statement/text()"); |
| f1.setIsCDATA(true); |
| statementsMapping.setField(f1); |
| descriptor.addMapping(statementsMapping); |
| return descriptor; |
| } |
| |
| // parameter |
| // |
| // name,type |
| protected XMLDescriptor buildParameterDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Parameter.class); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLTransformationMapping type = new XMLTransformationMapping(); |
| type.setAttributeName("type"); |
| QNameTransformer qNameTransformer = new QNameTransformer("type/text()"); |
| type.addFieldTransformer("type/text()", qNameTransformer); |
| type.setAttributeTransformer(qNameTransformer); |
| descriptor.addMapping(type); |
| |
| XMLDirectMapping optional = new XMLDirectMapping(); |
| optional.setAttributeName("optional"); |
| optional.setXPath("@optional"); |
| optional.setNullValue(false); |
| descriptor.addMapping(optional); |
| |
| return descriptor; |
| } |
| |
| // attachment |
| // |
| // mime-type |
| protected XMLDescriptor buildAttachmentDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Attachment.class); |
| |
| XMLDirectMapping mimeType = new XMLDirectMapping(); |
| mimeType.setAttributeName("mimeType"); |
| mimeType.setXPath("mime-type/text()"); |
| descriptor.addMapping(mimeType); |
| |
| return descriptor; |
| } |
| |
| // result |
| // |
| // type|attachment |
| protected XMLDescriptor buildResultDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(Result.class); |
| descriptor.setDefaultRootElement("result"); |
| |
| XMLTransformationMapping type = new XMLTransformationMapping(); |
| type.setAttributeName("type"); |
| QNameTransformer qNameTransformer = new QNameTransformer("type/text()"); |
| type.addFieldTransformer("type/text()", qNameTransformer); |
| type.setAttributeTransformer(qNameTransformer); |
| descriptor.addMapping(type); |
| |
| XMLCompositeObjectMapping attachment = new XMLCompositeObjectMapping(); |
| attachment.setAttributeName("attachment"); |
| attachment.setXPath("attachment"); |
| attachment.setReferenceClass(Attachment.class); |
| descriptor.addMapping(attachment); |
| |
| XMLCompositeObjectMapping sxf = new XMLCompositeObjectMapping(); |
| sxf.setAttributeName("simpleXMLFormat"); |
| sxf.setXPath("simple-xml-format"); |
| sxf.setReferenceClass(SimpleXMLFormat.class); |
| descriptor.addMapping(sxf); |
| |
| XMLDirectMapping isCollection = new XMLDirectMapping(); |
| isCollection.setAttributeAccessor(new AttributeAccessor() { |
| |
| @Override |
| public String getAttributeName() { |
| return "isCollection"; |
| } |
| @Override |
| public Object getAttributeValueFromObject(Object object) throws DescriptorException { |
| if (object instanceof CollectionResult) { |
| return Boolean.TRUE; |
| } |
| return null; |
| } |
| @Override |
| public void setAttributeValueInObject(Object object, Object value) |
| throws DescriptorException { |
| } |
| }); |
| isCollection.setXPath("@isCollection"); |
| descriptor.addMapping(isCollection); |
| |
| XMLField isColl = new XMLField("@isCollection"); |
| isColl.setSchemaType(BOOLEAN_QNAME); |
| descriptor.getInheritancePolicy().setClassIndicatorField(isColl); |
| descriptor.getInheritancePolicy().setClassExtractor(new ClassExtractor() { |
| @Override |
| @SuppressWarnings({"unchecked"}) |
| public <T> Class<T> extractClassFromRow(DataRecord dataRecord, Session session) { |
| Class<?> clz = Result.class; |
| UnmarshalRecord uRecord = (UnmarshalRecord) dataRecord; |
| Attributes attrs = uRecord.getAttributes(); |
| if (attrs != null) { |
| for (int i = 0, l = attrs.getLength(); i < l; i++) { |
| String attributeName = attrs.getQName(i); |
| if (attributeName.equals("isCollection")) { |
| String value = attrs.getValue(i); |
| if (value.equalsIgnoreCase("true")) { |
| clz = CollectionResult.class; |
| break; |
| } |
| } |
| } |
| } |
| return (Class<T>) clz; |
| } |
| }); |
| |
| XMLDirectMapping jdbcTypeMapping = new XMLDirectMapping(); |
| jdbcTypeMapping.setAttributeName("jdbcType"); |
| jdbcTypeMapping.setXPath("@jdbcType"); |
| descriptor.addMapping(jdbcTypeMapping); |
| return descriptor; |
| } |
| |
| // result isCollection="true" |
| // |
| protected XMLDescriptor buildCollectionResultDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(CollectionResult.class); |
| descriptor.getInheritancePolicy().setParentClass(Result.class); |
| descriptor.setDefaultRootElement("result"); |
| |
| return descriptor; |
| } |
| |
| // simple-xml-format |
| // |
| // simple-xml-format-tag?,simple-xml-tag? |
| protected XMLDescriptor buildSimpleXMLFormatDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(SimpleXMLFormat.class); |
| descriptor.setDefaultRootElement(DEFAULT_SIMPLE_XML_FORMAT_TAG); |
| |
| XMLDirectMapping simpleXMLFormatTag = new XMLDirectMapping(); |
| simpleXMLFormatTag.setAttributeName("simpleXMLFormatTag"); |
| simpleXMLFormatTag.setXPath(DEFAULT_SIMPLE_XML_FORMAT_TAG + "-tag/text()"); |
| descriptor.addMapping(simpleXMLFormatTag); |
| |
| XMLDirectMapping xmlTag = new XMLDirectMapping(); |
| xmlTag.setAttributeName("xmlTag"); |
| xmlTag.setXPath(DEFAULT_SIMPLE_XML_TAG + "-tag/text()"); |
| descriptor.addMapping(xmlTag); |
| |
| return descriptor; |
| } |
| |
| // named-query |
| // |
| // name,descriptor? |
| protected XMLDescriptor buildNamedQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(NamedQueryHandler.class); |
| descriptor.setDefaultRootElement("named-query"); |
| |
| XMLDirectMapping queryName = new XMLDirectMapping(); |
| queryName.setAttributeName("name"); |
| queryName.setXPath("name/text()"); |
| descriptor.addMapping(queryName); |
| |
| XMLDirectMapping alias = new XMLDirectMapping(); |
| alias.setAttributeName("descriptor"); |
| alias.setXPath("descriptor/text()"); |
| descriptor.addMapping(alias); |
| |
| return descriptor; |
| } |
| |
| // sql <![CDATA[ ... ]]> |
| protected XMLDescriptor buildSqlQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(SQLQueryHandler.class); |
| descriptor.setDefaultRootElement("sql"); |
| |
| XMLDirectMapping queryName = new XMLDirectMapping(); |
| queryName.setAttributeName("sqlString"); |
| queryName.setXPath("text()"); |
| queryName.setIsCDATA(true); |
| descriptor.addMapping(queryName); |
| |
| return descriptor; |
| } |
| |
| // jpql <![CDATA[ ... ]]> |
| protected XMLDescriptor buildJpqlQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(JPQLQueryHandler.class); |
| descriptor.setDefaultRootElement("jpql"); |
| |
| XMLDirectMapping queryName = new XMLDirectMapping(); |
| queryName.setAttributeName("jpqlString"); |
| queryName.setXPath("text()"); |
| queryName.setIsCDATA(true); |
| descriptor.addMapping(queryName); |
| |
| return descriptor; |
| } |
| |
| // stored-procedure |
| // |
| // name, in-argument*, inout-argument*, out-argument* |
| protected XMLDescriptor buildStoredProcedureQueryDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(StoredProcedureQueryHandler.class); |
| descriptor.setDefaultRootElement("stored-procedure"); |
| |
| XMLDirectMapping procedureName = new XMLDirectMapping(); |
| procedureName.setAttributeName("name"); |
| procedureName.setXPath("name/text()"); |
| descriptor.addMapping(procedureName); |
| |
| XMLCompositeCollectionMapping inArguments = new XMLCompositeCollectionMapping(); |
| inArguments.setAttributeName("inArguments"); |
| inArguments.setXPath("in-argument"); |
| inArguments.setReferenceClass(ProcedureArgument.class); |
| descriptor.addMapping(inArguments); |
| |
| XMLCompositeCollectionMapping inOutArguments = new XMLCompositeCollectionMapping(); |
| inOutArguments.setAttributeName("inOutArguments"); |
| inOutArguments.setXPath("inout-argument"); |
| inOutArguments.setReferenceClass(ProcedureOutputArgument.class); |
| descriptor.addMapping(inOutArguments); |
| |
| XMLCompositeCollectionMapping outArguments = new XMLCompositeCollectionMapping(); |
| outArguments.setAttributeName("outArguments"); |
| outArguments.setXPath("out-argument"); |
| outArguments.setReferenceClass(ProcedureOutputArgument.class); |
| descriptor.addMapping(outArguments); |
| |
| return descriptor; |
| } |
| |
| protected XMLDescriptor buildStoredFunctionQueryDescriptor() { |
| |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(StoredFunctionQueryHandler.class); |
| descriptor.setDefaultRootElement("stored-function"); |
| |
| XMLDirectMapping procedureName = new XMLDirectMapping(); |
| procedureName.setAttributeName("name"); |
| procedureName.setXPath("name/text()"); |
| descriptor.addMapping(procedureName); |
| |
| XMLCompositeCollectionMapping inArguments = new XMLCompositeCollectionMapping(); |
| inArguments.setAttributeName("inArguments"); |
| inArguments.setXPath("in-argument"); |
| inArguments.setReferenceClass(ProcedureArgument.class); |
| descriptor.addMapping(inArguments); |
| |
| XMLCompositeCollectionMapping inOutArguments = new XMLCompositeCollectionMapping(); |
| inOutArguments.setAttributeName("inOutArguments"); |
| inOutArguments.setXPath("inout-argument"); |
| inOutArguments.setReferenceClass(ProcedureOutputArgument.class); |
| descriptor.addMapping(inOutArguments); |
| |
| XMLCompositeCollectionMapping outArguments = new XMLCompositeCollectionMapping(); |
| outArguments.setAttributeName("outArguments"); |
| outArguments.setXPath("out-argument"); |
| outArguments.setReferenceClass(ProcedureOutputArgument.class); |
| descriptor.addMapping(outArguments); |
| |
| return descriptor; |
| } |
| |
| // in-argument |
| // |
| // name, parameter? |
| protected XMLDescriptor buildProcedureArgumentDescriptor() { |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(ProcedureArgument.class); |
| |
| XMLDirectMapping argumentName = new XMLDirectMapping(); |
| argumentName.setAttributeName("name"); |
| argumentName.setXPath("name"); |
| descriptor.addMapping(argumentName); |
| |
| XMLDirectMapping parameterName = new XMLDirectMapping(); |
| parameterName.setAttributeName("parameterName"); |
| parameterName.setXPath("parameter"); |
| descriptor.addMapping(parameterName); |
| |
| XMLDirectMapping complexTypeName = new XMLDirectMapping(); |
| complexTypeName.setAttributeName("complexTypeName"); |
| complexTypeName.setXPath("complex-type"); |
| descriptor.addMapping(complexTypeName); |
| |
| XMLDirectMapping jdbcTypeMapping = new XMLDirectMapping(); |
| jdbcTypeMapping.setAttributeName("jdbcType"); |
| jdbcTypeMapping.setXPath("@jdbcType"); |
| descriptor.addMapping(jdbcTypeMapping); |
| return descriptor; |
| } |
| |
| // inout-argument and out-argument |
| // |
| // name, parameter?, type? |
| protected XMLDescriptor buildProcedureOutputArgumentDescriptor() { |
| |
| XMLDescriptor descriptor = buildProcedureArgumentDescriptor(); |
| descriptor.setJavaClass(ProcedureOutputArgument.class); |
| |
| XMLTransformationMapping resultType = new XMLTransformationMapping(); |
| resultType.setAttributeName("resultType"); |
| QNameTransformer qNameTransformer = new QNameTransformer("type/text()"); |
| resultType.addFieldTransformer("type/text()", qNameTransformer); |
| resultType.setAttributeTransformer(qNameTransformer); |
| descriptor.addMapping(resultType); |
| |
| return descriptor; |
| } |
| |
| // insert |
| // |
| // name, parameter |
| protected XMLDescriptor buildInsertDescriptor() { |
| |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(InsertOperation.class); |
| descriptor.setDefaultRootElement("insert"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLCompositeCollectionMapping parameters = new XMLCompositeCollectionMapping(); |
| parameters.setAttributeName("parameters"); |
| parameters.setReferenceClass(Parameter.class); |
| parameters.setXPath("parameter"); |
| descriptor.addMapping(parameters); |
| |
| return descriptor; |
| } |
| |
| // delete |
| // |
| // name, parameter |
| protected XMLDescriptor buildDeleteDescriptor() { |
| |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(DeleteOperation.class); |
| descriptor.setDefaultRootElement("delete"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLDirectMapping descriptorName = new XMLDirectMapping(); |
| descriptorName.setAttributeName("descriptorName"); |
| descriptorName.setXPath("descriptor-name/text()"); |
| descriptor.addMapping(descriptorName); |
| |
| XMLDirectMapping findByPKQuery = new XMLDirectMapping(); |
| findByPKQuery.setAttributeName("findByPKQuery"); |
| findByPKQuery.setXPath("find-by-pk-query/text()"); |
| descriptor.addMapping(findByPKQuery); |
| |
| XMLCompositeCollectionMapping parameters = new XMLCompositeCollectionMapping(); |
| parameters.setAttributeName("parameters"); |
| parameters.setReferenceClass(Parameter.class); |
| parameters.setXPath("parameter"); |
| descriptor.addMapping(parameters); |
| |
| return descriptor; |
| } |
| |
| // update |
| // |
| // name, parameter |
| protected XMLDescriptor buildUpdateDescriptor() { |
| |
| XMLDescriptor descriptor = new XMLDescriptor(); |
| descriptor.setJavaClass(UpdateOperation.class); |
| descriptor.setDefaultRootElement("update"); |
| |
| XMLDirectMapping name = new XMLDirectMapping(); |
| name.setAttributeName("name"); |
| name.setXPath("name/text()"); |
| descriptor.addMapping(name); |
| |
| XMLCompositeCollectionMapping parameters = new XMLCompositeCollectionMapping(); |
| parameters.setAttributeName("parameters"); |
| parameters.setReferenceClass(Parameter.class); |
| parameters.setXPath("parameter"); |
| descriptor.addMapping(parameters); |
| |
| return descriptor; |
| } |
| } |