r1018 - in trunk/eugene/src/main/java/org/nuiton/eugene: . models/object
Author: tchemit Date: 2010-11-29 09:55:47 +0100 (Mon, 29 Nov 2010) New Revision: 1018 Url: http://nuiton.org/repositories/revision/eugene/1018 Log: can configure log level of model properties loader + do not still block unknown tag value, still a couple of unsafe one... Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:55:31 UTC (rev 1017) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-29 08:55:47 UTC (rev 1018) @@ -25,26 +25,24 @@ /** Logger. */ private static final Log log = LogFactory.getLog(ModelPropertiesUtil.class); - /** the shared store of known tag values and stereotypes. */ - public static ModelPropertiesProvider store; + /** + * Obtain a new store of tag values and stereotypes. + * + * @param loader the classloader to use (if none given will use the one of the current thread) + * @param verbose a verbose flag + * @return the aggregate store of all atomic one detected in the class-path + */ + public static ModelPropertiesProvider newStore(ClassLoader loader, + boolean verbose) { - public static Class<?>[] getTagValueTarget(String tagValueName) { - return getStore().getTagValueTarget(tagValueName); - } - - public static Class<?>[] getStereotypeTarget(String tagValueName) { - return getStore().getStereotypeTarget(tagValueName); - } - - public static ModelPropertiesProvider initStore(ClassLoader loader) { - if (loader == null) { // use the current thread loader loader = Thread.currentThread().getContextClassLoader(); } - store = new AggregateModelPropertiesProvider(loader); + ModelPropertiesProvider store = new AggregateModelPropertiesProvider(loader); + store.setVerbose(verbose || log.isDebugEnabled()); try { store.init(); } catch (Exception e) { @@ -53,14 +51,6 @@ return store; } - public static ModelPropertiesProvider getStore() { - if (store == null) { - - store = initStore(null); - } - return store; - } - /** * The Eugene provider of tag values and stereotypes. * @@ -97,9 +87,10 @@ loader = ServiceLoader.load(ModelPropertiesProvider.class, this.loader); for (ModelPropertiesProvider provider : loader) { - if (log.isInfoEnabled()) { + if (isVerbose()) { log.info("Will init model properties provider " + provider); } + provider.setVerbose(isVerbose()); provider.init(); getStereotypeStore().putAll(provider.getStereotypeStore()); getTagValueStore().putAll(provider.getTagValueStore()); @@ -176,15 +167,25 @@ protected Map<String, TagValueDefinition> tagValueStore; + protected boolean verbose; + protected ModelPropertiesProvider() { stereotypeStore = new TreeMap<String, StereotypeDefinition>(); tagValueStore = new TreeMap<String, TagValueDefinition>(); } + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + public abstract void init() throws Exception; protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException { - if (log.isInfoEnabled()) { + if (isVerbose()) { log.info("Will scan " + holder.getName() + " to search some stereotype definitions..."); } Field[] fields = holder.getDeclaredFields(); @@ -196,7 +197,7 @@ if (stereotypeDefinition != null) { String fieldName = field.getName(); String stereotypeName = (String) field.get(null); - if (log.isInfoEnabled()) { + if (isVerbose()) { log.info("Detected stereotype definition [" + fieldName + ":" + stereotypeName + "] : " + Arrays.toString(stereotypeDefinition.target())); } stereotypeStore.put(stereotypeName, stereotypeDefinition); @@ -205,7 +206,7 @@ } protected void scanTagValueClass(Class<?> holder) throws IllegalAccessException { - if (log.isInfoEnabled()) { + if (isVerbose()) { log.info("Will scan " + holder.getName() + " to search some tag value definitions..."); } Field[] fields = holder.getDeclaredFields(); @@ -216,7 +217,7 @@ if (tagValueDefinition != null) { String fieldName = field.getName(); String tagValueName = (String) field.get(null); - if (log.isInfoEnabled()) { + if (isVerbose()) { log.info("Detected tag value definition [" + fieldName + ":" + tagValueName + "] : " + Arrays.toString(tagValueDefinition.target())); } tagValueStore.put(tagValueName, tagValueDefinition); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 23:55:31 UTC (rev 1017) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-29 08:55:47 UTC (rev 1018) @@ -109,6 +109,8 @@ public static final String MODEL = "model"; + ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider; + /** * @param files les noms des fichiers existant contenant du XML représentant * des ObjectModel. Il est automatiquement recherche un fichier de @@ -201,8 +203,8 @@ public Properties loadModelProperties(File propFile, ObjectModel model) throws IOException { // init ModelProperties store - ModelPropertiesUtil.initStore(getLoader()); - + propertiesProvider = ModelPropertiesUtil.newStore(getLoader(), isVerbose()); + Properties prop = new RecursiveProperties(); // try { FileInputStream inStream = new FileInputStream(propFile); @@ -286,14 +288,14 @@ } String tag = matcher.group(2); - Class<?>[] targets = ModelPropertiesUtil.getTagValueTarget(tag); + Class<?>[] targets = propertiesProvider.getTagValueTarget(tag); if (targets == null) { // unknown tag value, can not use it if (log.isWarnEnabled()) { log.warn("Invalid model tag value [" + key + "] : the tagvalue is unkown."); } - return false; +// return false; } ObjectModelImpl modelImpl = (ObjectModelImpl) model;
participants (1)
-
tchemit@users.nuiton.org