diff --git a/src/main/java/org/eclipse/keyple/core/service/AbstractObservableStateAdapter.java b/src/main/java/org/eclipse/keyple/core/service/AbstractObservableStateAdapter.java index c0fd283..a35e51c 100644 --- a/src/main/java/org/eclipse/keyple/core/service/AbstractObservableStateAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/AbstractObservableStateAdapter.java @@ -129,7 +129,7 @@ final void onActivate() { // launch the monitoringJob is necessary if (monitoringJob != null) { if (executorService == null) { - throw new IllegalStateException("ExecutorService must be set"); + throw new IllegalStateException("ExecutorService is not set. Cannot launch monitoring job"); } monitoringEvent = executorService.submit(monitoringJob.getMonitoringJob(this)); } diff --git a/src/main/java/org/eclipse/keyple/core/service/AbstractPluginAdapter.java b/src/main/java/org/eclipse/keyple/core/service/AbstractPluginAdapter.java index ef11cc6..9a7b4c7 100644 --- a/src/main/java/org/eclipse/keyple/core/service/AbstractPluginAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/AbstractPluginAdapter.java @@ -85,8 +85,7 @@ final LocalReaderAdapter buildLocalReaderAdapter(ReaderSpi readerSpi) { */ final void checkStatus() { if (!isRegistered) { - throw new IllegalStateException( - String.format("Plugin [%s] is not or no longer registered", pluginName)); + throw new IllegalStateException("Plugin '" + pluginName + "' is not or no longer registered"); } } @@ -153,7 +152,7 @@ public final T getReaderExtension( checkStatus(); AbstractReaderAdapter reader = (AbstractReaderAdapter) getReader(readerName); if (reader == null) { - throw new IllegalArgumentException("Reader [" + readerName + "] not found"); + throw new IllegalArgumentException("Reader '" + readerName + "' is not found"); } return reader.getExtension(readerExtensionClass); } @@ -213,7 +212,8 @@ public final CardReader findReader(String readerNameRegex) { return reader; } } catch (PatternSyntaxException e) { - throw new IllegalArgumentException("readerNameRegex is invalid: " + e.getMessage(), e); + throw new IllegalArgumentException( + "Parameter 'readerNameRegex' has an invalid regex synthax: " + readerNameRegex, e); } } return null; diff --git a/src/main/java/org/eclipse/keyple/core/service/AbstractReaderAdapter.java b/src/main/java/org/eclipse/keyple/core/service/AbstractReaderAdapter.java index b7b9ecb..8c96fab 100644 --- a/src/main/java/org/eclipse/keyple/core/service/AbstractReaderAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/AbstractReaderAdapter.java @@ -128,7 +128,10 @@ final List transmitCardSelectionRequests( cardSelectors, cardSelectionRequests, multiSelectionProcessing, channelControl); } catch (UnexpectedStatusWordException e) { throw new CardBrokenCommunicationException( - e.getCardResponse(), false, "An unexpected status word was received", e); + e.getCardResponse(), + false, + "An unexpected status word was received during the processing of the card selection requests", + e); } finally { if (logger.isDebugEnabled()) { long timeStamp = System.nanoTime(); @@ -153,8 +156,7 @@ final List transmitCardSelectionRequests( */ final void checkStatus() { if (!isRegistered) { - throw new IllegalStateException( - String.format("This reader, %s, is not registered", getName())); + throw new IllegalStateException("Reader '" + getName() + "' is not registered"); } } diff --git a/src/main/java/org/eclipse/keyple/core/service/CardSelectionManagerAdapter.java b/src/main/java/org/eclipse/keyple/core/service/CardSelectionManagerAdapter.java index 9511d50..af4bc44 100644 --- a/src/main/java/org/eclipse/keyple/core/service/CardSelectionManagerAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/CardSelectionManagerAdapter.java @@ -95,7 +95,8 @@ public int prepareSelection( if (!(cardSelectionExtension instanceof CardSelectionExtensionSpi)) { throw new IllegalArgumentException( - "The provided 'cardSelectionExtension' must be an instance of 'CardSelectionExtensionSpi'"); + "Cannot cast 'cardSelectionExtension' to CardSelectionExtensionSpi. Actual type: " + + cardSelectionExtension.getClass().getName()); } /* keep the selection request */ @@ -205,7 +206,7 @@ public int importCardSelectionScenario(String cardSelectionScenario) { JsonUtil.getParser().fromJson(cardSelectorsJsonArray.get(i), classOfCardSelector); } catch (ClassNotFoundException e) { throw new IllegalArgumentException( - "Original CardSelector type '" + cardSelectorsTypes.get(i) + "' not found", e); + "Original CardSelector type '" + cardSelectorsTypes.get(i) + "' is not found", e); } CardSelectionExtension cardSelection; try { @@ -217,7 +218,7 @@ public int importCardSelectionScenario(String cardSelectionScenario) { } catch (ClassNotFoundException e) { // Default card selection logger.warn( - "Original CardSelection type '{}' not found. Replaced by default type '{}' for deserialization", + "Original CardSelection type '{}' is not found. Replaced by default type '{}' for deserialization", cardSelectionsTypes.get(i), CardSelectionAdapter.class.getName()); cardSelection = @@ -282,7 +283,10 @@ public void scheduleCardSelectionScenario( ((ObservableRemoteReaderAdapter) observableCardReader) .scheduleCardSelectionScenario(cardSelectionScenario, notificationMode); } else { - throw new IllegalArgumentException("Not a Keyple reader implementation"); + throw new IllegalArgumentException( + "Cannot cast 'observableCardReader' to ObservableLocalReaderAdapter or ObservableRemoteReaderAdapter. " + + "Actual type: " + + observableCardReader.getClass().getName()); } } @@ -333,10 +337,15 @@ public CardSelectionResult importProcessedCardSelectionScenario( processedCardSelectionScenario, new TypeToken>() {}.getType()); } catch (JsonSyntaxException e) { - throw new IllegalArgumentException("Input string is invalid: " + e.getMessage(), e); + throw new IllegalArgumentException( + "Parameter 'processedCardSelectionScenario' has an invalid JSON synthax: " + + processedCardSelectionScenario, + e); } if (cardSelectionResponses == null) { - throw new IllegalArgumentException("Input string is null or empty"); + throw new IllegalArgumentException( + "Parameter 'processedCardSelectionScenario' is null or empty: " + + processedCardSelectionScenario); } return processCardSelectionResponses(cardSelectionResponses); } @@ -366,7 +375,7 @@ private CardSelectionResult processCardSelectionResponses( smartCard = (SmartCard) cardSelections.get(index).parse(cardSelectionResponse); } catch (ParseException e) { throw new InvalidCardResponseException( - "Error occurred while parsing the card response: " + e.getMessage(), e); + "Failed to parse the card response: " + cardSelectionResponse, e); } catch (UnsupportedOperationException e) { logger.warn( "Unable to parse card selection responses due to missing card extensions in runtime environment"); diff --git a/src/main/java/org/eclipse/keyple/core/service/DistributedLocalServiceAdapter.java b/src/main/java/org/eclipse/keyple/core/service/DistributedLocalServiceAdapter.java index 383cbb3..088c960 100644 --- a/src/main/java/org/eclipse/keyple/core/service/DistributedLocalServiceAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/DistributedLocalServiceAdapter.java @@ -48,9 +48,6 @@ final class DistributedLocalServiceAdapter private static final Logger logger = LoggerFactory.getLogger(DistributedLocalServiceAdapter.class); - private static final String READER_NOT_FOUND_TEMPLATE = - "There is no local reader registered with the name [%s] or the associated plugin is no longer registered"; - private final String name; private final LocalServiceSpi localServiceSpi; @@ -78,7 +75,7 @@ final class DistributedLocalServiceAdapter public boolean isReaderContactless(String readerName) { CardReader reader = SmartCardServiceProvider.getService().findReader(Pattern.quote(readerName)); if (reader == null) { - throw new IllegalStateException(String.format(READER_NOT_FOUND_TEMPLATE, readerName)); + throw new IllegalStateException("Reader '" + readerName + "' is not registered"); } return reader.isContactless(); } @@ -230,8 +227,7 @@ void unregister() { */ private void checkStatus() { if (!isRegistered) { - throw new IllegalStateException( - String.format("Service [%s] is not or no longer registered", name)); + throw new IllegalStateException("Local service '" + name + "' is not registered"); } } @@ -255,7 +251,7 @@ private LocalReaderExecutor(String jsonData, String readerName) { (AbstractReaderAdapter) SmartCardServiceProvider.getService().findReader(Pattern.quote(readerName)); if (reader == null) { - throw new IllegalStateException(String.format(READER_NOT_FOUND_TEMPLATE, readerName)); + throw new IllegalStateException("Reader '" + readerName + "' is not registered"); } input = JsonUtil.getParser().fromJson(jsonData, JsonObject.class); output = new JsonObject(); @@ -308,7 +304,7 @@ private String execute() { releaseChannel(); break; default: - throw new IllegalArgumentException(service.name()); + throw new IllegalArgumentException("Unsupported reader service: " + service.name()); } } catch (Exception e) { output.add(JsonProperty.ERROR.getKey(), JsonUtil.getParser().toJsonTree(new BodyError(e))); @@ -385,7 +381,7 @@ private void transmitCardSelectionRequests() JsonUtil.getParser().fromJson(cardSelectorsJsonArray.get(i), classOfCardSelector); } catch (ClassNotFoundException e) { throw new IllegalArgumentException( - "Original CardSelector type " + cardSelectorsTypes.get(i) + " not found", e); + "Original CardSelector type '" + cardSelectorsTypes.get(i) + "' is not found", e); } cardSelectors.add(cardSelector); } @@ -430,8 +426,7 @@ private void scheduleCardSelectionScenario() { ((ObservableRemoteReaderAdapter) reader) .scheduleCardSelectionScenario(cardSelectionScenario, notificationMode); } else { - throw new IllegalStateException( - String.format("Reader [%s] is not observable", reader.getName())); + throw new IllegalStateException("Reader '" + reader.getName() + "' is not observable"); } } @@ -552,7 +547,7 @@ private String execute() { stopReaderDetection(); break; default: - throw new IllegalArgumentException(service.name()); + throw new IllegalArgumentException("Unsupported plugin service: " + service.name()); } } catch (Exception e) { output.add(JsonProperty.ERROR.getKey(), JsonUtil.getParser().toJsonTree(new BodyError(e))); @@ -622,9 +617,7 @@ private void allocateReader() { PoolPlugin poolPlugin = getPoolPlugin(readerGroupReference); if (poolPlugin == null) { throw new IllegalStateException( - String.format( - "There is no local pool plugin registered having the reader group name [%s]", - readerGroupReference)); + "No pool plugin is registered for reader group reference: " + readerGroupReference); } CardReader reader = poolPlugin.allocateReader(readerGroupReference); @@ -678,7 +671,8 @@ private void startReaderDetection() { } } if (!isObservationStarted) { - throw new IllegalStateException("There is no observable local plugin"); + throw new IllegalStateException( + "There is no observable local plugin. Unable to start reader detection"); } } diff --git a/src/main/java/org/eclipse/keyple/core/service/DistributedUtilAdapter.java b/src/main/java/org/eclipse/keyple/core/service/DistributedUtilAdapter.java index ee0576e..929a4d1 100644 --- a/src/main/java/org/eclipse/keyple/core/service/DistributedUtilAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/DistributedUtilAdapter.java @@ -156,9 +156,10 @@ private static JsonObject getJsonObject(String outputJson) throws Exception { // throw new UnexpectedStatusWordException(null, false, message); } else { throw new RuntimeException( - String.format( - "The distributed message sender received an unknown error: code: %s, message: %s", - code, message)); + "The distributed message sender received an unknown error: code=" + + code + + ", message=" + + message); } } else { // Standard error. @@ -178,9 +179,7 @@ private static JsonObject getJsonObject(String outputJson) throws Exception { // */ static void throwRuntimeException(Exception e) { throw new RuntimeException( // NOSONAR - String.format( - "The distributed message sender received an unexpected error: %s", e.getMessage()), - e); + "The distributed message sender received an unexpected error", e); } /** diff --git a/src/main/java/org/eclipse/keyple/core/service/InternalDto.java b/src/main/java/org/eclipse/keyple/core/service/InternalDto.java index 31b94b8..9582e51 100644 --- a/src/main/java/org/eclipse/keyple/core/service/InternalDto.java +++ b/src/main/java/org/eclipse/keyple/core/service/InternalDto.java @@ -61,7 +61,7 @@ public CardSelectionRequestSpi getCardSelectionRequest() { @Override public SmartCardSpi parse(CardSelectionResponseApi cardSelectionResponseApi) { - throw new UnsupportedOperationException("Method not supported for internal DTO"); + throw new UnsupportedOperationException("Method 'parse' is not supported for internal DTO"); } @Override diff --git a/src/main/java/org/eclipse/keyple/core/service/JsonAdapter.java b/src/main/java/org/eclipse/keyple/core/service/JsonAdapter.java index d55917b..17e959f 100644 --- a/src/main/java/org/eclipse/keyple/core/service/JsonAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/JsonAdapter.java @@ -87,9 +87,10 @@ public AbstractApduException deserialize( exceptionClass = (Class) Class.forName(type.getTypeName()); } catch (ClassNotFoundException e) { throw new JsonParseException( - String.format( - "Exception [%s] not founded in runtime environment. Original message: %s", - type, message)); + "Exception '" + + type + + "' is not found in runtime environment. Original message: " + + message); } try { @@ -100,12 +101,10 @@ public AbstractApduException deserialize( } catch (NoSuchMethodException e) { throw new JsonParseException( - String.format( - "No valid constructor found for exception [%s] with message [%s]", type, message)); + "No valid constructor found for exception '" + type + "' with message: " + message, e); } catch (InvocationTargetException | InstantiationException | IllegalAccessException e) { throw new JsonParseException( - String.format( - "Error while trying to build exception [%s] with message [%s]", type, message)); + "Failed to build exception '" + type + "' with message: " + message, e); } } } @@ -284,7 +283,7 @@ public CardSelectionScenarioAdapter deserialize( .fromJson(cardSelectorsJsonArray.get(i), classOfCardSelector)); } catch (ClassNotFoundException e) { throw new IllegalArgumentException( - "Original CardSelector type [" + cardSelectorsTypes.get(i) + "] not found", e); + "Original CardSelector type '" + cardSelectorsTypes.get(i) + "' is not found", e); } } diff --git a/src/main/java/org/eclipse/keyple/core/service/LocalPoolPluginAdapter.java b/src/main/java/org/eclipse/keyple/core/service/LocalPoolPluginAdapter.java index c48fd1c..b1d758c 100644 --- a/src/main/java/org/eclipse/keyple/core/service/LocalPoolPluginAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/LocalPoolPluginAdapter.java @@ -76,10 +76,7 @@ public SortedSet getReaderGroupReferences() { return poolPluginSpi.getReaderGroupReferences(); } catch (PluginIOException e) { throw new KeyplePluginException( - String.format( - "Pool plugin [%s] is unable to get reader group references: %s", - getName(), e.getMessage()), - e); + "Plugin '" + getName() + "' failed to retrieve reader group references", e); } } @@ -105,9 +102,10 @@ public CardReader allocateReader(String readerGroupReference) { readerSpi = poolPluginSpi.allocateReader(readerGroupReference); } catch (PluginIOException e) { throw new KeyplePluginException( - String.format( - "Pool plugin [%s] unable to allocate reader of reader group reference [%s]: %s", - getName(), readerGroupReference, e.getMessage()), + "Plugin '" + + getName() + + "' failed to allocate reader of reader group reference: " + + readerGroupReference, e); } @@ -152,10 +150,7 @@ public void releaseReader(CardReader reader) { ((LocalReaderAdapter) reader).getReaderSpi()); // NOSONAR nullity check is done above } catch (PluginIOException e) { throw new KeyplePluginException( - String.format( - "Pool plugin [%s] unable to release reader [%s]: %s", - getName(), reader.getName(), e.getMessage()), - e); + "Plugin '" + getName() + "' failed to release reader: " + reader.getName(), e); } finally { getReadersMap().remove(reader.getName()); ((LocalReaderAdapter) reader).unregister(); diff --git a/src/main/java/org/eclipse/keyple/core/service/LocalReaderAdapter.java b/src/main/java/org/eclipse/keyple/core/service/LocalReaderAdapter.java index e6b6da7..db9b4c9 100644 --- a/src/main/java/org/eclipse/keyple/core/service/LocalReaderAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/LocalReaderAdapter.java @@ -172,10 +172,10 @@ final List processCardSelectionRequests( computeCurrentProtocol(); } catch (ReaderIOException e) { throw new ReaderBrokenCommunicationException( - null, false, "Reader communication failure while opening physical channel", e); + null, false, "Failed to communicate with reader. Unable to open physical channel", e); } catch (CardIOException e) { throw new CardBrokenCommunicationException( - null, false, "Card communication failure while opening physical channel", e); + null, false, "Failed to communicate with card. Unable to open physical channel", e); } } @@ -244,14 +244,14 @@ final CardResponseApi processCardRequest( throw new ReaderBrokenCommunicationException( new CardResponseAdapter(apduResponses, false), false, - "Reader communication failure while transmitting a card request", + "Failed to communicate with reader. Unable to transmit card request", e); } catch (CardIOException e) { closeLogicalAndPhysicalChannelsSilently(); throw new CardBrokenCommunicationException( new CardResponseAdapter(apduResponses, false), false, - "Card communication failure while transmitting a card request", + "Failed to communicate with card. Unable to transmit card request", e); } } @@ -288,7 +288,7 @@ public boolean isCardPresent() { return readerSpi.checkCardPresence(); } catch (ReaderIOException e) { throw new ReaderCommunicationException( - "An exception occurred while checking the card presence", e); + "Failed to communicate with reader. Unable to check card presence", e); } } @@ -306,7 +306,10 @@ final void activateReaderProtocol(String readerProtocol, String applicationProto .notEmpty(readerProtocol, "readerProtocol") .notEmpty(applicationProtocol, "applicationProtocol"); if (!((ConfigurableReaderSpi) readerSpi).isProtocolSupported(readerProtocol)) { - throw new ReaderProtocolNotSupportedException(readerProtocol); + throw new ReaderProtocolNotSupportedException( + "Reader protocol '" + + readerProtocol + + "' is not supported. Unable to activate reader protocol"); } ((ConfigurableReaderSpi) readerSpi).activateProtocol(readerProtocol); protocolAssociations.put(readerProtocol, applicationProtocol); @@ -324,7 +327,10 @@ final void deactivateReaderProtocol(String readerProtocol) { Assert.getInstance().notEmpty(readerProtocol, "readerProtocol"); protocolAssociations.remove(readerProtocol); if (!((ConfigurableReaderSpi) readerSpi).isProtocolSupported(readerProtocol)) { - throw new ReaderProtocolNotSupportedException(readerProtocol); + throw new ReaderProtocolNotSupportedException( + "Reader protocol '" + + readerProtocol + + "' is not supported. Unable to deactivate reader protocol"); } ((ConfigurableReaderSpi) readerSpi).deactivateProtocol(readerProtocol); } @@ -341,7 +347,10 @@ public final void releaseChannel() throws ReaderBrokenCommunicationException { readerSpi.closePhysicalChannel(); } catch (ReaderIOException e) { throw new ReaderBrokenCommunicationException( - null, false, "Failed to release the physical channel", e); + null, + false, + "Failed to communicate with reader. Unable to release the physical channel", + e); } } @@ -568,9 +577,9 @@ private SelectionStatus processSelection( String logicalProtocolName = ((InternalCardSelector) cardSelector).getLogicalProtocolName(); if (logicalProtocolName != null && useDefaultProtocol) { throw new IllegalStateException( - "Protocol " + "Logical protocol '" + ((InternalCardSelector) cardSelector).getLogicalProtocolName() - + " not associated to a reader protocol"); + + "' is not associated to a reader protocol"); } // check protocol if enabled if (logicalProtocolName == null || logicalProtocolName.equals(currentLogicalProtocolName)) { @@ -747,7 +756,7 @@ private byte computeSelectApplicationP2( p2 = (byte) 0x03; break; default: - throw new IllegalStateException("Unexpected value: " + fileOccurrence); + throw new IllegalStateException("Unexpected FileOccurrence value: " + fileOccurrence); } switch (fileControlInformation) { @@ -764,7 +773,8 @@ private byte computeSelectApplicationP2( p2 |= (byte) 0x0C; break; default: - throw new IllegalStateException("Unexpected value: " + fileControlInformation); + throw new IllegalStateException( + "Unexpected FileControlInformation value: " + fileControlInformation); } return p2; diff --git a/src/main/java/org/eclipse/keyple/core/service/ObservableReaderStateServiceAdapter.java b/src/main/java/org/eclipse/keyple/core/service/ObservableReaderStateServiceAdapter.java index f91cc41..29dd932 100644 --- a/src/main/java/org/eclipse/keyple/core/service/ObservableReaderStateServiceAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/ObservableReaderStateServiceAdapter.java @@ -99,7 +99,9 @@ final class ObservableReaderStateServiceAdapter { this.reader, cardInsertionPassiveMonitoringJobAdapter, executorService)); } else { throw new IllegalStateException( - "Reader should implement implement a WaitForCardInsertion interface"); + "Cannot cast the provided reader extension to a valid WaitForCardInsertion interface. " + + "Actual type: " + + readerSpi.getClass().getName()); } // processing @@ -147,7 +149,9 @@ final class ObservableReaderStateServiceAdapter { this.reader, cardRemovalPassiveMonitoringJobAdapter, executorService)); } else { throw new IllegalStateException( - "Reader should implement implement a WaitForCardRemoval interface"); + "Cannot cast the provided reader extension to a valid WaitForCardRemoval interface. " + + "Actual type: " + + readerSpi.getClass().getName()); } switchState(AbstractObservableStateAdapter.MonitoringState.WAIT_FOR_START_DETECTION); diff --git a/src/main/java/org/eclipse/keyple/core/service/ObservableRemotePluginAdapter.java b/src/main/java/org/eclipse/keyple/core/service/ObservableRemotePluginAdapter.java index 178822d..79117da 100644 --- a/src/main/java/org/eclipse/keyple/core/service/ObservableRemotePluginAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/ObservableRemotePluginAdapter.java @@ -298,7 +298,8 @@ public void removeRemoteReader(String remoteReaderName) { getReadersMap().remove(reader.getName()); ((RemoteReaderAdapter) reader).unregister(); } else { - throw new IllegalArgumentException("Reader is not found, not registered or not remote"); + throw new IllegalArgumentException( + "Reader '" + remoteReaderName + "' is not found, not registered or not remote"); } } @@ -327,7 +328,8 @@ public void onPluginEvent(String jsonData) { PluginEventAdapter.class); } catch (RuntimeException e) { throw new IllegalArgumentException( - String.format("JSON data of the plugin event is malformed: %s", e.getMessage()), e); + "Plugin event contains malformed JSON data. Unable to parse event payload: " + jsonData, + e); } // Notify the observers for a plugin event. diff --git a/src/main/java/org/eclipse/keyple/core/service/ObservationManagerAdapter.java b/src/main/java/org/eclipse/keyple/core/service/ObservationManagerAdapter.java index 5a4fb6e..58c30ac 100644 --- a/src/main/java/org/eclipse/keyple/core/service/ObservationManagerAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/ObservationManagerAdapter.java @@ -70,7 +70,7 @@ void addObserver(T observer) { observer != null ? observer.getClass().getSimpleName() : null); Assert.getInstance().notNull(observer, "observer"); if (exceptionHandler == null) { - throw new IllegalStateException("No exception handler defined"); + throw new IllegalStateException("No exception handler is defined"); } synchronized (monitor) { observers.add(observer); diff --git a/src/main/java/org/eclipse/keyple/core/service/RemotePluginAdapter.java b/src/main/java/org/eclipse/keyple/core/service/RemotePluginAdapter.java index faea283..32172c8 100644 --- a/src/main/java/org/eclipse/keyple/core/service/RemotePluginAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/RemotePluginAdapter.java @@ -178,16 +178,18 @@ public final void onReaderEvent(String jsonData) { ReaderEventAdapter.class); } catch (RuntimeException e) { throw new IllegalArgumentException( - String.format("JSON data of the reader event is malformed : %s", e.getMessage()), e); + "Reader event contains malformed JSON data. Unable to parse event payload: " + jsonData, + e); } // Get the target reader. CardReader reader = getReader(readerEvent.getReaderName()); if (!(reader instanceof ObservableCardReader)) { throw new IllegalArgumentException( - String.format( - "Reader [%s] does not exists or is not observable: %s", - readerEvent.getReaderName(), reader)); + "Reader '" + + readerEvent.getReaderName() + + "' does not exists or is not observable: " + + reader); } // Notify the observers. diff --git a/src/main/java/org/eclipse/keyple/core/service/RemoteReaderAdapter.java b/src/main/java/org/eclipse/keyple/core/service/RemoteReaderAdapter.java index 5f39bab..c841106 100644 --- a/src/main/java/org/eclipse/keyple/core/service/RemoteReaderAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/RemoteReaderAdapter.java @@ -41,7 +41,7 @@ class RemoteReaderAdapter extends AbstractReaderAdapter { private static final Logger logger = LoggerFactory.getLogger(RemoteReaderAdapter.class); private static final String MSG_CLIENT_CORE_JSON_API_LEVEL_NOT_SUPPORTED = - "Client Core JSON API level not supported: "; + "Client Core JSON API level is not supported: "; private static final String OUTPUT = "output"; private final RemoteReaderSpi remoteReaderSpi; diff --git a/src/main/java/org/eclipse/keyple/core/service/SmartCardServiceAdapter.java b/src/main/java/org/eclipse/keyple/core/service/SmartCardServiceAdapter.java index 0f7dec4..d8aa65a 100644 --- a/src/main/java/org/eclipse/keyple/core/service/SmartCardServiceAdapter.java +++ b/src/main/java/org/eclipse/keyple/core/service/SmartCardServiceAdapter.java @@ -114,10 +114,7 @@ private int compareVersions(String providedVersion, String localVersion) { String[] localVersions = localVersion.split("[.]"); if (providedVersions.length != localVersions.length) { throw new IllegalStateException( - "Inconsistent version numbers: provided = " - + providedVersion - + ", local = " - + localVersion); + "Inconsistent version numbers: provided=" + providedVersion + ", local=" + localVersion); } Integer provided = 0; int local = 0; @@ -132,7 +129,7 @@ private int compareVersions(String providedVersion, String localVersion) { } } catch (NumberFormatException e) { throw new IllegalStateException( - "Bad version numbers: provided = " + providedVersion + ", local = " + localVersion, e); + "Bad version numbers: provided=" + providedVersion + ", local=" + localVersion, e); } return provided.compareTo(local); } @@ -311,7 +308,7 @@ private void checkPluginRegistration(String pluginName) { Assert.getInstance().notEmpty(pluginName, "pluginName"); if (plugins.containsKey(pluginName)) { throw new IllegalStateException( - String.format("Plugin '%s' has already been registered to the service", pluginName)); + "Plugin '" + pluginName + "' has already been registered to the service"); } } @@ -326,9 +323,9 @@ private void checkDistributedLocalServiceRegistration(String distributedLocalSer Assert.getInstance().notEmpty(distributedLocalServiceName, "distributedLocalServiceName"); if (distributedLocalServices.containsKey(distributedLocalServiceName)) { throw new IllegalStateException( - String.format( - "Service '%s' has already been registered to the service", - distributedLocalServiceName)); + "Local service '" + + distributedLocalServiceName + + "' has already been registered to the service"); } } @@ -355,7 +352,11 @@ public Plugin registerPlugin(KeyplePluginExtensionFactory pluginFactory) { plugin = createRemotePlugin((RemotePluginFactorySpi) pluginFactory); } else { - throw new IllegalArgumentException("The factory doesn't implement the right SPI"); + throw new IllegalArgumentException( + "Cannot cast the provided factory to " + + "PluginFactorySpi, PoolPluginFactorySpi or RemotePluginFactorySpi. " + + "Actual type: " + + pluginFactory.getClass().getName()); } plugins.put(plugin.getName(), plugin); @@ -366,9 +367,7 @@ public Plugin registerPlugin(KeyplePluginExtensionFactory pluginFactory) { "The provided plugin factory doesn't implement the plugin API properly", e); } catch (PluginIOException e) { - throw new KeyplePluginException( - String.format("Unable to register the plugin [%s]: %s", plugin.getName(), e.getMessage()), - e); + throw new KeyplePluginException("Failed to register plugin: " + plugin.getName(), e); } return plugin; } @@ -388,9 +387,11 @@ private AbstractPluginAdapter createLocalPlugin(PluginFactorySpi pluginFactorySp if (!pluginSpi.getName().equals(pluginFactorySpi.getPluginName())) { throw new IllegalArgumentException( - String.format( - "Plugin name [%s] mismatches the expected name [%s] provided by the factory", - pluginSpi.getName(), pluginFactorySpi.getPluginName())); + "Plugin name '" + + pluginSpi.getName() + + "' mismatches the expected name '" + + pluginFactorySpi.getPluginName() + + "' provided by the factory"); } AbstractPluginAdapter plugin; @@ -420,9 +421,11 @@ private AbstractPluginAdapter createLocalPoolPlugin(PoolPluginFactorySpi poolPlu if (!poolPluginSpi.getName().equals(poolPluginFactorySpi.getPoolPluginName())) { throw new IllegalArgumentException( - String.format( - "Pool plugin name [%s] mismatches the expected name [%s] provided by the factory", - poolPluginSpi.getName(), poolPluginFactorySpi.getPoolPluginName())); + "Pool plugin name '" + + poolPluginSpi.getName() + + "' mismatches the expected name '" + + poolPluginFactorySpi.getPoolPluginName() + + "' provided by the factory"); } return new LocalPoolPluginAdapter(poolPluginSpi); @@ -443,9 +446,11 @@ private AbstractPluginAdapter createRemotePlugin(RemotePluginFactorySpi remotePl if (!remotePluginSpi.getName().equals(remotePluginFactorySpi.getRemotePluginName())) { throw new IllegalArgumentException( - String.format( - "Remote plugin name [%s] mismatches the expected name [%s] provided by the factory", - remotePluginSpi.getName(), remotePluginFactorySpi.getRemotePluginName())); + "Remote plugin name '" + + remotePluginSpi.getName() + + "' mismatches the expected name '" + + remotePluginFactorySpi.getRemotePluginName() + + "' provided by the factory"); } AbstractPluginAdapter plugin; @@ -586,7 +591,9 @@ public DistributedLocalService registerDistributedLocalService( DistributedLocalServiceAdapter distributedLocalService; try { if (!(distributedLocalServiceExtensionFactory instanceof LocalServiceFactorySpi)) { - throw new IllegalArgumentException("The factory doesn't implement the right SPI"); + throw new IllegalArgumentException( + "Cannot cast the provided factory to LocalServiceFactorySpi. Actual type: " + + distributedLocalServiceExtensionFactory.getClass().getName()); } LocalServiceFactorySpi factory = @@ -602,9 +609,11 @@ public DistributedLocalService registerDistributedLocalService( if (!localServiceSpi.getName().equals(localServiceName)) { throw new IllegalArgumentException( - String.format( - "The local service name [%s] mismatches the expected name [%s] provided by the factory", - localServiceSpi.getName(), localServiceName)); + "Local service name '" + + localServiceSpi.getName() + + "' mismatches the expected name '" + + localServiceName + + "' provided by the factory"); } distributedLocalService = new DistributedLocalServiceAdapter(localServiceSpi);