| /* |
| * Copyright 2008 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.i18n.server.keygen; |
| |
| import com.google.gwt.i18n.server.KeyGenerator; |
| import com.google.gwt.i18n.server.Message; |
| import com.google.gwt.util.tools.Utility; |
| |
| import java.io.UnsupportedEncodingException; |
| import java.security.MessageDigest; |
| import java.security.NoSuchAlgorithmException; |
| |
| /** |
| * Key generator using the MD5 hash of the text and meaning. |
| */ |
| public class MD5KeyGenerator implements KeyGenerator { |
| |
| public String generateKey(Message msg) { |
| String text = msg.getDefaultMessage(); |
| String meaning = msg.getMeaning(); |
| /* |
| * This does not use Util.computeStrongName because we would have |
| * to concatenate the text and meaning into a temporary buffer. |
| */ |
| |
| if (text == null) { |
| // Cannot compute a key if no default text is supplied. |
| return null; |
| } |
| MessageDigest md5; |
| try { |
| md5 = MessageDigest.getInstance("MD5"); |
| } catch (NoSuchAlgorithmException e) { |
| throw new RuntimeException("Error initializing MD5", e); |
| } |
| |
| try { |
| md5.update(text.getBytes("UTF-8")); |
| if (meaning != null) { |
| md5.update(meaning.getBytes("UTF-8")); |
| } |
| } catch (UnsupportedEncodingException e) { |
| throw new RuntimeException("UTF-8 unsupported", e); |
| } |
| return Utility.toHexString(md5.digest()); |
| } |
| } |