blob: e5a081c83d48f3598043544bfea06436018499ef [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.olingo.odata2.jpa.processor.core.mock.data;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.UUID;
import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock.JPARelatedTypeMock;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock.JPATypeEmbeddableMock;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock.JPATypeEmbeddableMock2;
import org.easymock.EasyMock;
public class ODataEntryMockUtil {
public static final int VALUE_MINT = 20;
public static Calendar VALUE_DATE_TIME = null;
public static byte[] VALUE_BLOB = null;
public static final String VALUE_CLOB = "ABC";
public static final String VALUE_C = "D";
public static final String VALUE_CARRAY = "EFG";
public static final String VALUE_CHAR = "I";
public static final String VALUE_CHARARRAY = "LMN";
public static final String VALUE_MSTRING = "Mock";
public static final long VALUE_MLONG = 1234567890L;
public static final double VALUE_MDOUBLE = 20.12;
public static final byte VALUE_MBYTE = 0XA;
public static final byte[] VALUE_MBYTEARRAY = new byte[] { 0XA, 0XB };
public static final float VALUE_MFLOAT = 2.00F;
public static final UUID VALUE_UUID = UUID.fromString("38400000-8cf0-11bd-b23e-10b96e4ef00d");
public static final short VALUE_SHORT = 2;
public static final JPATypeMock.JPATypeMockEnum VALUE_ENUM = JPATypeMock.JPATypeMockEnum.VALUE;
public static ODataEntry mockODataEntry(final String entityName) {
ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class);
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryProperties(entityName)).anyTimes();
enhanceMockODataEntry(oDataEntry, false, new ArrayList<String>());
EasyMock.replay(oDataEntry);
return oDataEntry;
}
public static ODataEntry mockODataEntryWithComplexType(final String entityName) {
ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class);
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithComplexType(entityName))
.anyTimes();
enhanceMockODataEntry(oDataEntry, false, new ArrayList<String>());
EasyMock.replay(oDataEntry);
return oDataEntry;
}
public static Map<String, Object> mockODataEntryProperties(final String entityName) {
Map<String, Object> propertyMap = new HashMap<String, Object>();
if (entityName.equals(JPATypeMock.ENTITY_NAME)) {
propertyMap.put(JPATypeMock.PROPERTY_NAME_MINT, VALUE_MINT);
propertyMap.put(JPATypeMock.PROPERTY_NAME_ENUM, "VALUE");
VALUE_DATE_TIME = Calendar.getInstance(TimeZone.getDefault());
VALUE_DATE_TIME.set(2013, 1, 1, 1, 1, 1);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MDATETIME, VALUE_DATE_TIME);
VALUE_BLOB = VALUE_MBYTEARRAY;
propertyMap.put(JPATypeMock.PROPERTY_NAME_MBLOB, VALUE_BLOB);
propertyMap.put(JPATypeMock.PROPERTY_NAME_CLOB, VALUE_CLOB);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MC, VALUE_C);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MCARRAY, VALUE_CARRAY);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MCHAR, VALUE_CHAR);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MCHARARRAY, VALUE_CHARARRAY);
propertyMap.put(JPATypeMock.PROPERTY_NAME_MSTRING, VALUE_MSTRING);
} else if (entityName.equals(JPARelatedTypeMock.ENTITY_NAME)) {
propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MLONG, VALUE_MLONG);
propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MDOUBLE, VALUE_MDOUBLE);
propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MBYTE, VALUE_MBYTE);
propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MBYTEARRAY, VALUE_MBYTEARRAY);
} else if (entityName.equals(JPATypeEmbeddableMock.ENTITY_NAME)) {
propertyMap.put(JPATypeEmbeddableMock.PROPERTY_NAME_MSHORT, VALUE_SHORT);
propertyMap.put(JPATypeEmbeddableMock.PROPERTY_NAME_MEMBEDDABLE,
mockODataEntryProperties(JPATypeEmbeddableMock2.ENTITY_NAME));
} else if (entityName.equals(JPATypeEmbeddableMock2.ENTITY_NAME)) {
propertyMap.put(JPATypeEmbeddableMock2.PROPERTY_NAME_MFLOAT, VALUE_MFLOAT);
propertyMap.put(JPATypeEmbeddableMock2.PROPERTY_NAME_MUUID, VALUE_UUID);
}
return propertyMap;
}
public static Map<String, Object> mockODataEntryPropertiesWithComplexType(final String entityName) {
Map<String, Object> propertyMap = mockODataEntryProperties(entityName);
propertyMap
.put(JPATypeMock.PROPERTY_NAME_MCOMPLEXTYPE, mockODataEntryProperties(JPATypeEmbeddableMock.ENTITY_NAME));
return propertyMap;
}
public static Map<String, Object> mockODataEntryPropertiesWithInline(final String entityName) {
Map<String, Object> propertyMap = mockODataEntryProperties(entityName);
List<ODataEntry> relatedEntries = new ArrayList<ODataEntry>();
relatedEntries.add(mockODataEntry(JPARelatedTypeMock.ENTITY_NAME));
ODataFeed feed = EasyMock.createMock(ODataFeed.class);
EasyMock.expect(feed.getEntries()).andReturn(relatedEntries);
EasyMock.replay(feed);
propertyMap.put(JPATypeMock.NAVIGATION_PROPERTY_X, feed);
return propertyMap;
}
public static ODataEntry mockODataEntryWithInline(final String entityName) {
ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class);
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithInline(entityName)).anyTimes();
if (entityName.equals(JPATypeMock.ENTITY_NAME)) {
List<String> links = new ArrayList<String>();
links.add(JPATypeMock.ENTITY_NAME + "(" + ODataEntryMockUtil.VALUE_MINT + ")/"
+ JPATypeMock.NAVIGATION_PROPERTY_X);
enhanceMockODataEntry(oDataEntry, true, links);
} else {
enhanceMockODataEntry(oDataEntry, false, new ArrayList<String>());
}
EasyMock.replay(oDataEntry);
return oDataEntry;
}
private static void
enhanceMockODataEntry(final ODataEntry oDataEntry, final boolean hasInline, final List<String> associationURIs) {
EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(hasInline).anyTimes();
EntryMetadata entryMetadata = EasyMock.createMock(EntryMetadata.class);
if (hasInline) {
EasyMock.expect(entryMetadata.getAssociationUris(JPATypeMock.NAVIGATION_PROPERTY_X)).andReturn(associationURIs)
.anyTimes();
EasyMock.expect(entryMetadata.getAssociationUris(JPATypeMock.NAVIGATION_PROPERTY_XS)).andReturn(
new ArrayList<String>())
.anyTimes();
} else {
EasyMock.expect(entryMetadata.getAssociationUris(EasyMock.isA(String.class))).andReturn(associationURIs)
.anyTimes();
}
EasyMock.replay(entryMetadata);
EasyMock.expect(oDataEntry.getMetadata()).andReturn(entryMetadata).anyTimes();
}
}