/*******************************************************************************
* Copyright (c) 1998, 2015 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 v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.xml;
import java.util.List;
import org.eclipse.persistence.tools.workbench.mappingsmodel.MWDataField;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWReturningPolicyInsertFieldReturnOnlyFlag;
import org.eclipse.persistence.tools.workbench.mappingsmodel.schema.MWSchemaContextComponent;
import org.eclipse.persistence.tools.workbench.mappingsmodel.xml.MWXmlField;
import org.eclipse.persistence.tools.workbench.mappingsmodel.xml.MWXpathContext;
import org.eclipse.persistence.tools.workbench.mappingsmodel.xml.MWXpathSpec;
import org.eclipse.persistence.tools.workbench.utility.node.Node;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping;
import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;
public final class MWEisReturningPolicyInsertFieldReturnOnlyFlag
extends MWReturningPolicyInsertFieldReturnOnlyFlag
implements MWXpathContext
{
private MWXmlField field;
// ********** constructors/initialization **********
/** Default constructor - for TopLink use only */
private MWEisReturningPolicyInsertFieldReturnOnlyFlag() {
super();
}
MWEisReturningPolicyInsertFieldReturnOnlyFlag(MWEisReturningPolicy parent) {
super(parent);
}
protected void initialize(Node parent) {
super.initialize(parent);
this.field = new MWXmlField(this);
}
protected void addChildrenTo(List list) {
super.addChildrenTo(list);
list.add(this.field);
}
// ********** MWReturningPolicyInsertFieldReturnOnlyFlag implementation **********
public MWDataField getField() {
return this.field;
}
// ********** XML field **********
public MWXmlField getXmlField() {
return this.field;
}
// ********** MWXpathContext implementation **********
public MWSchemaContextComponent schemaContext(MWXmlField xmlField) {
return this.eisDescriptor().getSchemaContext();
}
public MWXpathSpec xpathSpec(MWXmlField xmlField) {
return this.buildXpathSpec();
}
private MWXpathSpec buildXpathSpec() {
return new MWXpathSpec() {
public boolean mayUseCollectionData() {
return false;
}
public boolean mayUseComplexData() {
return false;
}
public boolean mayUseSimpleData() {
return true;
}
};
}
// ********** problems **********
protected void addProblemsTo(List currentProblems) {
super.addProblemsTo(currentProblems);
// TODO ????
}
// ********** Convenience **********
public MWEisReturningPolicy eisReturningPolicy() {
return (MWEisReturningPolicy) this.getParent();
}
private MWEisDescriptor eisDescriptor() {
return this.eisReturningPolicy().eisDescriptor();
}
// ********** TopLink methods **********
public static XMLDescriptor buildDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClass(MWEisReturningPolicyInsertFieldReturnOnlyFlag.class);
XMLCompositeObjectMapping fieldMapping = new XMLCompositeObjectMapping();
fieldMapping.setReferenceClass(MWXmlField.class);
fieldMapping.setAttributeName("field");
fieldMapping.setGetMethodName("getFieldForTopLink");
fieldMapping.setSetMethodName("setFieldForTopLink");
fieldMapping.setXPath("field");
descriptor.addMapping(fieldMapping);
((XMLDirectMapping) descriptor.addDirectMapping("returnOnly", "return-only/text()")).setNullValue(Boolean.FALSE);
return descriptor;
}
private MWXmlField getFieldForTopLink() {
return (this.field.isSpecified()) ? this.field : null;
}
private void setFieldForTopLink(MWXmlField field) {
this.field = ((field == null) ? new MWXmlField(this) : field);
}
}