/** * Checks whether an adapter will match it's children. * * @param adapter * @return * @throws AdapterInitializationException */ public boolean isWildcardAdapter(Class<? extends IAdapter> adapter) throws AdapterInitializationException { this.verifyAdapter(adapter); // get annotation return adapter.getAnnotation(AdapterDefinition.class).matchChildren(); }
/** * Checks whether the adapter is sharable. * * @param adapter * @return * @throws AdapterInitializationException */ public boolean isTypeAdapterSharable(Class<? extends ITypeAdapter> adapter) throws AdapterInitializationException { this.verifyTypeAdapter(adapter); // check return adapter.getAnnotation(TypeAdapterDefinition.class).sharable(); }
/** {@inheritDoc} */ @Override public void registerAdapter(Class<? extends IAdapter> adapter) throws ConfigurationException { this.verifyAdapter(adapter); // get annotation AdapterDefinition definition = adapter.getAnnotation(AdapterDefinition.class); // register adapter this.adapterMap.put(definition.input(), adapter); }
/** * Constructs a new ConfigurationProcessor. * * @param processor */ public AbstractMarshaller(ConfigurationProcessor processor, Class<T> type) throws ConfigurationException { this.processor = processor; // verify class if (!type.isAnnotationPresent(Configuration.class)) throw new ConfigurationSetupException( "The supplied object is not setup for configuration marshalling."); // store arguments this.type = type; this.typeConfiguration = type.getAnnotation(Configuration.class); // create instances this.adapterMap = new HashMap<>(); this.typeAdapterMap = new HashMap<>(); this.adapterInstanceMap = new HashMap<>(); this.typeAdapterInstanceMap = new HashMap<>(); // register defaults this.registerAdapters(); }