1 /*
2 * Prometheus: Application Framework
3 * Copyright 2012-2026. Tony Washer
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6 * use this file except in compliance with the License. You may obtain a copy
7 * of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 */
17 package io.github.tonywasher.joceanus.prometheus.data;
18
19 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
20 import io.github.tonywasher.joceanus.metis.data.MetisDataType;
21 import io.github.tonywasher.joceanus.metis.field.MetisFieldVersioned;
22
23 /**
24 * Prometheus Data fields.
25 *
26 * @param <T> the data type
27 */
28 public class PrometheusEncryptedField<T extends PrometheusEncryptedDataItem>
29 extends MetisFieldVersioned<T> {
30 /**
31 * Constructor.
32 *
33 * @param pAnchor the anchor
34 * @param pId the fieldId
35 * @param pDataType the dataType of the field
36 * @param pMaxLength the maximum length of the field
37 */
38 PrometheusEncryptedField(final PrometheusEncryptedFieldSet<T> pAnchor,
39 final MetisDataFieldId pId,
40 final MetisDataType pDataType,
41 final Integer pMaxLength) {
42 /* Initialise underlying class */
43 super(pAnchor, pId, pDataType, pMaxLength, true);
44 }
45
46 @Override
47 protected void checkValidity() {
48 /* Check underlying options */
49 super.checkValidity();
50
51 /* Object/ByteArray/Links are not valid for Encryption */
52 switch (getDataType()) {
53 case OBJECT:
54 case BYTEARRAY:
55 case LINK:
56 case LINKSET:
57 throw new IllegalArgumentException("Invalid encrypted object");
58 default:
59 break;
60 }
61 }
62 }