{"record":{"id":"355a252c81e728ae","repo":"pentaho/pentaho-kettle","slug":"i-don-t-know-how-to-convert-a-serializable-value-to-internet","errorCode":null,"errorMessage":" : I don't know how to convert a serializable value to Internet address.","messagePattern":" : I don't know how to convert a serializable value to Internet address\\.","errorType":"exception","errorClass":"KettleValueException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java","lineNumber":139,"sourceCode":"      case TYPE_BIGNUMBER:\n        switch ( storageType ) {\n          case STORAGE_TYPE_NORMAL:\n            return convertBigNumberToInternetAddress( (BigDecimal) object );\n          case STORAGE_TYPE_BINARY_STRING:\n            return convertBigNumberToInternetAddress( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) );\n          case STORAGE_TYPE_INDEXED:\n            return convertBigNumberToInternetAddress( (BigDecimal) index[( (Integer) object ).intValue()] );\n          default:\n            throw new KettleValueException( toString() + \" : Unknown storage type \" + storageType + \" specified.\" );\n        }\n      case TYPE_BOOLEAN:\n        throw new KettleValueException( toString()\n          + \" : I don't know how to convert a boolean to a Internet address.\" );\n      case TYPE_BINARY:\n        throw new KettleValueException( toString()\n          + \" : I don't know how to convert a binary value to Internet address.\" );\n      case TYPE_SERIALIZABLE:\n        throw new KettleValueException( toString()\n          + \" : I don't know how to convert a serializable value to Internet address.\" );\n\n      default:\n        throw new KettleValueException( toString() + \" : Unknown type \" + type + \" specified.\" );\n    }\n  }\n\n  @Override\n  public Date getDate( Object object ) throws KettleValueException {\n    throw new KettleValueException( toStringMeta()\n      + \": it's not possible to convert from Internet Address to a date\" );\n  }\n\n  @Override\n  public Long getInteger( Object object ) throws KettleValueException {\n    InetAddress address = getInternetAddress( object );\n    if ( address == null ) {\n      return null;","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java#L121-L157","documentation":"Values declared TYPE_SERIALIZABLE hold arbitrary Java Serializable objects, and getInternetAddress() cannot know how to turn one into an InetAddress, so it throws this KettleValueException explicitly. Only string/number/integer/bignumber/InetAddress-typed data are convertible.","triggerScenarios":"getInternetAddress(), getString(), inetAddress(), or getNativeDataType() invoked on a ValueMetaInternetAddress whose type is TYPE_SERIALIZABLE, commonly when passing through serializable pass-through fields (e.g. Kettle 'Serializable' columns) into an address-typed metadata.","commonSituations":"Row fields carrying user-defined objects through transforms where downstream metadata was wrongly declared as Internet Address; merging streams where one side has a serializable object column aligned by position with an address column.","solutions":["Correct the downstream value meta type; it should be TYPE_INET, not TYPE_SERIALIZABLE","Extract the address into a String field upstream before the Internet Address metadata expects it","Check stream alignment (getFields()/row metadata) to prevent serializable columns from being typed as addresses","If the serializable object wraps an InetAddress, unwrap it upstream and store as TYPE_INET"],"exampleFix":"// before\nInetAddress addr = meta.getInternetAddress(serializableObject); // throws\n// after\nif (serializableObject instanceof InetAddress) {\n  InetAddress addr = (InetAddress) serializableObject;\n} else {\n  throw new KettleException(\"Field is not an InetAddress: \" + serializableObject.getClass());\n}","handlingStrategy":"type-guard","validationCode":"if (meta.getType() == ValueMetaInterface.TYPE_SERIALIZABLE) {\n  throw new KettleException(\"Field \" + meta.getName() + \" holds a serializable object; convert to String/INET first\");\n}","typeGuard":"if (object instanceof InetAddress) { InetAddress addr = (InetAddress) object; }","tryCatchPattern":"try {\n  InetAddress addr = meta.getInternetAddress(object);\n} catch (KettleValueException e) {\n  if (e.getMessage().contains(\"serializable value to Internet address\")) { /* unwrap or retype upstream */ }\n  throw e;\n}","preventionTips":["Avoid passing Serializable columns through type-converting steps","Unwrap address objects upstream into TYPE_INET fields","Validate merged-stream metadata field by field","Prefer explicit string representations over serializable pass-through"],"tags":["kettle","pdi","type-conversion","serializable"],"backgroundTag":"incompatible-source-type","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}