private void configureDescriptions(BusAttachment busAttachment, Class<?> busInterface) throws AnnotationBusException { BusInterface ifcNote = busInterface.getAnnotation(BusInterface.class); if (null == ifcNote) return; boolean hasDescriptions = false; if (!ifcNote.description().equals("")) { setDescription(ifcNote.description()); hasDescriptions = true; } for (Method method : busInterface.getMethods()) { String name = getName(method); BusMethod methodNote = method.getAnnotation(BusMethod.class); if (null != methodNote && (methodNote.description().length() > 0)) { setMemberDescription(name, methodNote.description(), false); hasDescriptions = true; } BusSignal signalNote = method.getAnnotation(BusSignal.class); if (null != signalNote && (signalNote.description().length() > 0)) { setMemberDescription(name, signalNote.description(), signalNote.sessionless()); hasDescriptions = true; } BusProperty propNote = method.getAnnotation(BusProperty.class); if (null != propNote && (propNote.description().length() > 0)) { setPropertyDescription(name, propNote.description()); hasDescriptions = true; } } if (hasDescriptions) { setDescriptionLanguage(ifcNote.descriptionLanguage()); } try { if (ifcNote.descriptionTranslator().length() > 0) { // We store these so as not to create a separate instance each time it is used. // Although this means we'll be holding on to each instance forever this is probably // not a problem since most Translators will need to live forever anyway Translator dt = translatorCache.get(ifcNote.descriptionTranslator()); if (null == dt) { Class<?> c = Class.forName(ifcNote.descriptionTranslator()); dt = (Translator) c.newInstance(); translatorCache.put(ifcNote.descriptionTranslator(), dt); } setDescriptionTranslator(busAttachment, dt); } } catch (Exception e) { e.printStackTrace(); } }
/** * Get the DBus property signature. * * @param method the method */ public static String getPropertySig(Method method) throws AnnotationBusException { Type type = null; if (method.getName().startsWith("get")) { type = method.getGenericReturnType(); } else if (method.getName().startsWith("set")) { type = method.getGenericParameterTypes()[0]; } BusProperty busProperty = method.getAnnotation(BusProperty.class); if (busProperty != null && busProperty.signature().length() > 0) { return Signature.typeSig(type, busProperty.signature()); } return Signature.typeSig(type, null); }
/** * Get the DBus member or property name. * * @param method The method. */ public static String getName(Method method) { BusMethod busMethod = method.getAnnotation(BusMethod.class); if (busMethod != null && busMethod.name().length() > 0) { return busMethod.name(); } BusSignal busSignal = method.getAnnotation(BusSignal.class); if (busSignal != null && busSignal.name().length() > 0) { return busSignal.name(); } BusProperty busProperty = method.getAnnotation(BusProperty.class); if (busProperty != null) { if (busProperty.name().length() > 0) { return busProperty.name(); } else { /* The rest of the method name following the "get" or "set" prefix. */ return method.getName().substring(3); } } return method.getName(); }