Project

General

Profile

« Previous | Next » 

Revision c6a0721d

Added by Andreas Müller almost 8 years ago

  • ID c6a0721db1da86894a25afad447639cf60cb78a0
  • Parent ed77d49a

Preliminary changes for FK problem on sourcedObj_id using common base
class #5534, later reverted due to #5743

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImpl.java
294 294
			makePropertyType(result, referencedClass, sessionFactory, cdmClass, elType, propertyName, true);
295 295
		}else if (propertyType.isAnyType()){
296 296
//			AnyType anyType = (AnyType)propertyType;
297
			Field field = cdmClass.getDeclaredField(propertyName);
297
			Field field = getDeclaredFieldRecursive(cdmClass, propertyName);
298 298
			Class<?> returnType = field.getType();
299 299
			if (returnType.isInterface()){
300 300
				logger.debug("There is an interface");
......
334 334

  
335 335
	}
336 336

  
337
	private boolean makeSingleProperty(Class<?> itemClass, Class<?> type, String propertyName, Class cdmClass, Set<ReferenceHolder> result,/*CdmBase item,*/ boolean isCollection){
337
	/**
338
     * @param cdmClass
339
     * @param propertyName
340
     * @return
341
     */
342
    private Field getDeclaredFieldRecursive(Class<? extends CdmBase> cdmClass, String propertyName) {
343
        for (Field field : cdmClass.getDeclaredFields()){
344
            if (field.getName().equals(propertyName)){
345
                return field;
346
            }
347
        }
348
        Class<?> superClass = cdmClass.getSuperclass();
349
        if (superClass == Object.class){
350
            throw new IllegalStateException("Field not found in class hierarchy: " + propertyName);
351
        }else{
352
            return getDeclaredFieldRecursive((Class<? extends CdmBase>)superClass, propertyName);
353
        }
354
    }
355

  
356
    private boolean makeSingleProperty(Class<?> itemClass, Class<?> type, String propertyName, Class cdmClass, Set<ReferenceHolder> result,/*CdmBase item,*/ boolean isCollection){
338 357
//			String fieldName = StringUtils.rightPad(propertyName, 30);
339 358
//			String className = StringUtils.rightPad(cdmClass.getSimpleName(), 30);
340 359
//			String returnTypeName = StringUtils.rightPad(type.getSimpleName(), 30);

Also available in: Unified diff