| /* |
| * Copyright 2011 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.rebind; |
| |
| import com.google.gwt.core.ext.typeinfo.JMethod; |
| import com.google.gwt.i18n.client.Constants.DefaultStringMapValue; |
| import com.google.gwt.i18n.client.LocalizableResource.Description; |
| import com.google.gwt.i18n.client.LocalizableResource.Meaning; |
| import com.google.gwt.i18n.client.Messages.DefaultMessage; |
| import com.google.gwt.i18n.server.Message; |
| import com.google.gwt.i18n.server.MessageFormatUtils.MessageStyle; |
| import com.google.gwt.i18n.server.MessageInterface; |
| import com.google.gwt.i18n.server.MessageProcessingException; |
| import com.google.gwt.i18n.server.MessageTranslation; |
| import com.google.gwt.i18n.server.MessageUtils; |
| import com.google.gwt.i18n.server.MessageVisitor; |
| import com.google.gwt.i18n.server.Parameter; |
| import com.google.gwt.i18n.server.Type; |
| import com.google.gwt.i18n.shared.GwtLocale; |
| |
| import java.lang.annotation.Annotation; |
| import java.util.List; |
| |
| /** |
| * Implementation of {@link Message} only suitable for use by key generators. |
| * See the restrictions in |
| * {@link com.google.gwt.i18n.server.KeyGenerator#generateKey(Message)}. |
| */ |
| class KeyGenMessage implements Message { |
| |
| private JMethod method; |
| |
| /** |
| * @param method |
| */ |
| public KeyGenMessage(JMethod method) { |
| this.method = method; |
| } |
| |
| public void accept(MessageVisitor v) throws MessageProcessingException { |
| throw new MessageProcessingException("unsupported"); |
| } |
| |
| public void accept(MessageVisitor v, GwtLocale locale) |
| throws MessageProcessingException { |
| throw new MessageProcessingException("unsupported"); |
| } |
| |
| public int compareTo(Message o) { |
| return 0; |
| } |
| |
| public Iterable<AlternateFormMapping> getAllMessageForms() { |
| return null; |
| } |
| |
| public <A extends Annotation> A getAnnotation(Class<A> annotClass) { |
| A annot = method.getAnnotation(annotClass); |
| if (annot != null) { |
| return annot; |
| } |
| return method.getEnclosingType().findAnnotationInTypeHierarchy(annotClass); |
| } |
| |
| public String getDefaultMessage() { |
| if (isAnnotationPresent(DefaultMessage.class)) { |
| DefaultMessage annot = getAnnotation(DefaultMessage.class); |
| return annot.value(); |
| } else if (isAnnotationPresent(DefaultStringMapValue.class)) { |
| DefaultStringMapValue annot = getAnnotation(DefaultStringMapValue.class); |
| String[] keyValues = annot.value(); |
| StringBuilder buf = new StringBuilder(); |
| boolean needComma = false; |
| for (int i = 0; i < keyValues.length; i += 2) { |
| if (needComma) { |
| buf.append(','); |
| } else { |
| needComma = true; |
| } |
| buf.append(MessageUtils.quoteComma(keyValues[i])); |
| } |
| return buf.toString(); |
| } else { |
| return MessageUtils.getConstantsDefaultValue(this); |
| } |
| } |
| |
| public String getDescription() { |
| Description annot = getAnnotation(Description.class); |
| return annot != null ? annot.value() : null; |
| } |
| |
| public String getKey() { |
| return null; |
| } |
| |
| public GwtLocale getMatchedLocale() { |
| return null; |
| } |
| |
| public String getMeaning() { |
| Meaning meaningAnnot = getAnnotation(Meaning.class); |
| return meaningAnnot != null ? meaningAnnot.value() : null; |
| } |
| |
| public MessageInterface getMessageInterface() { |
| return new KeyGenMessageInterface(method.getEnclosingType()); |
| } |
| |
| public MessageStyle getMessageStyle() { |
| return isAnnotationPresent(DefaultMessage.class) ? |
| MessageStyle.MESSAGE_FORMAT : MessageStyle.PLAIN; |
| } |
| |
| public String getMethodName() { |
| return method.getName(); |
| } |
| |
| public List<Parameter> getParameters() { |
| return null; |
| } |
| |
| public Type getReturnType() { |
| return null; |
| } |
| |
| public int[] getSelectorParameterIndices() { |
| return null; |
| } |
| |
| public MessageTranslation getTranslation(GwtLocale locale) { |
| return null; |
| } |
| |
| public boolean isAnnotationPresent(Class<? extends Annotation> annotClass) { |
| return getAnnotation(annotClass) != null; |
| } |
| |
| public boolean isVarArgs() { |
| return false; |
| } |
| } |