Subversion Repositories SmartDukaan

Rev

Rev 11096 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 11096 Rev 14780
Line 48... Line 48...
48
  private static final org.apache.thrift.protocol.TField SUPC_FIELD_DESC = new org.apache.thrift.protocol.TField("supc", org.apache.thrift.protocol.TType.STRING, (short)23);
48
  private static final org.apache.thrift.protocol.TField SUPC_FIELD_DESC = new org.apache.thrift.protocol.TField("supc", org.apache.thrift.protocol.TType.STRING, (short)23);
49
  private static final org.apache.thrift.protocol.TField LAST_UPDATED_INVENTORY_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdatedInventory", org.apache.thrift.protocol.TType.I64, (short)24);
49
  private static final org.apache.thrift.protocol.TField LAST_UPDATED_INVENTORY_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdatedInventory", org.apache.thrift.protocol.TType.I64, (short)24);
50
  private static final org.apache.thrift.protocol.TField LAST_UPDATED_INVENTORY_TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdatedInventoryTimestamp", org.apache.thrift.protocol.TType.I64, (short)25);
50
  private static final org.apache.thrift.protocol.TField LAST_UPDATED_INVENTORY_TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdatedInventoryTimestamp", org.apache.thrift.protocol.TType.I64, (short)25);
51
  private static final org.apache.thrift.protocol.TField SHIPPING_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("shippingTime", org.apache.thrift.protocol.TType.I64, (short)26);
51
  private static final org.apache.thrift.protocol.TField SHIPPING_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("shippingTime", org.apache.thrift.protocol.TType.I64, (short)26);
52
  private static final org.apache.thrift.protocol.TField COURIER_COST_MARKETPLACE_FIELD_DESC = new org.apache.thrift.protocol.TField("courierCostMarketplace", org.apache.thrift.protocol.TType.DOUBLE, (short)27);
52
  private static final org.apache.thrift.protocol.TField COURIER_COST_MARKETPLACE_FIELD_DESC = new org.apache.thrift.protocol.TField("courierCostMarketplace", org.apache.thrift.protocol.TType.DOUBLE, (short)27);
-
 
53
  private static final org.apache.thrift.protocol.TField IS_VOI_LISTED_FIELD_DESC = new org.apache.thrift.protocol.TField("isVoiListed", org.apache.thrift.protocol.TType.BOOL, (short)28);
53
 
54
 
54
  private long item_id; // required
55
  private long item_id; // required
55
  private long warehouseId; // required
56
  private long warehouseId; // required
56
  private double exceptionPrice; // required
57
  private double exceptionPrice; // required
57
  private boolean isListedOnSnapdeal; // required
58
  private boolean isListedOnSnapdeal; // required
Line 76... Line 77...
76
  private String supc; // required
77
  private String supc; // required
77
  private long lastUpdatedInventory; // required
78
  private long lastUpdatedInventory; // required
78
  private long lastUpdatedInventoryTimestamp; // required
79
  private long lastUpdatedInventoryTimestamp; // required
79
  private long shippingTime; // required
80
  private long shippingTime; // required
80
  private double courierCostMarketplace; // required
81
  private double courierCostMarketplace; // required
-
 
82
  private boolean isVoiListed; // required
81
 
83
 
82
  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
84
  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
83
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
85
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
84
    ITEM_ID((short)1, "item_id"),
86
    ITEM_ID((short)1, "item_id"),
85
    WAREHOUSE_ID((short)2, "warehouseId"),
87
    WAREHOUSE_ID((short)2, "warehouseId"),
Line 109... Line 111...
109
    SKU_AT_SNAPDEAL((short)22, "skuAtSnapdeal"),
111
    SKU_AT_SNAPDEAL((short)22, "skuAtSnapdeal"),
110
    SUPC((short)23, "supc"),
112
    SUPC((short)23, "supc"),
111
    LAST_UPDATED_INVENTORY((short)24, "lastUpdatedInventory"),
113
    LAST_UPDATED_INVENTORY((short)24, "lastUpdatedInventory"),
112
    LAST_UPDATED_INVENTORY_TIMESTAMP((short)25, "lastUpdatedInventoryTimestamp"),
114
    LAST_UPDATED_INVENTORY_TIMESTAMP((short)25, "lastUpdatedInventoryTimestamp"),
113
    SHIPPING_TIME((short)26, "shippingTime"),
115
    SHIPPING_TIME((short)26, "shippingTime"),
114
    COURIER_COST_MARKETPLACE((short)27, "courierCostMarketplace");
116
    COURIER_COST_MARKETPLACE((short)27, "courierCostMarketplace"),
-
 
117
    IS_VOI_LISTED((short)28, "isVoiListed");
115
 
118
 
116
    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
119
    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
117
 
120
 
118
    static {
121
    static {
119
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
122
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
Line 178... Line 181...
178
          return LAST_UPDATED_INVENTORY_TIMESTAMP;
181
          return LAST_UPDATED_INVENTORY_TIMESTAMP;
179
        case 26: // SHIPPING_TIME
182
        case 26: // SHIPPING_TIME
180
          return SHIPPING_TIME;
183
          return SHIPPING_TIME;
181
        case 27: // COURIER_COST_MARKETPLACE
184
        case 27: // COURIER_COST_MARKETPLACE
182
          return COURIER_COST_MARKETPLACE;
185
          return COURIER_COST_MARKETPLACE;
-
 
186
        case 28: // IS_VOI_LISTED
-
 
187
          return IS_VOI_LISTED;
183
        default:
188
        default:
184
          return null;
189
          return null;
185
      }
190
      }
186
    }
191
    }
187
 
192
 
Line 238... Line 243...
238
  private static final int __MAXNLC_ISSET_ID = 15;
243
  private static final int __MAXNLC_ISSET_ID = 15;
239
  private static final int __LASTUPDATEDINVENTORY_ISSET_ID = 16;
244
  private static final int __LASTUPDATEDINVENTORY_ISSET_ID = 16;
240
  private static final int __LASTUPDATEDINVENTORYTIMESTAMP_ISSET_ID = 17;
245
  private static final int __LASTUPDATEDINVENTORYTIMESTAMP_ISSET_ID = 17;
241
  private static final int __SHIPPINGTIME_ISSET_ID = 18;
246
  private static final int __SHIPPINGTIME_ISSET_ID = 18;
242
  private static final int __COURIERCOSTMARKETPLACE_ISSET_ID = 19;
247
  private static final int __COURIERCOSTMARKETPLACE_ISSET_ID = 19;
-
 
248
  private static final int __ISVOILISTED_ISSET_ID = 20;
243
  private BitSet __isset_bit_vector = new BitSet(20);
249
  private BitSet __isset_bit_vector = new BitSet(21);
244
 
250
 
245
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
251
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
246
  static {
252
  static {
247
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
253
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
248
    tmpMap.put(_Fields.ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("item_id", org.apache.thrift.TFieldRequirementType.DEFAULT, 
254
    tmpMap.put(_Fields.ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("item_id", org.apache.thrift.TFieldRequirementType.DEFAULT, 
Line 297... Line 303...
297
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
303
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
298
    tmpMap.put(_Fields.SHIPPING_TIME, new org.apache.thrift.meta_data.FieldMetaData("shippingTime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
304
    tmpMap.put(_Fields.SHIPPING_TIME, new org.apache.thrift.meta_data.FieldMetaData("shippingTime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
299
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
305
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
300
    tmpMap.put(_Fields.COURIER_COST_MARKETPLACE, new org.apache.thrift.meta_data.FieldMetaData("courierCostMarketplace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
306
    tmpMap.put(_Fields.COURIER_COST_MARKETPLACE, new org.apache.thrift.meta_data.FieldMetaData("courierCostMarketplace", org.apache.thrift.TFieldRequirementType.DEFAULT, 
301
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
307
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
-
 
308
    tmpMap.put(_Fields.IS_VOI_LISTED, new org.apache.thrift.meta_data.FieldMetaData("isVoiListed", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-
 
309
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
302
    metaDataMap = Collections.unmodifiableMap(tmpMap);
310
    metaDataMap = Collections.unmodifiableMap(tmpMap);
303
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SnapdealItemDetails.class, metaDataMap);
311
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SnapdealItemDetails.class, metaDataMap);
304
  }
312
  }
305
 
313
 
306
  public SnapdealItemDetails() {
314
  public SnapdealItemDetails() {
Line 331... Line 339...
331
    String skuAtSnapdeal,
339
    String skuAtSnapdeal,
332
    String supc,
340
    String supc,
333
    long lastUpdatedInventory,
341
    long lastUpdatedInventory,
334
    long lastUpdatedInventoryTimestamp,
342
    long lastUpdatedInventoryTimestamp,
335
    long shippingTime,
343
    long shippingTime,
336
    double courierCostMarketplace)
344
    double courierCostMarketplace,
-
 
345
    boolean isVoiListed)
337
  {
346
  {
338
    this();
347
    this();
339
    this.item_id = item_id;
348
    this.item_id = item_id;
340
    setItem_idIsSet(true);
349
    setItem_idIsSet(true);
341
    this.warehouseId = warehouseId;
350
    this.warehouseId = warehouseId;
Line 381... Line 390...
381
    setLastUpdatedInventoryTimestampIsSet(true);
390
    setLastUpdatedInventoryTimestampIsSet(true);
382
    this.shippingTime = shippingTime;
391
    this.shippingTime = shippingTime;
383
    setShippingTimeIsSet(true);
392
    setShippingTimeIsSet(true);
384
    this.courierCostMarketplace = courierCostMarketplace;
393
    this.courierCostMarketplace = courierCostMarketplace;
385
    setCourierCostMarketplaceIsSet(true);
394
    setCourierCostMarketplaceIsSet(true);
-
 
395
    this.isVoiListed = isVoiListed;
-
 
396
    setIsVoiListedIsSet(true);
386
  }
397
  }
387
 
398
 
388
  /**
399
  /**
389
   * Performs a deep copy on <i>other</i>.
400
   * Performs a deep copy on <i>other</i>.
390
   */
401
   */
Line 430... Line 441...
430
    }
441
    }
431
    this.lastUpdatedInventory = other.lastUpdatedInventory;
442
    this.lastUpdatedInventory = other.lastUpdatedInventory;
432
    this.lastUpdatedInventoryTimestamp = other.lastUpdatedInventoryTimestamp;
443
    this.lastUpdatedInventoryTimestamp = other.lastUpdatedInventoryTimestamp;
433
    this.shippingTime = other.shippingTime;
444
    this.shippingTime = other.shippingTime;
434
    this.courierCostMarketplace = other.courierCostMarketplace;
445
    this.courierCostMarketplace = other.courierCostMarketplace;
-
 
446
    this.isVoiListed = other.isVoiListed;
435
  }
447
  }
436
 
448
 
437
  public SnapdealItemDetails deepCopy() {
449
  public SnapdealItemDetails deepCopy() {
438
    return new SnapdealItemDetails(this);
450
    return new SnapdealItemDetails(this);
439
  }
451
  }
Line 485... Line 497...
485
    this.lastUpdatedInventoryTimestamp = 0;
497
    this.lastUpdatedInventoryTimestamp = 0;
486
    setShippingTimeIsSet(false);
498
    setShippingTimeIsSet(false);
487
    this.shippingTime = 0;
499
    this.shippingTime = 0;
488
    setCourierCostMarketplaceIsSet(false);
500
    setCourierCostMarketplaceIsSet(false);
489
    this.courierCostMarketplace = 0.0;
501
    this.courierCostMarketplace = 0.0;
-
 
502
    setIsVoiListedIsSet(false);
-
 
503
    this.isVoiListed = false;
490
  }
504
  }
491
 
505
 
492
  public long getItem_id() {
506
  public long getItem_id() {
493
    return this.item_id;
507
    return this.item_id;
494
  }
508
  }
Line 1096... Line 1110...
1096
 
1110
 
1097
  public void setCourierCostMarketplaceIsSet(boolean value) {
1111
  public void setCourierCostMarketplaceIsSet(boolean value) {
1098
    __isset_bit_vector.set(__COURIERCOSTMARKETPLACE_ISSET_ID, value);
1112
    __isset_bit_vector.set(__COURIERCOSTMARKETPLACE_ISSET_ID, value);
1099
  }
1113
  }
1100
 
1114
 
-
 
1115
  public boolean isIsVoiListed() {
-
 
1116
    return this.isVoiListed;
-
 
1117
  }
-
 
1118
 
-
 
1119
  public void setIsVoiListed(boolean isVoiListed) {
-
 
1120
    this.isVoiListed = isVoiListed;
-
 
1121
    setIsVoiListedIsSet(true);
-
 
1122
  }
-
 
1123
 
-
 
1124
  public void unsetIsVoiListed() {
-
 
1125
    __isset_bit_vector.clear(__ISVOILISTED_ISSET_ID);
-
 
1126
  }
-
 
1127
 
-
 
1128
  /** Returns true if field isVoiListed is set (has been assigned a value) and false otherwise */
-
 
1129
  public boolean isSetIsVoiListed() {
-
 
1130
    return __isset_bit_vector.get(__ISVOILISTED_ISSET_ID);
-
 
1131
  }
-
 
1132
 
-
 
1133
  public void setIsVoiListedIsSet(boolean value) {
-
 
1134
    __isset_bit_vector.set(__ISVOILISTED_ISSET_ID, value);
-
 
1135
  }
-
 
1136
 
1101
  public void setFieldValue(_Fields field, Object value) {
1137
  public void setFieldValue(_Fields field, Object value) {
1102
    switch (field) {
1138
    switch (field) {
1103
    case ITEM_ID:
1139
    case ITEM_ID:
1104
      if (value == null) {
1140
      if (value == null) {
1105
        unsetItem_id();
1141
        unsetItem_id();
Line 1314... Line 1350...
1314
      } else {
1350
      } else {
1315
        setCourierCostMarketplace((Double)value);
1351
        setCourierCostMarketplace((Double)value);
1316
      }
1352
      }
1317
      break;
1353
      break;
1318
 
1354
 
-
 
1355
    case IS_VOI_LISTED:
-
 
1356
      if (value == null) {
-
 
1357
        unsetIsVoiListed();
-
 
1358
      } else {
-
 
1359
        setIsVoiListed((Boolean)value);
-
 
1360
      }
-
 
1361
      break;
-
 
1362
 
1319
    }
1363
    }
1320
  }
1364
  }
1321
 
1365
 
1322
  public Object getFieldValue(_Fields field) {
1366
  public Object getFieldValue(_Fields field) {
1323
    switch (field) {
1367
    switch (field) {
Line 1400... Line 1444...
1400
      return Long.valueOf(getShippingTime());
1444
      return Long.valueOf(getShippingTime());
1401
 
1445
 
1402
    case COURIER_COST_MARKETPLACE:
1446
    case COURIER_COST_MARKETPLACE:
1403
      return Double.valueOf(getCourierCostMarketplace());
1447
      return Double.valueOf(getCourierCostMarketplace());
1404
 
1448
 
-
 
1449
    case IS_VOI_LISTED:
-
 
1450
      return Boolean.valueOf(isIsVoiListed());
-
 
1451
 
1405
    }
1452
    }
1406
    throw new IllegalStateException();
1453
    throw new IllegalStateException();
1407
  }
1454
  }
1408
 
1455
 
1409
  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
1456
  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
Line 1465... Line 1512...
1465
      return isSetLastUpdatedInventoryTimestamp();
1512
      return isSetLastUpdatedInventoryTimestamp();
1466
    case SHIPPING_TIME:
1513
    case SHIPPING_TIME:
1467
      return isSetShippingTime();
1514
      return isSetShippingTime();
1468
    case COURIER_COST_MARKETPLACE:
1515
    case COURIER_COST_MARKETPLACE:
1469
      return isSetCourierCostMarketplace();
1516
      return isSetCourierCostMarketplace();
-
 
1517
    case IS_VOI_LISTED:
-
 
1518
      return isSetIsVoiListed();
1470
    }
1519
    }
1471
    throw new IllegalStateException();
1520
    throw new IllegalStateException();
1472
  }
1521
  }
1473
 
1522
 
1474
  @Override
1523
  @Override
Line 1725... Line 1774...
1725
        return false;
1774
        return false;
1726
      if (this.courierCostMarketplace != that.courierCostMarketplace)
1775
      if (this.courierCostMarketplace != that.courierCostMarketplace)
1727
        return false;
1776
        return false;
1728
    }
1777
    }
1729
 
1778
 
-
 
1779
    boolean this_present_isVoiListed = true;
-
 
1780
    boolean that_present_isVoiListed = true;
-
 
1781
    if (this_present_isVoiListed || that_present_isVoiListed) {
-
 
1782
      if (!(this_present_isVoiListed && that_present_isVoiListed))
-
 
1783
        return false;
-
 
1784
      if (this.isVoiListed != that.isVoiListed)
-
 
1785
        return false;
-
 
1786
    }
-
 
1787
 
1730
    return true;
1788
    return true;
1731
  }
1789
  }
1732
 
1790
 
1733
  @Override
1791
  @Override
1734
  public int hashCode() {
1792
  public int hashCode() {
Line 2011... Line 2069...
2011
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.courierCostMarketplace, typedOther.courierCostMarketplace);
2069
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.courierCostMarketplace, typedOther.courierCostMarketplace);
2012
      if (lastComparison != 0) {
2070
      if (lastComparison != 0) {
2013
        return lastComparison;
2071
        return lastComparison;
2014
      }
2072
      }
2015
    }
2073
    }
-
 
2074
    lastComparison = Boolean.valueOf(isSetIsVoiListed()).compareTo(typedOther.isSetIsVoiListed());
-
 
2075
    if (lastComparison != 0) {
-
 
2076
      return lastComparison;
-
 
2077
    }
-
 
2078
    if (isSetIsVoiListed()) {
-
 
2079
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isVoiListed, typedOther.isVoiListed);
-
 
2080
      if (lastComparison != 0) {
-
 
2081
        return lastComparison;
-
 
2082
      }
-
 
2083
    }
2016
    return 0;
2084
    return 0;
2017
  }
2085
  }
2018
 
2086
 
2019
  public _Fields fieldForId(int fieldId) {
2087
  public _Fields fieldForId(int fieldId) {
2020
    return _Fields.findByThriftId(fieldId);
2088
    return _Fields.findByThriftId(fieldId);
Line 2237... Line 2305...
2237
            setCourierCostMarketplaceIsSet(true);
2305
            setCourierCostMarketplaceIsSet(true);
2238
          } else { 
2306
          } else { 
2239
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
2307
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
2240
          }
2308
          }
2241
          break;
2309
          break;
-
 
2310
        case 28: // IS_VOI_LISTED
-
 
2311
          if (field.type == org.apache.thrift.protocol.TType.BOOL) {
-
 
2312
            this.isVoiListed = iprot.readBool();
-
 
2313
            setIsVoiListedIsSet(true);
-
 
2314
          } else { 
-
 
2315
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-
 
2316
          }
-
 
2317
          break;
2242
        default:
2318
        default:
2243
          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
2319
          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
2244
      }
2320
      }
2245
      iprot.readFieldEnd();
2321
      iprot.readFieldEnd();
2246
    }
2322
    }
Line 2345... Line 2421...
2345
    oprot.writeI64(this.shippingTime);
2421
    oprot.writeI64(this.shippingTime);
2346
    oprot.writeFieldEnd();
2422
    oprot.writeFieldEnd();
2347
    oprot.writeFieldBegin(COURIER_COST_MARKETPLACE_FIELD_DESC);
2423
    oprot.writeFieldBegin(COURIER_COST_MARKETPLACE_FIELD_DESC);
2348
    oprot.writeDouble(this.courierCostMarketplace);
2424
    oprot.writeDouble(this.courierCostMarketplace);
2349
    oprot.writeFieldEnd();
2425
    oprot.writeFieldEnd();
-
 
2426
    oprot.writeFieldBegin(IS_VOI_LISTED_FIELD_DESC);
-
 
2427
    oprot.writeBool(this.isVoiListed);
-
 
2428
    oprot.writeFieldEnd();
2350
    oprot.writeFieldStop();
2429
    oprot.writeFieldStop();
2351
    oprot.writeStructEnd();
2430
    oprot.writeStructEnd();
2352
  }
2431
  }
2353
 
2432
 
2354
  @Override
2433
  @Override
Line 2489... Line 2568...
2489
    first = false;
2568
    first = false;
2490
    if (!first) sb.append(", ");
2569
    if (!first) sb.append(", ");
2491
    sb.append("courierCostMarketplace:");
2570
    sb.append("courierCostMarketplace:");
2492
    sb.append(this.courierCostMarketplace);
2571
    sb.append(this.courierCostMarketplace);
2493
    first = false;
2572
    first = false;
-
 
2573
    if (!first) sb.append(", ");
-
 
2574
    sb.append("isVoiListed:");
-
 
2575
    sb.append(this.isVoiListed);
-
 
2576
    first = false;
2494
    sb.append(")");
2577
    sb.append(")");
2495
    return sb.toString();
2578
    return sb.toString();
2496
  }
2579
  }
2497
 
2580
 
2498
  public void validate() throws org.apache.thrift.TException {
2581
  public void validate() throws org.apache.thrift.TException {