|
Glassfish example source code file (missing-msg-id-finder.rb)
The Glassfish missing-msg-id-finder.rb source code#!/usr/bin/ruby # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # # Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. # # The contents of this file are subject to the terms of either the GNU # General Public License Version 2 only ("GPL") or the Common Development # and Distribution License("CDDL") (collectively, the "License"). You # may not use this file except in compliance with the License. You can # obtain a copy of the License at # https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html # or packager/legal/LICENSE.txt. See the License for the specific # language governing permissions and limitations under the License. # # When distributing the software, include this License Header Notice in each # file and include the License file at packager/legal/LICENSE.txt. # # GPL Classpath Exception: # Oracle designates this particular file as subject to the "Classpath" # exception as provided by Oracle in the GPL Version 2 section of the License # file that accompanied this code. # # Modifications: # If applicable, add the following below the License Header, with the fields # enclosed by brackets [] replaced by your own identifying information: # "Portions Copyright [year] [name of copyright owner]" # # Contributor(s): # If you wish your version of this file to be governed by only the CDDL or # only the GPL Version 2, indicate your decision by adding "[Contributor] # elects to include this software in this distribution under the [CDDL or GPL # Version 2] license." If you don't indicate a single choice of license, a # recipient has the option to distribute your version of this file under # either the CDDL, the GPL Version 2 or to extend the choice of license to # its licensees as provided above. However, if you add GPL Version 2 code # and therefore, elected the GPL Version 2 license, then the option applies # only if the new code is made subject to such option by the copyright # holder. # # Author: Dies Koper (dkoper@dev.java.net) # This script reads all LogStrings.properties in the current directory and # its subdirectories and confirms the messages in them have proper Ids. # The results (except for messages on the exclude list) are written to a file. require 'find' $excl_list = Array.new # load excluded messages list # this list includes message keys of messages for which it has been # confirmed that they should not have a msg id (like debug messages). IO.foreach("./message-key-excl.txt") { |line| $excl_list.push line.chomp if line =~ /^[\w\-].*$*/ } hits = [] file_count = 0 puts "GlassFish Home Is: "+ARGV[0] # traverse all files under the following root dir Find.find(ARGV[0]) do |f| # skip directories that store copies of property files case File.dirname(f) when /.*\/.svn/ then Find.prune # skip .svn dirs when /.*\/target/ then Find.prune # skip build dirs when /.*\/tests/ then Find.prune # skip test dirs end case File.basename(f) when 'LogStrings.properties' then file_count += 1 # print filename using OS specific path puts "* #{f.gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)}" # open each msg properties file and read line by line File.open(f) do |msgfile| msgfile.each_line { |line| # puts "line: #{line}" if (needs_id(msgfile, line) == true) hits << line puts " - no Id: #{line}" end } end end def needs_id(file, line) # concate multi-line message \ is_multi_line = false while (!line.to_s.match(/.+\\\s*$/).nil?) next_line = file.gets.lstrip line = line.chop + next_line is_multi_line = true end # puts "\tmulti-line msg: #{line}" if is_multi_line id_req = false case line # id.diag.... when /^\s*[\w_\-]+\.diag\.(cause|check)\..*/ #puts "diag msg: #{line}" # msg.key = PREFIX123: ... (colon may be escaped - LAUNHCER006) when /^\s*[\w._\-]+\s*[^\\][=:]\s*\w+\d+\s*\\?:.*/ # puts "msg with key: #{line}" # comment saying next message needs no id # used in web\war-util\src\main\resources\com\sun\logging\enterprise\system\container\web\LogStrings.properties when /^\s*[#!]no ID on .*/ #skip next message line = file.gets # puts "\tskip next msg: #{line}" # comment when /^\s*[#!].*$/ # no msg when /^\s*$/ # msg.key = Message with no prefix when /^([\w._\-]+\s*[^\\])[=:].*/ id_req = true unless $excl_list.include?($1) else puts " - unknown: #{line}" end id_req end end puts "\nFinished." puts "Searched #{file_count} files and found #{hits.size} messages with no Id (with #{$excl_list.size} messages excluded)" puts "\nResults have been saved to ./msgs-with-no-ids.txt" File.open("./msgs-with-no-ids.txt", 'w') { |f| hits.each { |item| f.write item } } Other Glassfish examples (source code examples)Here is a short list of links related to this Glassfish missing-msg-id-finder.rb source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.