From 7806ed4b34bb1ad273b2cea08955ae6d6cfac385 Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Wed, 27 Apr 2022 15:39:33 -0400 Subject: [PATCH] fix #3923: removing the need for mappingproviders --- .../CamelKV1ResourceMappingProvider.java | 39 ---- ...etes.api.KubernetesResourceMappingProvider | 16 -- ...CamelKV1alpha1ResourceMappingProvider.java | 35 --- ...etes.api.KubernetesResourceMappingProvider | 16 -- .../ChaosMeshResourceMappingProvider.java | 50 ----- ...etes.api.KubernetesResourceMappingProvider | 17 -- .../model/KnativeResourceMappingProvider.java | 60 ----- ...etes.api.KubernetesResourceMappingProvider | 17 -- ...ServiceCatalogResourceMappingProvider.java | 42 ---- ...etes.api.KubernetesResourceMappingProvider | 17 -- ...TektonTriggersResourceMappingProvider.java | 42 ---- ...etes.api.KubernetesResourceMappingProvider | 16 -- ...TektonTriggersResourceMappingProvider.java | 40 ---- ...etes.api.KubernetesResourceMappingProvider | 16 -- ...TektonV1alpha1ResourceMappingProvider.java | 41 ---- ...etes.api.KubernetesResourceMappingProvider | 16 -- .../TektonV1beta1ResourceMappingProvider.java | 38 ---- ...etes.api.KubernetesResourceMappingProvider | 16 -- ...VolumeSnapshotResourceMappingProvider.java | 37 ---- ...etes.api.KubernetesResourceMappingProvider | 17 -- .../kubernetes-model-core/pom.xml | 4 + .../KubernetesResourceMappingProvider.java | 25 --- .../kubernetes/api/model/KubernetesList.java | 6 + .../InternalResourceMappingProvider.java | 38 ---- .../internal/KubernetesDeserializer.java | 206 ++---------------- ...etes.api.KubernetesResourceMappingProvider | 1 - .../internal/KubernetesDeserializerTest.java | 47 +--- .../KubernetesCoreTypeAnnotator.java | 17 +- .../features/src/main/resources/feature.xml | 1 + pom.xml | 17 ++ 30 files changed, 64 insertions(+), 886 deletions(-) delete mode 100644 extensions/camel-k/model-v1/src/main/java/io/fabric8/camelk/CamelKV1ResourceMappingProvider.java delete mode 100644 extensions/camel-k/model-v1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/camel-k/model-v1alpha1/src/main/java/io/fabric8/camelk/CamelKV1alpha1ResourceMappingProvider.java delete mode 100644 extensions/camel-k/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/chaosmesh/model/src/main/java/io/fabric8/chaosmesh/api/model/ChaosMeshResourceMappingProvider.java delete mode 100644 extensions/chaosmesh/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/knative/model/src/main/java/io/fabric8/knative/api/model/KnativeResourceMappingProvider.java delete mode 100644 extensions/knative/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/service-catalog/model/src/main/java/io/fabric8/servicecatalog/api/model/ServiceCatalogResourceMappingProvider.java delete mode 100644 extensions/service-catalog/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/tekton/model-triggers-v1alpha1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java delete mode 100644 extensions/tekton/model-triggers-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/tekton/model-triggers-v1beta1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java delete mode 100644 extensions/tekton/model-triggers-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/tekton/model-v1alpha1/src/main/java/io/fabric8/tekton/TektonV1alpha1ResourceMappingProvider.java delete mode 100644 extensions/tekton/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/tekton/model-v1beta1/src/main/java/io/fabric8/tekton/TektonV1beta1ResourceMappingProvider.java delete mode 100644 extensions/tekton/model-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 extensions/volumesnapshot/model/src/main/java/io/fabric8/volumesnapshot/api/model/VolumeSnapshotResourceMappingProvider.java delete mode 100644 extensions/volumesnapshot/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider delete mode 100644 kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/KubernetesResourceMappingProvider.java delete mode 100644 kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/InternalResourceMappingProvider.java delete mode 100644 kubernetes-model-generator/kubernetes-model-core/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider diff --git a/extensions/camel-k/model-v1/src/main/java/io/fabric8/camelk/CamelKV1ResourceMappingProvider.java b/extensions/camel-k/model-v1/src/main/java/io/fabric8/camelk/CamelKV1ResourceMappingProvider.java deleted file mode 100644 index af639f4c7f..0000000000 --- a/extensions/camel-k/model-v1/src/main/java/io/fabric8/camelk/CamelKV1ResourceMappingProvider.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.camelk; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class CamelKV1ResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public CamelKV1ResourceMappingProvider() { - mappings.put("camel.apahce.org/v1#Build", io.fabric8.camelk.v1.Build.class); - mappings.put("camel.apahce.org/v1#CamelCatalog", io.fabric8.camelk.v1.CamelCatalog.class); - mappings.put("camel.apahce.org/v1#Integration", io.fabric8.camelk.v1.Integration.class); - mappings.put("camel.apahce.org/v1#IntegrationKit", io.fabric8.camelk.v1.IntegrationKit.class); - mappings.put("camel.apahce.org/v1#IntegrationPlatform", io.fabric8.camelk.v1.IntegrationPlatform.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/camel-k/model-v1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/camel-k/model-v1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 9876591d77..0000000000 --- a/extensions/camel-k/model-v1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.camelk.CamelKV1ResourceMappingProvider \ No newline at end of file diff --git a/extensions/camel-k/model-v1alpha1/src/main/java/io/fabric8/camelk/CamelKV1alpha1ResourceMappingProvider.java b/extensions/camel-k/model-v1alpha1/src/main/java/io/fabric8/camelk/CamelKV1alpha1ResourceMappingProvider.java deleted file mode 100644 index 20aede7230..0000000000 --- a/extensions/camel-k/model-v1alpha1/src/main/java/io/fabric8/camelk/CamelKV1alpha1ResourceMappingProvider.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.camelk; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class CamelKV1alpha1ResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public CamelKV1alpha1ResourceMappingProvider() { - mappings.put("camel.apache.org/v1alpha1#Kamelet", io.fabric8.camelk.v1alpha1.Kamelet.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/camel-k/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/camel-k/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 5179ef1ef8..0000000000 --- a/extensions/camel-k/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.camelk.CamelKV1alpha1ResourceMappingProvider diff --git a/extensions/chaosmesh/model/src/main/java/io/fabric8/chaosmesh/api/model/ChaosMeshResourceMappingProvider.java b/extensions/chaosmesh/model/src/main/java/io/fabric8/chaosmesh/api/model/ChaosMeshResourceMappingProvider.java deleted file mode 100644 index 558c24f979..0000000000 --- a/extensions/chaosmesh/model/src/main/java/io/fabric8/chaosmesh/api/model/ChaosMeshResourceMappingProvider.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.chaosmesh.api.model; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class ChaosMeshResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public ChaosMeshResourceMappingProvider() { - mappings.put("chaos-mesh.org/v1alpha1#IOChaos", io.fabric8.chaosmesh.v1alpha1.IOChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#KernelChaos", io.fabric8.chaosmesh.v1alpha1.KernelChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#NetworkChaos", io.fabric8.chaosmesh.v1alpha1.NetworkChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#PodChaos", io.fabric8.chaosmesh.v1alpha1.PodChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#PodIOChaos", io.fabric8.chaosmesh.v1alpha1.PodIOChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#PodHttpChaos", io.fabric8.chaosmesh.v1alpha1.PodHttpChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#PodNetworkChaos", io.fabric8.chaosmesh.v1alpha1.PodNetworkChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#StressChaos", io.fabric8.chaosmesh.v1alpha1.StressChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#TimeChaos", io.fabric8.chaosmesh.v1alpha1.TimeChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#JVMChaos", io.fabric8.chaosmesh.v1alpha1.JVMChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#HTTPChaos", io.fabric8.chaosmesh.v1alpha1.HTTPChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#DNSChaos", io.fabric8.chaosmesh.v1alpha1.DNSChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#AWSChaos", io.fabric8.chaosmesh.v1alpha1.AWSChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#GCPChaos", io.fabric8.chaosmesh.v1alpha1.GCPChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#BlockChaos", io.fabric8.chaosmesh.v1alpha1.BlockChaos.class); - mappings.put("chaos-mesh.org/v1alpha1#PhysicalMachineChaos", io.fabric8.chaosmesh.v1alpha1.PhysicalMachineChaos.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/chaosmesh/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/chaosmesh/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index e1a9b7f33d..0000000000 --- a/extensions/chaosmesh/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -io.fabric8.chaosmesh.api.model.ChaosMeshResourceMappingProvider diff --git a/extensions/knative/model/src/main/java/io/fabric8/knative/api/model/KnativeResourceMappingProvider.java b/extensions/knative/model/src/main/java/io/fabric8/knative/api/model/KnativeResourceMappingProvider.java deleted file mode 100644 index 11dc6302df..0000000000 --- a/extensions/knative/model/src/main/java/io/fabric8/knative/api/model/KnativeResourceMappingProvider.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.knative.api.model; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; -import java.util.HashMap; -import java.util.Map; - -public class KnativeResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public KnativeResourceMappingProvider() { - mappings.put("serving.knative.dev/v1#Configuration", io.fabric8.knative.serving.v1.Configuration.class); - mappings.put("serving.knative.dev/v1#Revision", io.fabric8.knative.serving.v1.Revision.class); - mappings.put("serving.knative.dev/v1#Service", io.fabric8.knative.serving.v1.Service.class); - mappings.put("serving.knative.dev/v1#Route", io.fabric8.knative.serving.v1.Route.class); - - mappings.put("eventing.knative.dev/v1#Broker", io.fabric8.knative.eventing.v1.Broker.class); - mappings.put("eventing.knative.dev/v1#Channel", io.fabric8.knative.messaging.v1.Channel.class); - mappings.put("eventing.knative.dev/v1beta1#EventType", io.fabric8.knative.eventing.v1beta1.EventType.class); - mappings.put("eventing.knative.dev/v1#Trigger", io.fabric8.knative.eventing.v1.Trigger.class); - mappings.put("eventing.knative.dev/v1#Subscription", io.fabric8.knative.messaging.v1.Subscription.class); - - mappings.put("messaging.knative.dev/v1#InMemoryChannel", io.fabric8.knative.messaging.v1.InMemoryChannel.class); - mappings.put("messaging.knative.dev/v1#Sequence", io.fabric8.knative.flows.v1.Sequence.class); - mappings.put("sources.knative.dev/v1#PingSource", io.fabric8.knative.sources.v1.PingSource.class); - mappings.put("sources.knative.dev/v1#ContainerSource", io.fabric8.knative.sources.v1.ContainerSource.class); - mappings.put("sources.knative.dev/v1#ApiServerSource", io.fabric8.knative.sources.v1.ApiServerSource.class); - mappings.put("sources.knative.dev/v1#SinkBinding", io.fabric8.knative.sources.v1.SinkBinding.class); - mappings.put("sources.knative.dev/v1alpha1#AwsSqsSource", io.fabric8.knative.eventing.contrib.awssqs.v1alpha1.AwsSqsSource.class); - mappings.put("sources.knative.dev/v1alpha1#CouchDbSource", io.fabric8.knative.eventing.contrib.couchdb.v1alpha1.CouchDbSource.class); - mappings.put("sources.knative.dev/v1alpha1#GitHubSource", io.fabric8.knative.eventing.contrib.github.v1alpha1.GitHubSource.class); - mappings.put("bindings.knative.dev/v1alpha1#GitHubBinding", io.fabric8.knative.eventing.contrib.github.v1alpha1.GitHubBinding.class); - mappings.put("sources.knative.dev/v1alpha1#GitLabSource", io.fabric8.knative.eventing.contrib.gitlab.v1alpha1.GitLabSource.class); - mappings.put("bindings.knative.dev/v1alpha1#GitLabBinding", io.fabric8.knative.eventing.contrib.gitlab.v1alpha1.GitLabBinding.class); - mappings.put("sources.knative.dev/v1alpha1#PrometheusSource", io.fabric8.knative.eventing.contrib.prometheus.v1alpha1.PrometheusSource.class); - mappings.put("sources.knative.dev/v1beta1#KafkaSource", io.fabric8.knative.eventing.contrib.kafka.v1beta1.KafkaSource.class); - mappings.put("messaging.knative.dev/v1beta1#KafkaChannel", io.fabric8.knative.eventing.contrib.kafka.v1beta1.KafkaChannel.class); - mappings.put("bindings.knative.dev/v1beta11#KafkaBinding", io.fabric8.knative.eventing.contrib.kafka.v1beta1.KafkaBinding.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/knative/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/knative/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 2a62deba54..0000000000 --- a/extensions/knative/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -io.fabric8.knative.api.model.KnativeResourceMappingProvider diff --git a/extensions/service-catalog/model/src/main/java/io/fabric8/servicecatalog/api/model/ServiceCatalogResourceMappingProvider.java b/extensions/service-catalog/model/src/main/java/io/fabric8/servicecatalog/api/model/ServiceCatalogResourceMappingProvider.java deleted file mode 100644 index c331cb5096..0000000000 --- a/extensions/service-catalog/model/src/main/java/io/fabric8/servicecatalog/api/model/ServiceCatalogResourceMappingProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.servicecatalog.api.model; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class ServiceCatalogResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public ServiceCatalogResourceMappingProvider() { - mappings.put("servicecatalog.k8s.io/v1beta1#ClusterServiceBroker", ClusterServiceBroker.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ClusterServiceClass", ClusterServiceClass.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ClusterServicePlan", ClusterServicePlan.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ServiceBroker", ServiceBroker.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ServiceBinding", ServiceBinding.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ServiceInstance", ServiceInstance.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ServiceClass", ServiceClass.class); - mappings.put("servicecatalog.k8s.io/v1beta1#ServicePlan", ServicePlan.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/service-catalog/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/service-catalog/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index bac1b8432a..0000000000 --- a/extensions/service-catalog/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -io.fabric8.servicecatalog.api.model.ServiceCatalogResourceMappingProvider diff --git a/extensions/tekton/model-triggers-v1alpha1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java b/extensions/tekton/model-triggers-v1alpha1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java deleted file mode 100644 index 7eb850e96b..0000000000 --- a/extensions/tekton/model-triggers-v1alpha1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.tekton; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class TektonTriggersResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public TektonTriggersResourceMappingProvider() { - mappings.put("triggers.tekton.dev/v1alpha1#TriggerTemplate", io.fabric8.tekton.triggers.v1alpha1.TriggerTemplate.class); - mappings.put("triggers.tekton.dev/v1alpha1#TriggerBinding", io.fabric8.tekton.triggers.v1alpha1.TriggerBinding.class); - mappings.put("triggers.tekton.dev/v1alpha1#EventListener", io.fabric8.tekton.triggers.v1alpha1.EventListener.class); - mappings.put("triggers.tekton.dev/v1alpha1#ClusterTriggerBinding", - io.fabric8.tekton.triggers.v1alpha1.ClusterTriggerBinding.class); - mappings.put("triggers.tekton.dev/v1alpha1#Trigger", io.fabric8.tekton.triggers.v1alpha1.Trigger.class); - mappings.put("triggers.tekton.dev/v1alpha1#ClusterInterceptor", - io.fabric8.tekton.triggers.v1alpha1.ClusterInterceptor.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/tekton/model-triggers-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/tekton/model-triggers-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 9f10785fd5..0000000000 --- a/extensions/tekton/model-triggers-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.tekton.TektonTriggersResourceMappingProvider diff --git a/extensions/tekton/model-triggers-v1beta1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java b/extensions/tekton/model-triggers-v1beta1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java deleted file mode 100644 index 6db2d25625..0000000000 --- a/extensions/tekton/model-triggers-v1beta1/src/main/java/io/fabric8/tekton/TektonTriggersResourceMappingProvider.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.tekton; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class TektonTriggersResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public TektonTriggersResourceMappingProvider() { - mappings.put("triggers.tekton.dev/v1beta1#TriggerTemplate", io.fabric8.tekton.triggers.v1beta1.TriggerTemplate.class); - mappings.put("triggers.tekton.dev/v1beta1#TriggerBinding", io.fabric8.tekton.triggers.v1beta1.TriggerBinding.class); - mappings.put("triggers.tekton.dev/v1beta1#EventListener", io.fabric8.tekton.triggers.v1beta1.EventListener.class); - mappings.put("triggers.tekton.dev/v1beta1#ClusterTriggerBinding", - io.fabric8.tekton.triggers.v1beta1.ClusterTriggerBinding.class); - mappings.put("triggers.tekton.dev/v1beta1#Trigger", io.fabric8.tekton.triggers.v1beta1.Trigger.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/tekton/model-triggers-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/tekton/model-triggers-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 9f10785fd5..0000000000 --- a/extensions/tekton/model-triggers-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.tekton.TektonTriggersResourceMappingProvider diff --git a/extensions/tekton/model-v1alpha1/src/main/java/io/fabric8/tekton/TektonV1alpha1ResourceMappingProvider.java b/extensions/tekton/model-v1alpha1/src/main/java/io/fabric8/tekton/TektonV1alpha1ResourceMappingProvider.java deleted file mode 100644 index 4686f64d58..0000000000 --- a/extensions/tekton/model-v1alpha1/src/main/java/io/fabric8/tekton/TektonV1alpha1ResourceMappingProvider.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.tekton; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class TektonV1alpha1ResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public TektonV1alpha1ResourceMappingProvider() { - mappings.put("tekton.dev/v1alpha1#Condition", io.fabric8.tekton.pipeline.v1alpha1.Condition.class); - mappings.put("tekton.dev/v1alpha1#Pipeline", io.fabric8.tekton.pipeline.v1alpha1.Pipeline.class); - mappings.put("tekton.dev/v1alpha1#PipelineRun", io.fabric8.tekton.pipeline.v1alpha1.PipelineRun.class); - mappings.put("tekton.dev/v1alpha1#Task", io.fabric8.tekton.pipeline.v1alpha1.Task.class); - mappings.put("tekton.dev/v1alpha1#TaskRun", io.fabric8.tekton.pipeline.v1alpha1.TaskRun.class); - mappings.put("tekton.dev/v1alpha1#ClusterTask", io.fabric8.tekton.pipeline.v1alpha1.ClusterTask.class); - mappings.put("tekton.dev/v1alpha1#PipelineResource", io.fabric8.tekton.resource.v1alpha1.PipelineResource.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/tekton/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/tekton/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 2605aaecca..0000000000 --- a/extensions/tekton/model-v1alpha1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.tekton.TektonV1alpha1ResourceMappingProvider diff --git a/extensions/tekton/model-v1beta1/src/main/java/io/fabric8/tekton/TektonV1beta1ResourceMappingProvider.java b/extensions/tekton/model-v1beta1/src/main/java/io/fabric8/tekton/TektonV1beta1ResourceMappingProvider.java deleted file mode 100644 index 708ed9c4bb..0000000000 --- a/extensions/tekton/model-v1beta1/src/main/java/io/fabric8/tekton/TektonV1beta1ResourceMappingProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.tekton; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class TektonV1beta1ResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public TektonV1beta1ResourceMappingProvider() { - mappings.put("tekton.dev/v1beta1#Pipeline", io.fabric8.tekton.pipeline.v1beta1.Pipeline.class); - mappings.put("tekton.dev/v1beta1#PipelineRun", io.fabric8.tekton.pipeline.v1beta1.PipelineRun.class); - mappings.put("tekton.dev/v1beta1#Task", io.fabric8.tekton.pipeline.v1beta1.Task.class); - mappings.put("tekton.dev/v1beta1#TaskRun", io.fabric8.tekton.pipeline.v1beta1.TaskRun.class); - mappings.put("tekton.dev/v1beta1#ClusterTask", io.fabric8.tekton.pipeline.v1beta1.ClusterTask.class); - } - - public Map> getMappings() { - return mappings; - }} diff --git a/extensions/tekton/model-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/tekton/model-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 270bc6139d..0000000000 --- a/extensions/tekton/model-v1beta1/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -io.fabric8.tekton.TektonV1beta1ResourceMappingProvider diff --git a/extensions/volumesnapshot/model/src/main/java/io/fabric8/volumesnapshot/api/model/VolumeSnapshotResourceMappingProvider.java b/extensions/volumesnapshot/model/src/main/java/io/fabric8/volumesnapshot/api/model/VolumeSnapshotResourceMappingProvider.java deleted file mode 100644 index 6d17878f2c..0000000000 --- a/extensions/volumesnapshot/model/src/main/java/io/fabric8/volumesnapshot/api/model/VolumeSnapshotResourceMappingProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.volumesnapshot.api.model; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class VolumeSnapshotResourceMappingProvider implements KubernetesResourceMappingProvider { - - public final Map> mappings = new HashMap<>(); - - public VolumeSnapshotResourceMappingProvider() { - mappings.put("snapshot.storage.k8s.io/v1#VolumeSnapshot", VolumeSnapshot.class); - mappings.put("snapshot.storage.k8s.io/v1#VolumeSnapshotClass", VolumeSnapshotClass.class); - mappings.put("snapshot.storage.k8s.io/v1#VolumeSnapshotContent", VolumeSnapshotContent.class); - } - - public Map> getMappings() { - return mappings; - } -} diff --git a/extensions/volumesnapshot/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/extensions/volumesnapshot/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index 846b17f7ea..0000000000 --- a/extensions/volumesnapshot/model/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2018 Red Hat inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -io.fabric8.volumesnapshot.api.model.VolumeSnapshotResourceMappingProvider diff --git a/kubernetes-model-generator/kubernetes-model-core/pom.xml b/kubernetes-model-generator/kubernetes-model-core/pom.xml index 9455d26c3d..1fd122b157 100644 --- a/kubernetes-model-generator/kubernetes-model-core/pom.xml +++ b/kubernetes-model-generator/kubernetes-model-core/pom.xml @@ -116,6 +116,10 @@ io.fabric8 kubernetes-model-common + + org.jboss + jandex + org.mockito mockito-core diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/KubernetesResourceMappingProvider.java b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/KubernetesResourceMappingProvider.java deleted file mode 100644 index 3c49354e90..0000000000 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/KubernetesResourceMappingProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.kubernetes.api; - -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.Map; - -public interface KubernetesResourceMappingProvider { - - Map> getMappings(); -} diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/KubernetesList.java b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/KubernetesList.java index 324dfc96b2..e36c37fc39 100644 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/KubernetesList.java +++ b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/KubernetesList.java @@ -23,6 +23,9 @@ import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.fabric8.kubernetes.model.annotation.Generated; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Kind; +import io.fabric8.kubernetes.model.annotation.Version; import io.sundr.builder.annotations.Buildable; import java.util.ArrayList; @@ -42,6 +45,9 @@ "metadata", "items", }) +@Version("v1") +@Group("") +@Kind("List") @JsonDeserialize(using = JsonDeserializer.None.class) @Buildable(editableEnabled = false, validationEnabled = false, generateBuilderPackage = true, builderPackage = "io.fabric8.kubernetes.api.builder") public class KubernetesList extends DefaultKubernetesResourceList implements KubernetesResource { diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/InternalResourceMappingProvider.java b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/InternalResourceMappingProvider.java deleted file mode 100644 index af105e5e8f..0000000000 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/InternalResourceMappingProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.kubernetes.internal; - -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; -import io.fabric8.kubernetes.api.model.KubernetesList; -import io.fabric8.kubernetes.api.model.KubernetesResource; - -import java.util.HashMap; -import java.util.Map; - -public class InternalResourceMappingProvider implements KubernetesResourceMappingProvider { - - private final Map> mappings = new HashMap<>(); - - public InternalResourceMappingProvider() { - mappings.put("List", KubernetesList.class); - mappings.put("v1#List", KubernetesList.class); - } - - @Override - public Map> getMappings() { - return mappings; - } -} diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/KubernetesDeserializer.java b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/KubernetesDeserializer.java index 3417e3296e..e13f1f698d 100644 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/KubernetesDeserializer.java +++ b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/internal/KubernetesDeserializer.java @@ -20,7 +20,6 @@ import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; @@ -37,12 +36,7 @@ import java.util.Map; import java.util.Objects; import java.util.ServiceLoader; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; public class KubernetesDeserializer extends JsonDeserializer { @@ -160,146 +154,26 @@ public static void registerCustomKind(String apiVersion, String kind, Class> mappings = new ConcurrentHashMap<>(); - private Map> internalMappings = new ConcurrentHashMap<>(); Mapping() { - registerAllProviders(); + registerClasses(Thread.currentThread().getContextClassLoader()); + registerClasses(KubernetesDeserializer.class.getClassLoader()); } public Class getForKey(TypeKey key) { if (key == null) { return null; } - // check for an exact match - Class clazz = mappings.get(key); - if (clazz != null) { - return clazz; - } - // check if it's a lazily-loaded internal type - List defaults = internalMappings.get(key.kind); - if (defaults == null) { - defaults = loadInternalTypes(key.kind); - clazz = mappings.get(key); // check again after load for an exact match - if (clazz != null) { - return clazz; - } - } - - // version is required - if (key.version == null) { - return null; - } - - // if there are internal types matching kind, look for matching groups and versions - for (TypeKey typeKey : defaults) { - if ((key.apiGroup == null || key.apiGroup.equals(typeKey.apiGroup)) - && key.version.equals(typeKey.version) - && (typeKey.apiGroup == null || typeKey.apiGroup.endsWith(".openshift.io"))) { - return mappings.get(typeKey); - } - } - return null; + return mappings.get(key); } public void registerKind(String apiVersion, String kind, Class clazz) { mappings.put(createKey(apiVersion, kind), clazz); } - public void registerProvider(KubernetesResourceMappingProvider provider) { - if (provider == null) { - return; - } - provider.getMappings().entrySet().stream() - //If the model is shaded (which is as part of kubernetes-client uberjar) this is going to cause conflicts. - //This is why we NEED TO filter out incompatible resources. - .filter(entry -> KubernetesResource.class.isAssignableFrom(entry.getValue())) - .forEach(e -> mappings.put(createKey(e.getKey()), e.getValue())); - } - /** * Returns a composite key for apiVersion and kind. */ @@ -317,77 +191,35 @@ TypeKey createKey(String apiVersion, String kind) { } } - TypeKey createKey(String key) { - // null is not allowed - if (key.contains(KEY_SEPARATOR)) { - String[] parts = key.split(KEY_SEPARATOR, 2); - return createKey(parts[0], parts[1]); - } - return createKey(null, key); - } - - private void registerAllProviders() { - getAllMappingProviders().forEach(this::registerProvider); - } - - Stream getAllMappingProviders() { - //Use service loader to load extension types. - Iterable currentThreadClassLoader = () -> ServiceLoader - .load(KubernetesResourceMappingProvider.class, Thread.currentThread().getContextClassLoader()) - .iterator(); - Iterable classClassLoader = () -> ServiceLoader - .load(KubernetesResourceMappingProvider.class, KubernetesDeserializer.class.getClassLoader()) + private void registerClasses(ClassLoader classLoader) { + Iterable resources = () -> ServiceLoader + .load(KubernetesResource.class, classLoader) .iterator(); - return Stream.concat( - StreamSupport.stream(currentThreadClassLoader.spliterator(), false), - StreamSupport.stream(classClassLoader.spliterator(), false)) - .filter(distinctByClassName(KubernetesResourceMappingProvider::getClass)); - } - - private List loadInternalTypes(String kind) { - List ordering = new ArrayList<>(); - for (int i = 0; i < PACKAGES.length; i++) { - Class result = loadClassIfExists(PACKAGES[i] + kind); - if (result == null) { - continue; - } - TypeKey defaultKeyFromClass = getKeyFromClass(result); - mappings.put(defaultKeyFromClass, result); - ordering.add(defaultKeyFromClass); + for (KubernetesResource resource : resources) { + addMapping(resource.getClass()); } - - internalMappings.put(kind, ordering); - return ordering; } TypeKey getKeyFromClass(Class clazz) { String apiGroup = Helper.getAnnotationValue(clazz, Group.class); String apiVersion = Helper.getAnnotationValue(clazz, Version.class); + String kind = HasMetadata.getKind(clazz); if (apiGroup != null && !apiGroup.isEmpty() && apiVersion != null && !apiVersion.isEmpty()) { - return new TypeKey(clazz.getSimpleName(), apiGroup, apiVersion); + return new TypeKey(kind, apiGroup, apiVersion); } else if (apiVersion != null && !apiVersion.isEmpty()) { - return createKey(apiVersion, clazz.getSimpleName()); + return createKey(apiVersion, kind); } - return new TypeKey(clazz.getSimpleName(), null, null); + return new TypeKey(kind, null, null); } - private Class loadClassIfExists(String className) { - try { - Class clazz = KubernetesDeserializer.class.getClassLoader().loadClass(className); - if (!KubernetesResource.class.isAssignableFrom(clazz)) { - return null; - } - return (Class) clazz; - } catch (Exception t) { - return null; - } - } + private void addMapping(Class clazz) { + TypeKey keyFromClass = getKeyFromClass(clazz); + mappings.put(keyFromClass, clazz); - private Predicate distinctByClassName( - Function> mapperProvider) { - Set existing = ConcurrentHashMap.newKeySet(); - return provider -> existing.add(mapperProvider.apply(provider).getName()); + // oc behavior - allow resolving against just the version + if (keyFromClass.apiGroup != null && keyFromClass.apiGroup.endsWith(".openshift.io")) { + mappings.putIfAbsent(new TypeKey(keyFromClass.kind, null, keyFromClass.version), clazz); + } } - } } diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider b/kubernetes-model-generator/kubernetes-model-core/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider deleted file mode 100644 index ee2125c684..0000000000 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/resources/META-INF/services/io.fabric8.kubernetes.api.KubernetesResourceMappingProvider +++ /dev/null @@ -1 +0,0 @@ -io.fabric8.kubernetes.internal.InternalResourceMappingProvider \ No newline at end of file diff --git a/kubernetes-model-generator/kubernetes-model-core/src/test/java/io/fabric8/kubernetes/internal/KubernetesDeserializerTest.java b/kubernetes-model-generator/kubernetes-model-core/src/test/java/io/fabric8/kubernetes/internal/KubernetesDeserializerTest.java index 0aa3fef821..673925d440 100644 --- a/kubernetes-model-generator/kubernetes-model-core/src/test/java/io/fabric8/kubernetes/internal/KubernetesDeserializerTest.java +++ b/kubernetes-model-generator/kubernetes-model-core/src/test/java/io/fabric8/kubernetes/internal/KubernetesDeserializerTest.java @@ -15,18 +15,16 @@ */ package io.fabric8.kubernetes.internal; -import io.fabric8.kubernetes.api.KubernetesResourceMappingProvider; import io.fabric8.kubernetes.api.model.KubernetesResource; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.internal.KubernetesDeserializer.TypeKey; -import org.apache.commons.lang3.tuple.Pair; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Kind; +import io.fabric8.kubernetes.model.annotation.Version; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -36,7 +34,7 @@ class KubernetesDeserializerTest { @BeforeEach public void beforeEach() { - this.mapping = new TestableMapping(createProvider()); + this.mapping = new KubernetesDeserializer.Mapping(); } @Test @@ -76,20 +74,6 @@ void shouldRegisterKindWithoutVersionIfNullVersion() { assertThat(clazz).isEqualTo(SmurfResource.class); } - @Test - void shouldRegisterProvider() { - // given - TypeKey key = mapping.createKey("42", "Hitchhiker"); - assertThat(mapping.getForKey(key)).isNull(); - KubernetesResourceMappingProvider provider = createProvider( - Pair.of("42#Hitchhiker", SmurfResource.class)); - // when - mapping.registerProvider(provider); - // then - Class clazz = mapping.getForKey(key); - assertThat(clazz).isEqualTo(SmurfResource.class); - } - @Test void shouldReturnMappedClass() { // given @@ -153,26 +137,9 @@ void shouldNotLoadClassIfKeyOnlyHasKind() { assertThat(clazz).isNull(); } - private KubernetesResourceMappingProvider createProvider(Pair>... mappings) { - return () -> Stream.of(mappings) - .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); - } - - public static final class TestableMapping extends KubernetesDeserializer.Mapping { - - private final KubernetesResourceMappingProvider provider; - - public TestableMapping(KubernetesResourceMappingProvider provider) { - this.provider = provider; - } - - @Override - protected Stream getAllMappingProviders() { - return Stream.of(provider); - } - - } - + @Group("") + @Kind("Hitchhiker") + @Version("42") private static final class SmurfResource implements KubernetesResource { } } diff --git a/kubernetes-model-generator/kubernetes-model-jsonschema2pojo/src/main/java/io/fabric8/kubernetes/jsonschema2pojo/KubernetesCoreTypeAnnotator.java b/kubernetes-model-generator/kubernetes-model-jsonschema2pojo/src/main/java/io/fabric8/kubernetes/jsonschema2pojo/KubernetesCoreTypeAnnotator.java index 46952b947e..c55b5bc5cb 100644 --- a/kubernetes-model-generator/kubernetes-model-jsonschema2pojo/src/main/java/io/fabric8/kubernetes/jsonschema2pojo/KubernetesCoreTypeAnnotator.java +++ b/kubernetes-model-generator/kubernetes-model-jsonschema2pojo/src/main/java/io/fabric8/kubernetes/jsonschema2pojo/KubernetesCoreTypeAnnotator.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.sun.codemodel.JAnnotationArrayMember; +import com.sun.codemodel.JAnnotationUse; import com.sun.codemodel.JDefinedClass; import com.sun.codemodel.JExpressionImpl; import com.sun.codemodel.JFieldVar; @@ -101,6 +102,11 @@ public void propertyOrder(JDefinedClass clazz, JsonNode propertiesNode) { apiVersion = apiVersion.substring(apiGroup.length() + 1); } + JAnnotationArrayMember arrayMember = clazz.annotate(TemplateTransformations.class) + .paramArray(ANNOTATION_VALUE); + arrayMember.annotate(TemplateTransformation.class).param(ANNOTATION_VALUE, "/manifest.vm") + .param("outputPath", "META-INF/services/io.fabric8.kubernetes.api.model.KubernetesResource").param("gather", true); + String resourceName = clazz.fullName(); if (resourceName.endsWith("List")) { resourceName = resourceName.substring(0, resourceName.length() - 4); @@ -196,13 +202,10 @@ protected void processBuildable(JDefinedClass clazz) { } protected void addClassesToPropertyFiles(JDefinedClass clazz) { - if (moduleName == null || moduleName.equals(getPackageCategory(clazz.getPackage().name())) /* - * && - * shouldIncludeClass(clazz.name( - * )) - */) { - JAnnotationArrayMember arrayMember = clazz.annotate(TemplateTransformations.class) - .paramArray(ANNOTATION_VALUE); + if (moduleName == null || moduleName.equals(getPackageCategory(clazz.getPackage().name()))) { + JAnnotationUse annotation = clazz.annotations().stream() + .filter(a -> a.getAnnotationClass().name().equals(TemplateTransformations.class.getSimpleName())).findFirst().get(); + JAnnotationArrayMember arrayMember = (JAnnotationArrayMember) annotation.getAnnotationMembers().get(ANNOTATION_VALUE); arrayMember.annotate(TemplateTransformation.class).param(ANNOTATION_VALUE, "/manifest.vm") .param("outputPath", (moduleName == null ? "model" : moduleName) + ".properties").param("gather", true); } diff --git a/platforms/karaf/features/src/main/resources/feature.xml b/platforms/karaf/features/src/main/resources/feature.xml index 269fc5fd25..65289e7a4b 100644 --- a/platforms/karaf/features/src/main/resources/feature.xml +++ b/platforms/karaf/features/src/main/resources/feature.xml @@ -36,6 +36,7 @@ mvn:org.ow2.asm/asm-commons/${asm.bundle.version} mvn:org.ow2.asm/asm-tree/${asm.bundle.version} mvn:org.ow2.asm/asm-util/${asm.bundle.version} + mvn:org.jboss/jandex/${jandex.version} mvn:io.fabric8/kubernetes-model-common/${project.version} mvn:io.fabric8/zjsonpatch/${zjsonpatch.version} diff --git a/pom.xml b/pom.xml index ef9181253a..576e9d64d4 100644 --- a/pom.xml +++ b/pom.xml @@ -677,6 +677,11 @@ + + org.jboss + jandex + ${jandex.version} + io.sundr builder-annotations @@ -845,6 +850,18 @@ + + + target/classes + + + META-INF/services/io.fabric8.kubernetes.api.model.KubernetesResource + + + + src/main/resources + +