/** * Copyright (C) 2016 Red Hat, Inc. and/or its affiliates. * * 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 org.jboss.errai.enterprise.client.cdi; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; import org.jboss.errai.common.client.api.Assert; import org.jboss.errai.common.client.util.AnnotationPropertyAccessor; import org.jboss.errai.common.client.util.SharedAnnotationSerializer; /** * * @author Max Barkley <mbarkley@redhat.com> */ public abstract class EventQualifierSerializer { public static final String SERIALIZER_CLASS_NAME = "EventQualifierSerializerImpl"; public static final String SERIALIZER_PACKAGE_NAME = "org.jboss.errai.cdi"; private static EventQualifierSerializer instance; public static boolean isSet() { return instance != null; } public static void set(final EventQualifierSerializer impl) { if (instance == null) { instance = Assert.notNull(impl); } else { throw new RuntimeException("Cannot call set more than once."); } } public static EventQualifierSerializer get() { return Assert.notNull("Cannot call " + EventQualifierSerializer.class.getSimpleName() + ".get() without first setting an instance.", instance); } protected final Map<String, AnnotationPropertyAccessor> serializers = new HashMap<>(); protected EventQualifierSerializer() { } public String serialize(final Annotation qualifier) { final AnnotationPropertyAccessor entry = serializers.get(qualifier.annotationType().getName()); return SharedAnnotationSerializer.serialize(qualifier, entry); } public String qualifierName(final String serializedQualifier) { if (serializedQualifier.contains("(")) { return serializedQualifier.substring(0, serializedQualifier.indexOf('(')); } else { return serializedQualifier; } } }