/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.brooklyn.camp.brooklyn.spi.platform; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.brooklyn.spi.lookup.AssemblyBrooklynLookup; import org.apache.brooklyn.camp.brooklyn.spi.lookup.AssemblyTemplateBrooklynLookup; import org.apache.brooklyn.camp.brooklyn.spi.lookup.PlatformComponentBrooklynLookup; import org.apache.brooklyn.camp.brooklyn.spi.lookup.PlatformComponentTemplateBrooklynLookup; import org.apache.brooklyn.camp.spi.ApplicationComponent; import org.apache.brooklyn.camp.spi.ApplicationComponentTemplate; import org.apache.brooklyn.camp.spi.Assembly; import org.apache.brooklyn.camp.spi.AssemblyTemplate; import org.apache.brooklyn.camp.spi.PlatformComponent; import org.apache.brooklyn.camp.spi.PlatformComponentTemplate; import org.apache.brooklyn.camp.spi.PlatformRootSummary; import org.apache.brooklyn.camp.spi.PlatformTransaction; import org.apache.brooklyn.camp.spi.collection.BasicResourceLookup; import org.apache.brooklyn.camp.spi.collection.ResourceLookup; import org.apache.brooklyn.camp.spi.collection.ResourceLookup.EmptyResourceLookup; import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext; /** Immutable CAMP platform which reflects things in the underlying Brooklyn system */ public class BrooklynImmutableCampPlatform extends CampPlatform implements HasBrooklynManagementContext { private final ManagementContext bmc; private final AssemblyTemplateBrooklynLookup ats; private final PlatformComponentTemplateBrooklynLookup pcts; private final BasicResourceLookup<ApplicationComponentTemplate> acts; private final PlatformComponentBrooklynLookup pcs; private final AssemblyBrooklynLookup assemblies; public BrooklynImmutableCampPlatform(PlatformRootSummary root, ManagementContext managementContext) { super(root); this.bmc = managementContext; // these come from brooklyn pcts = new PlatformComponentTemplateBrooklynLookup(root(), getBrooklynManagementContext()); ats = new AssemblyTemplateBrooklynLookup(root(), getBrooklynManagementContext()); pcs = new PlatformComponentBrooklynLookup(root(), getBrooklynManagementContext()); assemblies = new AssemblyBrooklynLookup(root(), getBrooklynManagementContext(), pcs); // ACT's are not known in brooklyn (everything comes in as config) -- to be extended to support! acts = new BasicResourceLookup<ApplicationComponentTemplate>(); } // --- brooklyn setup @Override public ManagementContext getBrooklynManagementContext() { return bmc; } // --- camp comatibility setup @Override public ResourceLookup<PlatformComponentTemplate> platformComponentTemplates() { return pcts; } @Override public ResourceLookup<ApplicationComponentTemplate> applicationComponentTemplates() { return acts; } @Override public ResourceLookup<AssemblyTemplate> assemblyTemplates() { return ats; } @Override public ResourceLookup<PlatformComponent> platformComponents() { return pcs; } @Override public ResourceLookup<ApplicationComponent> applicationComponents() { return new EmptyResourceLookup<ApplicationComponent>(); } @Override public ResourceLookup<Assembly> assemblies() { return assemblies; } @Override public PlatformTransaction transaction() { throw new IllegalStateException(this+" does not support adding new items"); } }