You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2017/09/07 15:47:55 UTC
[04/11] brooklyn-server git commit: fix REST tests and code
fix REST tests and code
* containingBundle should be in result json (not related, but thought it was the problem)
* list call includes items twice now
* camp needs to be loaded before any usage of catalog
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/e387e423
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/e387e423
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/e387e423
Branch: refs/heads/master
Commit: e387e4237ed998e8194e5abd513427b3aae74609
Parents: e8e39fd
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 17 11:29:09 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 17 11:29:09 2017 +0100
----------------------------------------------------------------------
.../core/typereg/BasicBrooklynTypeRegistry.java | 18 ++++++++++++++----
.../rest/domain/CatalogEnricherSummary.java | 3 ++-
.../rest/domain/CatalogEntitySummary.java | 4 +++-
.../rest/domain/CatalogItemSummary.java | 11 ++++++++++-
.../rest/domain/CatalogLocationSummary.java | 3 ++-
.../rest/domain/CatalogPolicySummary.java | 3 ++-
.../rest/transform/CatalogTransformer.java | 20 ++++++++++----------
.../rest/resources/CatalogResourceTest.java | 5 ++---
.../rest/testing/BrooklynRestApiTest.java | 5 +++--
9 files changed, 48 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
index 60142a7..8c65f99 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
@@ -87,10 +87,20 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
@SuppressWarnings("deprecation")
@Override
public Iterable<RegisteredType> getMatching(Predicate<? super RegisteredType> filter) {
- return Iterables.filter(Iterables.concat(
- getAllWithoutCatalog(filter),
- Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT)),
- filter);
+ Map<String,RegisteredType> result = MutableMap.of();
+ for (RegisteredType rt: getAllWithoutCatalog(filter)) {
+ result.put(rt.getId(), rt);
+ }
+ for (RegisteredType rt: Iterables.filter(
+ Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT),
+ filter)) {
+ if (!result.containsKey(rt.getId())) {
+ // shouldn't be using this now
+ log.warn("Item '"+rt.getId()+"' not in type registry; only found in legacy catalog");
+ result.put(rt.getId(), rt);
+ }
+ }
+ return result.values();
}
@SuppressWarnings("deprecation")
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
index b0a0403..2e81ae1 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
@@ -37,6 +37,7 @@ public class CatalogEnricherSummary extends CatalogItemSummary {
public CatalogEnricherSummary(
@JsonProperty("symbolicName") String symbolicName,
@JsonProperty("version") String version,
+ @JsonProperty("containingBundle") String containingBundle,
@JsonProperty("name") String name,
@JsonProperty("javaType") String javaType,
@JsonProperty("itemType") String itemType,
@@ -48,7 +49,7 @@ public class CatalogEnricherSummary extends CatalogItemSummary {
@JsonProperty("deprecated") boolean deprecated,
@JsonProperty("links") Map<String, URI> links
) {
- super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+ super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
// TODO expose config from enrichers
this.config = (config == null) ? ImmutableSet.<EnricherConfigSummary>of() : config;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
index 6d66401..5947b7f 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
@@ -44,6 +44,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
public CatalogEntitySummary(
@JsonProperty("symbolicName") String symbolicName,
@JsonProperty("version") String version,
+ @JsonProperty("containingBundle") String containingBundle,
@JsonProperty("name") String name,
@JsonProperty("javaType") String javaType,
@JsonProperty("itemType") String itemType,
@@ -57,7 +58,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
@JsonProperty("deprecated") boolean deprecated,
@JsonProperty("links") Map<String, URI> links
) {
- super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+ super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
this.config = config;
this.sensors = sensors;
this.effectors = effectors;
@@ -97,6 +98,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
"id='" + getId() + '\'' +
", symbolicName='" + getSymbolicName() + '\'' +
", version='" + getVersion() + '\'' +
+ ", containingBundle='" + getContainingBundle() + '\'' +
", type='" + getType() + '\'' +
", name='" + getName() + '\'' +
", config=" + config +
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
index 49c838a..cdb86d4 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
@@ -43,6 +43,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
private final String id;
private final String symbolicName;
private final String version;
+ private final String containingBundle;
//needed for backwards compatibility only (json serializer works on fields, not getters)
@Deprecated
@@ -67,6 +68,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
public CatalogItemSummary(
@JsonProperty("symbolicName") String symbolicName,
@JsonProperty("version") String version,
+ @JsonProperty("containingBundle") String containingBundle,
@JsonProperty("name") String displayName,
@JsonProperty("javaType") String javaType,
@JsonProperty("itemType") String itemType,
@@ -81,6 +83,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
this.symbolicName = symbolicName;
this.type = symbolicName;
this.version = version;
+ this.containingBundle = containingBundle;
this.name = displayName;
this.javaType = javaType;
this.itemType = itemType;
@@ -105,6 +108,10 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
return version;
}
+ public String getContainingBundle() {
+ return containingBundle;
+ }
+
public String getJavaType() {
return javaType;
}
@@ -155,6 +162,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
Objects.equals(id, that.id) &&
Objects.equals(symbolicName, that.symbolicName) &&
Objects.equals(version, that.version) &&
+ Objects.equals(containingBundle, that.containingBundle) &&
Objects.equals(type, that.type) &&
Objects.equals(itemType, that.itemType) &&
Objects.equals(javaType, that.javaType) &&
@@ -168,7 +176,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
@Override
public int hashCode() {
- return Objects.hash(id, symbolicName, version, type, javaType, itemType, name, description, iconUrl, planYaml, tags, deprecated, links);
+ return Objects.hash(id, symbolicName, version, containingBundle, type, javaType, itemType, name, description, iconUrl, planYaml, tags, deprecated, links);
}
@Override
@@ -177,6 +185,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
"id='" + id + '\'' +
", symbolicName='" + symbolicName + '\'' +
", version='" + version + '\'' +
+ ", containingBundle='" + containingBundle + '\'' +
", type='" + type + '\'' +
", javaType='" + javaType + '\'' +
", itemType='" + itemType + '\'' +
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
index 883232b..0213a0c 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
@@ -35,6 +35,7 @@ public class CatalogLocationSummary extends CatalogItemSummary {
public CatalogLocationSummary(
@JsonProperty("symbolicName") String symbolicName,
@JsonProperty("version") String version,
+ @JsonProperty("containingBundle") String containingBundle,
@JsonProperty("name") String name,
@JsonProperty("javaType") String javaType,
@JsonProperty("itemType") String itemType,
@@ -46,7 +47,7 @@ public class CatalogLocationSummary extends CatalogItemSummary {
@JsonProperty("deprecated") boolean deprecated,
@JsonProperty("links") Map<String, URI> links
) {
- super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+ super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
// TODO expose config from policies
this.config = (config == null) ? ImmutableSet.<LocationConfigSummary>of() : config;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
index 396c550..37e5786 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
@@ -37,6 +37,7 @@ public class CatalogPolicySummary extends CatalogItemSummary {
public CatalogPolicySummary(
@JsonProperty("symbolicName") String symbolicName,
@JsonProperty("version") String version,
+ @JsonProperty("containingBundle") String containingBundle,
@JsonProperty("name") String name,
@JsonProperty("javaType") String javaType,
@JsonProperty("itemType") String itemType,
@@ -48,7 +49,7 @@ public class CatalogPolicySummary extends CatalogItemSummary {
@JsonProperty("deprecated") boolean deprecated,
@JsonProperty("links") Map<String, URI> links
) {
- super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+ super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
// TODO expose config from policies
this.config = (config == null) ? ImmutableSet.<PolicyConfigSummary>of() : config;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
index 9fe024a..aa30dd5 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
@@ -107,7 +107,7 @@ public class CatalogTransformer {
}
}
- return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(),
spec!=null ?
CatalogItemType.ofTargetClass(spec.getType()).name() :
@@ -137,7 +137,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.warn("Invalid item in catalog when converting REST summaries (supplying generic item), at "+item+": "+e, e);
}
- return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getSuperTypes().toString(),
item.getKind()==RegisteredTypeKind.BEAN ? "bean" : "unknown",
RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -156,7 +156,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.trace("Unable to create policy spec for "+item+": "+e, e);
}
- return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(),
CatalogItemType.POLICY.toString(),
RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -176,7 +176,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.trace("Unable to create policy spec for "+item+": "+e, e);
}
- return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(),
CatalogItemType.ENRICHER.toString(),
RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -186,7 +186,7 @@ public class CatalogTransformer {
public static CatalogLocationSummary catalogLocationSummary(BrooklynRestResourceUtils b, RegisteredType item, UriBuilder ub) {
Set<LocationConfigSummary> config = ImmutableSet.of();
- return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getSuperTypes().toString(),
CatalogItemType.LOCATION.toString(),
RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -277,7 +277,7 @@ public class CatalogTransformer {
}
}
- return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub),
makeTags(spec, item), config, sensors, effectors,
@@ -305,7 +305,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.warn("Invalid item in catalog when converting REST summaries (supplying generic item), at "+item+": "+e, e);
}
- return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
}
@@ -322,7 +322,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.trace("Unable to create policy spec for "+item+": "+e, e);
}
- return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
@@ -340,7 +340,7 @@ public class CatalogTransformer {
Exceptions.propagateIfFatal(e);
log.trace("Unable to create policy spec for "+item+": "+e, e);
}
- return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
@@ -349,7 +349,7 @@ public class CatalogTransformer {
/** @deprecated since 0.12.0 use {@link RegisteredType} methods instead */ @Deprecated
public static CatalogLocationSummary catalogLocationSummary(BrooklynRestResourceUtils b, CatalogItem<? extends Location,LocationSpec<?>> item, UriBuilder ub) {
Set<LocationConfigSummary> config = ImmutableSet.of();
- return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+ return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
index abdd1ed..b59d1fd 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
@@ -188,7 +188,6 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
}
@Test
- // osgi may fail in IDE, typically works on mvn CLI though
public void testRegisterOsgiPolicyTopLevelSyntax() {
TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
@@ -222,6 +221,7 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
public void testListAllEntities() {
List<CatalogEntitySummary> entities = client().path("/catalog/entities")
.get(new GenericType<List<CatalogEntitySummary>>() {});
+ log.info("Entities: "+entities);
assertTrue(entities.size() > 0);
}
@@ -237,10 +237,9 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
public void testFilterListOfEntitiesByName() {
List<CatalogEntitySummary> entities = client().path("/catalog/entities")
.query("fragment", "vaNIllasOFTWAREpROCESS").get(new GenericType<List<CatalogEntitySummary>>() {});
+ log.info("Matching entities: " + entities);
assertEquals(entities.size(), 1);
- log.info("MAtching entities are: " + entities);
-
List<CatalogEntitySummary> entities2 = client().path("/catalog/entities")
.query("regex", "[Vv]an.[alS]+oftware\\w+").get(new GenericType<List<CatalogEntitySummary>>() {});
assertEquals(entities2.size(), 1);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
index 0d38eaa..b5136e6 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
@@ -148,11 +148,12 @@ public abstract class BrooklynRestApiTest {
manager.getHighAvailabilityManager().disabled();
((LocalManagementContext)manager).generateManagementPlaneId();
- BasicLocationRegistry.addNamedLocationLocalhost(manager);
-
new BrooklynCampPlatformLauncherNoServer()
.useManagementContext(manager)
.launch();
+
+ // must come after CAMP because this triggers a catalog population
+ BasicLocationRegistry.addNamedLocationLocalhost(manager);
}
return manager;
}