001/* 002 GRANITE DATA SERVICES 003 Copyright (C) 2011 GRANITE DATA SERVICES S.A.S. 004 005 This file is part of Granite Data Services. 006 007 Granite Data Services is free software; you can redistribute it and/or modify 008 it under the terms of the GNU Library General Public License as published by 009 the Free Software Foundation; either version 2 of the License, or (at your 010 option) any later version. 011 012 Granite Data Services is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License 015 for more details. 016 017 You should have received a copy of the GNU Library General Public License 018 along with this library; if not, see <http://www.gnu.org/licenses/>. 019*/ 020 021package org.granite.config; 022 023import java.util.List; 024 025import org.granite.messaging.amf.io.util.JavaClassDescriptor; 026import org.granite.messaging.amf.io.util.Property; 027import org.granite.util.TypeUtil; 028 029/** 030 * @author Franck WOLFF 031 */ 032public class JavaClassDescriptorFactory implements ConfigurableFactory<Class<? extends JavaClassDescriptor>> { 033 034 private static final class NullJavaClassDescriptor extends JavaClassDescriptor { 035 protected NullJavaClassDescriptor(Class<?> type) { 036 super(type); 037 throw new RuntimeException("Not implemented"); 038 } 039 @Override 040 protected List<Property> introspectProperties() { 041 return null; 042 } 043 } 044 private static final Class<? extends JavaClassDescriptor> NULL_JC_DESCRIPTOR 045 = NullJavaClassDescriptor.class; 046 047 public Class<? extends JavaClassDescriptor> getNullInstance() { 048 return NULL_JC_DESCRIPTOR; 049 } 050 051 public Class<? extends JavaClassDescriptor> getInstance(String type, GraniteConfig config) throws GraniteConfigException { 052 try { 053 return TypeUtil.forName(type, JavaClassDescriptor.class); 054 } catch (Exception e) { 055 throw new GraniteConfigException("Could not load JavaClassDescriptor type: " + type, e); 056 } 057 } 058 059 public Class<? extends JavaClassDescriptor> getInstanceForBean( 060 List<Class<? extends JavaClassDescriptor>> scannedConfigurables, 061 Class<?> beanClass, 062 GraniteConfig config) throws GraniteConfigException { 063 064 return NULL_JC_DESCRIPTOR; 065 } 066}