/******************************************************************************* * Copyright 2013 SAP AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.sap.core.odata.api.ep.callback; import com.sap.core.odata.api.edm.EdmNavigationProperty; import com.sap.core.odata.api.ep.EntityProviderReadProperties; /** * A {@link ReadResult} represents an inlined navigation property which points to an entry or feed. * The {@link ReadResult} contains the {@link EntityProviderReadProperties} which were used for read, * the <code>navigationPropertyName</code>, the read/de-serialized inlined entity and information whether the inlined content * is a <code>feed</code> (multiplicity of <code>1..m</code>) or a single <code>entry</code> (multiplicity of <code>0..1</code> or <code>1..1</code>). * If inlined navigation property is <code>nullable</code> the {@link ReadResult} has the * <code>navigationPropertyName</code> and a <code>NULL</code> entry set. * * @author SAP AG */ public abstract class ReadResult { protected final EntityProviderReadProperties readProperties; protected final EdmNavigationProperty navigationProperty; /** * Constructor. * Parameters <b>MUST NOT BE NULL</b>. * * @param readProperties read properties which are used to read enclosing parent entity * @param navigationProperty emd navigation property information of found inline navigation property */ public ReadResult(final EntityProviderReadProperties readProperties, final EdmNavigationProperty navigationProperty) { this.readProperties = readProperties; this.navigationProperty = navigationProperty; } /** * @return read properties which were used to read enclosing parent entity */ public EntityProviderReadProperties getReadProperties() { return readProperties; } /** * @return emd navigation property information of found inline navigation property */ public EdmNavigationProperty getNavigationProperty() { return navigationProperty; } /** * Common access method to read result. * * @return an {@link com.sap.core.odata.api.ep.entry.ODataEntry ODataEntry} * for the case of an single read entry or a list of * {@link com.sap.core.odata.api.ep.entry.ODataEntry ODataEntry} * in the case of an read feed. */ public abstract Object getResult(); @Override public String toString() { return this.getClass().getSimpleName() + " [readProperties=" + readProperties + ", navigationProperty=" + navigationProperty + "]"; } /** * Return whether this entry is a <code>feed</code> (multiplicity of <code>1..m</code>) * or a single <code>entry</code> (multiplicity of <code>0..1</code> or <code>1..1</code>). * * @return <code>true</code> for a feed and <code>false</code> for an entry */ public abstract boolean isFeed(); }