summaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2021-04-13 12:28:42 +0200
committerGitHub <noreply@github.com>2021-04-13 12:28:42 +0200
commitc752d3e4bcc1946358ccdee716f4141bf87748df (patch)
treebf3ee4c16006437ac79b893cc09e1e05c8714339 /container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
parent86097c6b1e4a59cef5b9dfcdec021213520b51ac (diff)
parentbbff5a9bb8854d7100b4981af9aa226d74ae0227 (diff)
Merge pull request #17380 from vespa-engine/gjoranv/merge-di-into-core_2
Gjoranv/merge di into core 2 [run-systemtest]
Diffstat (limited to 'container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java')
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java b/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
new file mode 100644
index 00000000000..8c501963db3
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
@@ -0,0 +1,50 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.osgi.provider.model;
+
+import com.yahoo.component.ComponentId;
+import com.yahoo.component.ComponentSpecification;
+import com.yahoo.container.bundle.BundleInstantiationSpecification;
+
+/**
+ * Describes how a component should be created.
+ *
+ * Immutable
+ *
+ * @author gjoranv
+ */
+public class ComponentModel {
+
+ public final BundleInstantiationSpecification bundleInstantiationSpec;
+ public final String configId; // only used in the container, null when used in the model
+
+ public ComponentModel(BundleInstantiationSpecification bundleInstantiationSpec, String configId) {
+ if (bundleInstantiationSpec == null)
+ throw new IllegalArgumentException("Null bundle instantiation spec!");
+
+ this.bundleInstantiationSpec = bundleInstantiationSpec;
+ this.configId = configId;
+ }
+
+ public ComponentModel(String idSpec, String classSpec, String bundleSpec, String configId) {
+ this(BundleInstantiationSpecification.getFromStrings(idSpec, classSpec, bundleSpec), configId);
+ }
+
+ // For vespamodel
+ public ComponentModel(BundleInstantiationSpecification bundleInstantiationSpec) {
+ this(bundleInstantiationSpec, null);
+ }
+
+ // For vespamodel
+ public ComponentModel(String idSpec, String classSpec, String bundleSpec) {
+ this(BundleInstantiationSpecification.getFromStrings(idSpec, classSpec, bundleSpec));
+ }
+
+ public ComponentId getComponentId() {
+ return bundleInstantiationSpec.id;
+ }
+
+ public ComponentSpecification getClassId() {
+ return bundleInstantiationSpec.classId;
+ }
+
+}