Project

General

Profile

Download (2.57 KB) Statistics
| Branch: | Tag: | Revision:
1 88670522 Andreas Kohlbecker
// $Id$
2 cd7fb617 Andreas Kohlbecker
/**
3
 * Copyright (C) 2009 EDIT European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 * 
6
 * The contents of this file are subject to the Mozilla Public License Version
7
 * 1.1 See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9
10
package eu.etaxonomy.cdm.remote.json.processor;
11
12
import java.util.Set;
13
14 30416098 Andreas Kohlbecker
import org.apache.log4j.Logger;
15
import org.hibernate.proxy.HibernateProxy;
16
17 1a50811e Andreas Müller
import net.sf.json.processors.JsonBeanProcessorMatcher;
18 892efc69 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.common.CdmBase;
19 c483d275 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
20
import eu.etaxonomy.cdm.model.common.TermBase;
21 892efc69 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.description.FeatureNode;
22
import eu.etaxonomy.cdm.model.description.TextData;
23 3c3ab65a Andreas Kohlbecker
import eu.etaxonomy.cdm.model.media.Media;
24 be60c78d Andreas Kohlbecker
import eu.etaxonomy.cdm.model.name.NameRelationship;
25 30416098 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
26 892efc69 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
27 88670522 Andreas Kohlbecker
import eu.etaxonomy.cdm.model.taxon.Taxon;
28 be60c78d Andreas Kohlbecker
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
29 cd7fb617 Andreas Kohlbecker
30
/**
31 c6454853 Andreas Kohlbecker
 * can handle HibernateProxys
32
 * 
33 cd7fb617 Andreas Kohlbecker
 * @author a.kohlbecker
34
 *
35
 */
36 c6454853 Andreas Kohlbecker
public class CdmProxyBeanProcessorMatcher extends JsonBeanProcessorMatcher {
37 cd7fb617 Andreas Kohlbecker
38 c6454853 Andreas Kohlbecker
	public static final Logger logger = Logger.getLogger(CdmProxyBeanProcessorMatcher.class);
39 30416098 Andreas Kohlbecker
	
40 cd7fb617 Andreas Kohlbecker
	/* (non-Javadoc)
41
	 * @see net.sf.json.processors.JsonBeanProcessorMatcher#getMatch(java.lang.Class, java.util.Set)
42
	 */
43 c483d275 Andreas Kohlbecker
	@SuppressWarnings("unchecked")
44 cd7fb617 Andreas Kohlbecker
	@Override
45
	public Object getMatch(Class target, Set set) {
46 30416098 Andreas Kohlbecker
		
47
		
48
		if (HibernateProxy.class.isAssignableFrom(target)) {
49
			if(logger.isDebugEnabled()){
50
				logger.debug("Found HibernateProxy object of class " + target.getClass() + " returning " + HibernateProxy.class);
51
			}
52
			return HibernateProxy.class;
53
        }
54 c483d275 Andreas Kohlbecker
		if (Taxon.class.isAssignableFrom(target)) {
55 88670522 Andreas Kohlbecker
			return DEFAULT.getMatch(Taxon.class, set);
56
		}
57 c483d275 Andreas Kohlbecker
		if (TaxonNameBase.class.isAssignableFrom(target)) {
58 30416098 Andreas Kohlbecker
			return DEFAULT.getMatch(TaxonNameBase.class, set);
59 cd7fb617 Andreas Kohlbecker
		}
60 c483d275 Andreas Kohlbecker
		if (TermBase.class.isAssignableFrom(target)) {
61
			return DEFAULT.getMatch(TermBase.class, set);
62
		}
63 be60c78d Andreas Kohlbecker
		if (NameRelationship.class.isAssignableFrom(target)) {
64
			return DEFAULT.getMatch(NameRelationship.class, set);
65
		}
66
		if (TaxonRelationship.class.isAssignableFrom(target)) {
67
			return DEFAULT.getMatch(TaxonRelationship.class, set);
68
		}
69 3c3ab65a Andreas Kohlbecker
		if (Media.class.isAssignableFrom(target)) {
70
			return DEFAULT.getMatch(Media.class, set);
71
		}
72 892efc69 Andreas Kohlbecker
		if (ReferenceBase.class.isAssignableFrom(target)) {
73
			return DEFAULT.getMatch(ReferenceBase.class, set);
74
		}
75
76 cd7fb617 Andreas Kohlbecker
		return DEFAULT.getMatch(target, set);
77
	}
78 30416098 Andreas Kohlbecker
	
79
	
80 cd7fb617 Andreas Kohlbecker
}