public InputStream getResource(String uri) throws IllegalArgumentException { if (uri == null) { throw new IllegalArgumentException("null 'uri' arg in method call."); } else if (uri.charAt(0) != '/') { throw new IllegalArgumentException( "classpath 'uri' must be a valid classpath with a leading '/' char on the path i.e. specified relative to the root of the classpath."); } return ClassUtil.getResourceAsStream(uri, getClass()); }
private Object createHandler(String handlerName) throws SAXException { try { Class handlerClass = ClassUtil.forName(handlerName, getClass()); return handlerClass.newInstance(); } catch (ClassNotFoundException e) { throw new SAXException("Failed to create SAX Handler '" + handlerName + "'.", e); } catch (IllegalAccessException e) { throw new SAXException("Failed to create SAX Handler '" + handlerName + "'.", e); } catch (InstantiationException e) { throw new SAXException("Failed to create SAX Handler '" + handlerName + "'.", e); } }
public static List<URL> getResources(String resourcePath, Class<?> caller) throws IOException { return getResources(resourcePath, caller.getClassLoader()); }
public static Method getGetterMethodByProperty(String propertyName, Class<?> beanClass, Class<?> returnType) { Method getter = getGetterMethod(toGetterName(propertyName), beanClass, returnType); if(getter == null) { getter = getGetterMethod(toIsGetterName(propertyName), beanClass, returnType); } return getter; } }
@SuppressWarnings("SameParameterValue") static Method getSetterMethodByProperty(String propertyName, Class<?> beanClass, Class<?> setterParamType) { return getSetterMethod(toSetterName(propertyName), beanClass, setterParamType); }
fieldValue = ClassUtil.getField(field, instance); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to get property field value for '" + getLongMemberName(field) + "'.", e); String setterName = ClassUtil.toSetterName(fieldName); Method setterMethod = ClassUtil.getSetterMethod(setterName, contentHandlerClass, field.getType()); ClassUtil.setField(field, instance, decoder.decode(defaultVal)); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to set property field value for '" + getLongMemberName(field) + "'.", e);
private static <U> void processStreamResultWriterAnnotations(U instance, SmooksResourceConfiguration config) { if(!(instance instanceof SAXVisitor)) { return; } List<Field> streamResFields = ClassUtil.getAnnotatedFields(instance.getClass(), StreamResultWriter.class); boolean encodeSpecialCharacters = config.getBoolParameter(Filter.ENTITIES_REWRITE, true); for(Field streamResField : streamResFields) { // If already initialized, ignore... try { if(ClassUtil.getField(streamResField, instance) != null) { continue; } } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to get property field value for '" + getLongMemberName(streamResField) + "'.", e); } Class<?> type = streamResField.getType(); if(type == SAXToXMLWriter.class) { SAXToXMLWriter xmlWriter = new SAXToXMLWriter((SAXVisitor) instance, encodeSpecialCharacters); try { ClassUtil.setField(streamResField, instance, xmlWriter); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to inject SAXToXMLWriter property field value for '" + getLongMemberName(streamResField) + "'.", e); } } } }
private void createPropertySetterMethod(Object bean, Class<?> parameter) { if (!checkedForSetterMethod && propertySetterMethod == null) { String methodName = null; if(setterMethod != null && !setterMethod.trim().equals("")) { methodName = setterMethod; } else if(property != null && !property.trim().equals("")) { methodName = ClassUtil.toSetterName(property); } if(methodName != null) { propertySetterMethod = createPropertySetterMethod(bean, methodName, parameter); } checkedForSetterMethod = true; } }
public static List<Field> getAnnotatedFields(Class runtimeClass, Class<? extends Annotation> annotationClass) { List<Field> streamWriterFields = new ArrayList<Field>(); getAnnotatedFields(runtimeClass, streamWriterFields, annotationClass); return streamWriterFields; }
public static Method getSetterMethod(String setterName, Object bean, Class<?> setterParamType) { return getSetterMethod(setterName, bean.getClass(), setterParamType); }
/** * Will try to create a List of classes that are listed * in the passed in file. * The fileName is expected to be found on the classpath. * * @param fileName The name of the file containing the list of classes, * one class name per line. * @param instanceOf The instanceof filter. * @return List<Class<T>> list of the classes contained in the file. */ public static <T> List<Class<T>> getClasses(final String fileName, Class<T> instanceOf) { AssertArgument.isNotNull( fileName, "fileName" ); AssertArgument.isNotNull( instanceOf, "instanceOf" ); long start = System.currentTimeMillis(); List<Class<T>> classes = new ArrayList<Class<T>>(); List<URL> cpURLs; int resCount = 0; try { cpURLs = getResources(fileName, ClassUtil.class); } catch (IOException e) { throw new RuntimeException("Error getting resource URLs for resource : " + fileName, e); } for (URL url : cpURLs) { addClasses(url, instanceOf, classes); resCount++; } logger.debug("Loaded " + classes.size() + " classes from " + resCount + " URLs through class list file " + fileName + ". Process took " + (System.currentTimeMillis() - start) + "ms. Turn on debug logging for more info."); return classes; }
private synchronized static void loadInstalledDecoders() throws DataDecodeException { if (installedDecoders == null) { // Attempt to find configured decoders. final List<Class<DataDecoder>> decoders = ClassUtil.getClasses("META-INF/data-decoders.inf", DataDecoder.class); if (decoders.isEmpty()) { throw new DataDecodeException("Failed to find installed DataDecoders on classpath."); } // Prepare to initialize decoders. final Map<Class, Class<? extends DataDecoder>> loadedDecoders = new HashMap<Class, Class<? extends DataDecoder>>(); for (final Class<DataDecoder> decoder : decoders) { final DecodeType decodeType = decoder.getAnnotation(DecodeType.class); if (decodeType != null) { for (final Class type : decodeType.value()) { if (loadedDecoders.containsKey(type)) { logger.warn("More than one DataDecoder for type '" + type.getName() + "' is installed on the classpath. You must manually configure decoding of this type, where required."); loadedDecoders.put(type, null); // We don't remove, because we need to maintain a record of this! } else { loadedDecoders.put(type, decoder); } } } } // Save the loaded decoders so that they can be reused. installedDecoders = loadedDecoders; } }
public static Method getGetterMethod(String getterName, Object bean, Class<?> returnType) { return getGetterMethod(getterName, bean.getClass(), returnType); }
fieldValue = ClassUtil.getField(field, instance); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to get property field value for '" + getLongMemberName(field) + "'.", e); String setterName = ClassUtil.toSetterName(fieldName); Method setterMethod = ClassUtil.getSetterMethod(setterName, contentHandlerClass, field.getType()); ClassUtil.setField(field, instance, decoder.decode(defaultVal)); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to set property field value for '" + getLongMemberName(field) + "'.", e);
public static Method getGetterMethodByProperty(String propertyName, Class<?> beanClass, Class<?> returnType) { Method getter = getGetterMethod(toGetterName(propertyName), beanClass, returnType); if(getter == null) { getter = getGetterMethod(toIsGetterName(propertyName), beanClass, returnType); } return getter; } }
private static <U> void processStreamResultWriterAnnotations(U instance, SmooksResourceConfiguration config) { if(!(instance instanceof SAXVisitor)) { return; } List<Field> streamResFields = ClassUtil.getAnnotatedFields(instance.getClass(), StreamResultWriter.class); boolean encodeSpecialCharacters = config.getBoolParameter(Filter.ENTITIES_REWRITE, true); for(Field streamResField : streamResFields) { // If already initialized, ignore... try { if(ClassUtil.getField(streamResField, instance) != null) { continue; } } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to get property field value for '" + getLongMemberName(streamResField) + "'.", e); } Class<?> type = streamResField.getType(); if(type == SAXToXMLWriter.class) { SAXToXMLWriter xmlWriter = new SAXToXMLWriter((SAXVisitor) instance, encodeSpecialCharacters); try { ClassUtil.setField(streamResField, instance, xmlWriter); } catch (IllegalAccessException e) { throw new SmooksConfigurationException("Unable to inject SAXToXMLWriter property field value for '" + getLongMemberName(streamResField) + "'.", e); } } } }
@SuppressWarnings("SameParameterValue") static Method getSetterMethodByProperty(String propertyName, Class<?> beanClass, Class<?> setterParamType) { return getSetterMethod(toSetterName(propertyName), beanClass, setterParamType); }
private void createPropertySetterMethod(Object bean, Class<?> parameter) { if (!checkedForSetterMethod && propertySetterMethod == null) { String methodName = null; if(setterMethod != null && !setterMethod.trim().equals("")) { methodName = setterMethod; } else if(property != null && !property.trim().equals("")) { methodName = ClassUtil.toSetterName(property); } if(methodName != null) { propertySetterMethod = createPropertySetterMethod(bean, methodName, parameter); } checkedForSetterMethod = true; } }
public static List<Field> getAnnotatedFields(Class runtimeClass, Class<? extends Annotation> annotationClass) { List<Field> streamWriterFields = new ArrayList<Field>(); getAnnotatedFields(runtimeClass, streamWriterFields, annotationClass); return streamWriterFields; }
public static Method getSetterMethod(String setterName, Object bean, Class<?> setterParamType) { return getSetterMethod(setterName, bean.getClass(), setterParamType); }