|
1 | 1 | /* |
2 | | - * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * |
4 | 4 | * This program and the accompanying materials are made available under the |
5 | 5 | * terms of the Eclipse Public License v. 2.0, which is available at |
|
17 | 17 | package org.glassfish.jersey.message.internal; |
18 | 18 |
|
19 | 19 | import java.security.AccessController; |
| 20 | +import java.util.HashMap; |
20 | 21 | import java.util.HashSet; |
21 | 22 | import java.util.Iterator; |
22 | 23 | import java.util.Locale; |
23 | 24 | import java.util.Map; |
24 | 25 | import java.util.Set; |
| 26 | +import java.util.concurrent.atomic.AtomicBoolean; |
25 | 27 | import java.util.logging.Logger; |
26 | 28 |
|
27 | 29 | import javax.ws.rs.RuntimeType; |
|
48 | 50 | public final class MessagingBinders { |
49 | 51 |
|
50 | 52 | private static final Logger LOGGER = Logger.getLogger(MessagingBinders.class.getName()); |
| 53 | + private static final Map<EnabledProvidersBinder.Provider, AtomicBoolean> warningMap; |
| 54 | + |
| 55 | + static { |
| 56 | + warningMap = new HashMap<>(); |
| 57 | + for (EnabledProvidersBinder.Provider provider : EnabledProvidersBinder.Provider.values()) { |
| 58 | + warningMap.put(provider, new AtomicBoolean(false)); |
| 59 | + } |
| 60 | + } |
51 | 61 |
|
52 | 62 | /** |
53 | 63 | * Prevents instantiation. |
@@ -223,21 +233,23 @@ private void bindToBinder(AbstractBinder binder) { |
223 | 233 | } |
224 | 234 | providerBinder.bind(binder, provider); |
225 | 235 | } else { |
226 | | - switch (provider) { |
227 | | - case DOMSOURCE: |
228 | | - case SAXSOURCE: |
229 | | - case STREAMSOURCE: |
230 | | - LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND(provider.className, |
231 | | - "MessageBodyReader<" + provider.className + ">") |
232 | | - ); |
233 | | - break; |
234 | | - case DATASOURCE: |
235 | | - case RENDEREDIMAGE: |
236 | | - case SOURCE: |
237 | | - LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND(provider.className, |
238 | | - "MessageBodyWriter<" + provider.className + ">") |
239 | | - ); |
240 | | - break; |
| 236 | + if (warningMap.get(provider).compareAndSet(false, true)) { |
| 237 | + switch (provider) { |
| 238 | + case DOMSOURCE: |
| 239 | + case SAXSOURCE: |
| 240 | + case STREAMSOURCE: |
| 241 | + LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND( |
| 242 | + provider.className, "MessageBodyReader<" + provider.className + ">") |
| 243 | + ); |
| 244 | + break; |
| 245 | + case DATASOURCE: |
| 246 | + case RENDEREDIMAGE: |
| 247 | + case SOURCE: |
| 248 | + LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND( |
| 249 | + provider.className, "MessageBodyWriter<" + provider.className + ">") |
| 250 | + ); |
| 251 | + break; |
| 252 | + } |
241 | 253 | } |
242 | 254 | } |
243 | 255 | } |
|
0 commit comments