private static List<Object> convertTypesToInstances(Type[] parameterTypes, SpecimenContext context) { List<Object> parameters = new ArrayList<Object>(); for (Type parameterType : parameterTypes) { Object parameterInstance = context.resolve(parameterType); if (parameterInstance instanceof NoSpecimen) return null; parameters.add(parameterInstance); } return parameters; }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(ReadableDuration.class)) return new NoSpecimen(); return context.resolve(Duration.class); } }
private Object createArrayWithContentsOfType(SpecimenContext context, Class componentType) { List contents = (List)context.resolve(new MultipleRequest(componentType)); Object array = Array.newInstance(componentType, contents.size()); for(int i = 0; i < contents.size(); i++) { Array.set(array, i, contents.get(i)); } return array; }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(ReadablePartial.class)) return new NoSpecimen(); return context.resolve(Partial.class); } }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(baseClass)) { return new NoSpecimen(); } return context.resolve(this.subClass); } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request.equals(ReadablePeriod.class) || request.equals(ReadWritablePeriod.class))) return new NoSpecimen(); DateTime dateA = (DateTime) context.resolve(DateTime.class); DateTime dateB = (DateTime) context.resolve(DateTime.class); if (dateA.isBefore(dateB)) return new MutablePeriod(dateA, dateB); else return new MutablePeriod(dateB, dateA); } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request.equals(ReadableInstant.class) || request.equals(ReadWritableInstant.class) || request.equals(ReadableDateTime.class) || request.equals(ReadWritableDateTime.class))) { return new NoSpecimen(); } DateTime date = (DateTime) context.resolve(DateTime.class); return new MutableDateTime(date); } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request.equals(ReadableInterval.class) || request.equals(ReadWritableInterval.class))) return new NoSpecimen(); Interval interval = (Interval) context.resolve(Interval.class); return new MutableInterval(interval); } }
private void setupStubPropertiesOnMock(Object mock, Class<?> requestClass, SpecimenContext specimenContext) { Method[] methods = requestClass.getMethods(); for (Method method : methods) { Boolean isAGetterProperty = PropertyUtil.isMethodAGetterProperty(method); if (!isAGetterProperty) continue; Object propertySpecimen = specimenContext.resolve(method.getGenericReturnType()); if (propertySpecimen instanceof NoSpecimen) continue; try { when(method.invoke(mock)).thenReturn(propertySpecimen); } catch (Exception e) { throw new ObjectCreationException(String.format("Unable to create mock of %s", requestClass), e); } } } }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(Calendar.class)) { return new NoSpecimen(); } Object dateResult = context.resolve(Date.class); if (dateResult instanceof NoSpecimen) { return new NoSpecimen(); } Date date = (Date) dateResult; GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(date); return calendar; } }
private Map createMap(SpecimenContext context, Class mapClass, List<KeyValuePair> resolved) { Map mapInstance = (Map) context.resolve(mapClass); for (KeyValuePair entry : resolved) { mapInstance.put(entry.getKey(), entry.getValue()); } return mapInstance; }
private Object buildArrayList(MultipleRequest multipleRequest, SpecimenContext context) { ArrayList<Object> list = new ArrayList<Object>(); for (int i = 0; i < multipleCount.getCount(); i++) { Object innerRequest = multipleRequest.getInnerRequest(); Object result = context.resolve(innerRequest); if (result instanceof NoSpecimen) { return new NoSpecimen(); } list.add(result); } return list; } }
private void populateSetters(Object request, Object specimen, SpecimenContext specimenContext) { Class specimenClass = specimen.getClass(); Method[] methods = specimenClass.getMethods(); for (Method method : methods) { if (PropertyUtil.isMethodASetterProperty(method, specimenClass)) { MethodRequest methodRequest = getGenericMethodRequest(request, method); Object propertySpecimen = specimenContext.resolve(methodRequest); if (!(propertySpecimen instanceof NoSpecimen)) { trySetProperty(specimen, method, propertySpecimen); } } } }
private void populateFields(Object request, Object specimen, SpecimenContext specimenContext) { Class specimenClass = specimen.getClass(); Field[] fields = specimenClass.getFields(); for (Field field : fields) { if (isSettable(field)) { FieldRequest fieldRequest = getGenericFieldRequest(request, field); Object propertySpecimen = specimenContext.resolve(fieldRequest); if (!(propertySpecimen instanceof NoSpecimen)) { trySetField(specimen, field, propertySpecimen); } } } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request instanceof SpecimenType)) { return new NoSpecimen(); } SpecimenType type = (SpecimenType) request; if (!BaseDateTime.class.isAssignableFrom(type.getRawType())) { return new NoSpecimen(); } try { Date date = (Date) context.resolve(Date.class); long instant = date.getTime(); DateTimeZone timeZone = (DateTimeZone)context.resolve(DateTimeZone.class); return type.getRawType().getDeclaredConstructor(long.class, DateTimeZone.class).newInstance(instant, timeZone); } catch (Exception e) { e.printStackTrace(); return new NoSpecimen(); } } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request instanceof Field)) { return new NoSpecimen(); } Field field = (Field) request; Type genericType = field.getGenericType(); SpecimenType specimenType = SpecimenType.of(genericType); String fieldName = field.getName(); Object actualRequest = getActualRequest(field, specimenType); return context.resolve(new SeededRequest(fieldName, actualRequest)); }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(URI.class)) { return new NoSpecimen(); } Object specimen = context.resolve(URL.class); if (!(specimen instanceof URL)) { return new NoSpecimen(); } URL url = (URL) specimen; try { return url.toURI(); } catch (URISyntaxException e) { return new NoSpecimen(); } } }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(Partial.class)) return new NoSpecimen(); DateTime date = (DateTime) context.resolve(DateTime.class); return new Partial(fieldTypes, new int[]{ date.getYear(), date.getMonthOfYear(), date.getDayOfMonth(), date.getHourOfDay(), date.getMinuteOfHour(), date.getSecondOfMinute()}); } }
@Override public Object create(Object request, SpecimenContext context) { if (!(request instanceof SpecimenType)) { return new NoSpecimen(); } SpecimenType type = (SpecimenType) request; if (!BaseLocal.class.isAssignableFrom(type.getRawType())) { return new NoSpecimen(); } Date date = (Date) context.resolve(Date.class); long instant = date.getTime(); try { return type.getRawType().getDeclaredConstructor(long.class).newInstance(instant); } catch (Exception e) { e.printStackTrace(); return new NoSpecimen(); } } }