Skip to content

Commit

Permalink
PR feedback and remove environment view
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnMcPMS committed Jan 21, 2025
1 parent b6474a1 commit 5b65fd7
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 72 deletions.
2 changes: 1 addition & 1 deletion src/AppInstallerCLICore/Commands/DebugCommand.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ namespace AppInstaller::CLI
OutputProxyStubInterfaceRegistration<winrt::Windows::Foundation::Collections::IIterable<winrt::Microsoft::Management::Configuration::TestConfigurationUnitResult>>(context);
OutputProxyStubInterfaceRegistration<winrt::Windows::Foundation::Collections::IIterable<winrt::Microsoft::Management::Configuration::IApplyGroupMemberSettingsResult>>(context);
OutputProxyStubInterfaceRegistration<winrt::Windows::Foundation::Collections::IIterable<winrt::Microsoft::Management::Configuration::ITestSettingsResult>>(context);
OutputProxyStubInterfaceRegistration<winrt::Windows::Foundation::Collections::IIterable<winrt::Microsoft::Management::Configuration::IConfigurationEnvironmentView>>(context);
OutputProxyStubInterfaceRegistration<winrt::Windows::Foundation::Collections::IIterable<winrt::Microsoft::Management::Configuration::ConfigurationEnvironment>>(context);
OutputProxyStubInterfaceRegistration<winrt::Microsoft::Management::Configuration::IConfigurationUnitProcessorDetails2>(context);
OutputProxyStubInterfaceRegistration<winrt::Microsoft::Management::Configuration::IGetAllSettingsConfigurationUnitProcessor>(context);
OutputProxyStubInterfaceRegistration<winrt::Microsoft::Management::Configuration::IConfigurationStatics2>(context);
Expand Down
2 changes: 1 addition & 1 deletion src/AppInstallerCLIPackage/Package.appxmanifest
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
<Interface Name="Windows.Foundation.Collections.IIterable`1&lt;Microsoft.Management.Configuration.TestConfigurationUnitResult&gt;" InterfaceId="73848262-86D4-5FFC-8353-8408C4E649DE" />
<Interface Name="Windows.Foundation.Collections.IIterable`1&lt;Microsoft.Management.Configuration.IApplyGroupMemberSettingsResult&gt;" InterfaceId="5086070C-F468-5B00-8352-50FB420BA8B0" />
<Interface Name="Windows.Foundation.Collections.IIterable`1&lt;Microsoft.Management.Configuration.ITestSettingsResult&gt;" InterfaceId="2D28E6AA-7036-5D78-9B58-9456F1E332FE" />
<Interface Name="Windows.Foundation.Collections.IIterable`1&lt;Microsoft.Management.Configuration.IConfigurationEnvironmentView&gt;" InterfaceId="F1344DB2-5194-5A6A-B36C-EDD05D28FE4C" />
<Interface Name="Windows.Foundation.Collections.IIterable`1&lt;Microsoft.Management.Configuration.ConfigurationEnvironment&gt;" InterfaceId="47B18106-976B-5532-8E81-F58D304DFA43" />
<Interface Name="Microsoft.Management.Configuration.IConfigurationUnitProcessorDetails2" InterfaceId="E89623ED-76E2-5145-B920-D09659554E35" />
<Interface Name="Microsoft.Management.Configuration.IGetAllSettingsConfigurationUnitProcessor" InterfaceId="72EB8304-D8D3-57D4-9940-7C1C4AD8C40C" />
<Interface Name="Microsoft.Management.Configuration.IConfigurationStatics2" InterfaceId="540BE073-F2EF-5375-83AA-8E23086B0669" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ internal ConfigurationUnit ApplyToUnit(ConfigurationUnit unit)
/// </summary>
/// <param name="properties">The properties to test.</param>
/// <returns>True if the properties match; false if not.</returns>
internal bool PropertiesEqual(IReadOnlyDictionary<string, string> properties)
internal bool PropertiesEqual(IDictionary<string, string> properties)
{
if (properties.Count != this.ProcessorProperties.Count)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ public void ConfigurationSet_GroupUnitEnvironments()
this.EnsureEnvironmentEquivalence(environments, uniqueEnvironments);
}

private void EnsureEnvironmentEquivalence(Helpers.ConfigurationEnvironmentData[] expectedEnvironments, IList<IConfigurationEnvironmentView>? actualEnvironments)
private void EnsureEnvironmentEquivalence(Helpers.ConfigurationEnvironmentData[] expectedEnvironments, IList<ConfigurationEnvironment>? actualEnvironments)
{
Assert.NotNull(actualEnvironments);
Assert.Equal(expectedEnvironments.Length, actualEnvironments.Count);
Expand All @@ -230,7 +230,7 @@ private void EnsureEnvironmentEquivalence(Helpers.ConfigurationEnvironmentData[]
for (int i = 0; i < expectedEnvironments.Length; i++)
{
var expected = expectedEnvironments[i];
if (actual.Context == expected.Context && actual.ProcessorIdentifier == expected.ProcessorIdentifier && expected.PropertiesEqual(actual.ProcessorPropertiesView))
if (actual.Context == expected.Context && actual.ProcessorIdentifier == expected.ProcessorIdentifier && expected.PropertiesEqual(actual.ProcessorProperties))
{
foundEnvironments[i] = true;
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1178,7 +1178,7 @@ private void ValidateEnvironments(IList<ConfigurationUnit> units, Dictionary<str
Assert.NotNull(expectedEnvironment);
Assert.Equal(expectedEnvironment.Context, unit.Environment.Context);
Assert.Equal(expectedEnvironment.ProcessorIdentifier, unit.Environment.ProcessorIdentifier);
Assert.True(expectedEnvironment.PropertiesEqual(unit.Environment.As<IConfigurationEnvironmentView>().ProcessorPropertiesView));
Assert.True(expectedEnvironment.PropertiesEqual(unit.Environment.ProcessorProperties));

if (unit.Identifier == groupToCheck)
{
Expand Down
44 changes: 22 additions & 22 deletions src/Microsoft.Management.Configuration/ConfigurationEnvironment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@

namespace winrt::Microsoft::Management::Configuration::implementation
{
namespace
{
template <typename T>
void DeepCopyEnvironmentFrom(implementation::ConfigurationEnvironment& self, const T& toDeepCopy)
{
self.Context(toDeepCopy.Context());
self.ProcessorIdentifier(toDeepCopy.ProcessorIdentifier());
self.ProcessorProperties(toDeepCopy.ProcessorProperties());
}
}

ConfigurationEnvironment::ConfigurationEnvironment() :
m_processorProperties(multi_threaded_map<hstring, hstring>())
{}
Expand All @@ -20,17 +31,9 @@ namespace winrt::Microsoft::Management::Configuration::implementation
DeepCopy(toDeepCopy);
}

ConfigurationEnvironment::ConfigurationEnvironment(IConfigurationEnvironmentView toDeepCopy)
ConfigurationEnvironment::ConfigurationEnvironment(const Configuration::ConfigurationEnvironment& toDeepCopy)
{
m_context = toDeepCopy.Context();
m_processorIdentifier = toDeepCopy.ProcessorIdentifier();

std::map<hstring, hstring> properties;
for(const auto& property : toDeepCopy.ProcessorPropertiesView())
{
properties.emplace(property.Key(), property.Value());
}
m_processorProperties = multi_threaded_map(std::move(properties));
DeepCopyEnvironmentFrom(*this, toDeepCopy);
}

SecurityContext ConfigurationEnvironment::Context() const
Expand All @@ -48,7 +51,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
return m_processorIdentifier;
}

void ConfigurationEnvironment::ProcessorIdentifier(hstring value)
void ConfigurationEnvironment::ProcessorIdentifier(const hstring& value)
{
m_processorIdentifier = value;
}
Expand All @@ -58,18 +61,15 @@ namespace winrt::Microsoft::Management::Configuration::implementation
return m_processorProperties;
}

Windows::Foundation::Collections::IMapView<hstring, hstring> ConfigurationEnvironment::ProcessorPropertiesView() const
void ConfigurationEnvironment::DeepCopy(const implementation::ConfigurationEnvironment& toDeepCopy)
{
return m_processorProperties.GetView();
DeepCopyEnvironmentFrom(*this, toDeepCopy);
}

void ConfigurationEnvironment::DeepCopy(const implementation::ConfigurationEnvironment& toDeepCopy)
void ConfigurationEnvironment::ProcessorProperties(const Windows::Foundation::Collections::IMap<hstring, hstring>& values)
{
m_context = toDeepCopy.m_context;
m_processorIdentifier = toDeepCopy.m_processorIdentifier;

std::map<hstring, hstring> properties;
for (const auto& property : toDeepCopy.m_processorProperties)
for (const auto& property : values)
{
properties.emplace(property.Key(), property.Value());
}
Expand Down Expand Up @@ -97,7 +97,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
return m_context == SecurityContext::Current && m_processorIdentifier.empty() && m_processorProperties.Size() == 0;
}

com_ptr<ConfigurationEnvironment> ConfigurationEnvironment::CalculateCommonEnvironment(const std::vector<IConfigurationEnvironmentView>& environments)
com_ptr<ConfigurationEnvironment> ConfigurationEnvironment::CalculateCommonEnvironment(const std::vector<Configuration::ConfigurationEnvironment>& environments)
{
com_ptr<ConfigurationEnvironment> result;

Expand All @@ -111,7 +111,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation

for (size_t i = 1; i < environments.size(); ++i)
{
const IConfigurationEnvironmentView& environment = environments[i];
const Configuration::ConfigurationEnvironment& environment = environments[i];

if (result->m_context != environment.Context())
{
Expand All @@ -123,7 +123,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
result->m_processorIdentifier.clear();
}

if (!AreEqual(result->m_processorProperties.GetView(), environment.ProcessorPropertiesView()))
if (!AreEqual(result->m_processorProperties, environment.ProcessorProperties()))
{
result->m_processorProperties = single_threaded_map<hstring, hstring>();
}
Expand All @@ -139,7 +139,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
return result;
}

bool ConfigurationEnvironment::AreEqual(const Windows::Foundation::Collections::IMapView<hstring, hstring>& a, const Windows::Foundation::Collections::IMapView<hstring, hstring>& b)
bool ConfigurationEnvironment::AreEqual(const Windows::Foundation::Collections::IMap<hstring, hstring>& a, const Windows::Foundation::Collections::IMap<hstring, hstring>& b)
{
uint32_t a_size = a ? a.Size() : 0;
uint32_t b_size = b ? b.Size() : 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,28 @@

namespace winrt::Microsoft::Management::Configuration::implementation
{
struct ConfigurationEnvironment : ConfigurationEnvironmentT<ConfigurationEnvironment, IConfigurationEnvironmentView>, AppInstaller::WinRT::ModuleCountBase
struct ConfigurationEnvironment : ConfigurationEnvironmentT<ConfigurationEnvironment>, AppInstaller::WinRT::ModuleCountBase
{
ConfigurationEnvironment();
ConfigurationEnvironment(SecurityContext context, const std::wstring& processorIdentifier, std::map<hstring, hstring>&& processorProperties);
ConfigurationEnvironment(const implementation::ConfigurationEnvironment& toDeepCopy);
ConfigurationEnvironment(IConfigurationEnvironmentView toDeepCopy);
ConfigurationEnvironment(const Configuration::ConfigurationEnvironment& toDeepCopy);

SecurityContext Context() const;
void Context(SecurityContext value);

hstring ProcessorIdentifier() const;
void ProcessorIdentifier(hstring value);
void ProcessorIdentifier(const hstring& value);

Windows::Foundation::Collections::IMap<hstring, hstring> ProcessorProperties() const;
Windows::Foundation::Collections::IMapView<hstring, hstring> ProcessorPropertiesView() const;

#if !defined(INCLUDE_ONLY_INTERFACE_METHODS)
// Copies the values from the given environment, including making a new map of the properties.
void DeepCopy(const implementation::ConfigurationEnvironment& toDeepCopy);

// Copies the properties from the given map.
void ProcessorProperties(const Windows::Foundation::Collections::IMap<hstring, hstring>& values);

// Copies the scalar properties from the given ValueSet.
// Ignores all values that cannot be converted to a string.
void ProcessorProperties(const Windows::Foundation::Collections::ValueSet& values);
Expand All @@ -35,10 +37,10 @@ namespace winrt::Microsoft::Management::Configuration::implementation
bool IsDefault() const;

// Creates an environment, setting only fields that are identical between all given environments.
static com_ptr<ConfigurationEnvironment> CalculateCommonEnvironment(const std::vector<IConfigurationEnvironmentView>& environments);
static com_ptr<ConfigurationEnvironment> CalculateCommonEnvironment(const std::vector<Configuration::ConfigurationEnvironment>& environments);

// Checks if the two given properties maps are equal.
static bool AreEqual(const Windows::Foundation::Collections::IMapView<hstring, hstring>& a, const Windows::Foundation::Collections::IMapView<hstring, hstring>& b);
static bool AreEqual(const Windows::Foundation::Collections::IMap<hstring, hstring>& a, const Windows::Foundation::Collections::IMap<hstring, hstring>& b);

private:
SecurityContext m_context = SecurityContext::Current;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.Management.Configuration/ConfigurationSet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
struct EnvironmentData
{
EnvironmentData(Configuration::ConfigurationEnvironment environment) :
Environment(environment), Context(environment.Context()), Identifier(environment.ProcessorIdentifier()), Properties(environment.ProcessorProperties().GetView())
Environment(environment), Context(environment.Context()), Identifier(environment.ProcessorIdentifier()), Properties(environment.ProcessorProperties())
{
}

Expand All @@ -32,7 +32,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
Configuration::ConfigurationEnvironment Environment;
SecurityContext Context;
hstring Identifier;
Windows::Foundation::Collections::IMapView<hstring, hstring> Properties;
Windows::Foundation::Collections::IMap<hstring, hstring> Properties;
};

bool ContainsEnvironment(const std::vector<EnvironmentData>& uniqueEnvironments, const EnvironmentData& data)
Expand All @@ -50,7 +50,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation

void ComputeUniqueEnvironments(std::vector<EnvironmentData>& uniqueEnvironments, const Windows::Foundation::Collections::IVector<Configuration::ConfigurationUnit>& units)
{
for (Configuration::ConfigurationUnit unit : units)
for (const Configuration::ConfigurationUnit& unit : units)
{
if (unit.IsActive())
{
Expand Down Expand Up @@ -283,20 +283,20 @@ namespace winrt::Microsoft::Management::Configuration::implementation
m_schemaUri = value;
}

std::vector<IConfigurationEnvironmentView> ConfigurationSet::GetUnitEnvironmentsInternal()
std::vector<Configuration::ConfigurationEnvironment> ConfigurationSet::GetUnitEnvironmentsInternal()
{
std::vector<impl::EnvironmentData> uniqueEnvironments;
ComputeUniqueEnvironments(uniqueEnvironments, m_units);

std::vector<IConfigurationEnvironmentView> result;
std::vector<Configuration::ConfigurationEnvironment> result;
for (const impl::EnvironmentData& data : uniqueEnvironments)
{
result.emplace_back(data.Environment.as<IConfigurationEnvironmentView>());
result.emplace_back(*make_self<implementation::ConfigurationEnvironment>(data.Environment));
}
return result;
}

Windows::Foundation::Collections::IVector<IConfigurationEnvironmentView> ConfigurationSet::GetUnitEnvironments()
Windows::Foundation::Collections::IVector<Configuration::ConfigurationEnvironment> ConfigurationSet::GetUnitEnvironments()
{
return single_threaded_vector(GetUnitEnvironmentsInternal());
}
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.Management.Configuration/ConfigurationSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
void Units(std::vector<Configuration::ConfigurationUnit>&& units);
void Parameters(std::vector<Configuration::ConfigurationParameter>&& value);
void ConfigurationSetChange(com_ptr<ConfigurationSetChangeData>& data, const std::optional<guid>& unitInstanceIdentifier);
std::vector<IConfigurationEnvironmentView> GetUnitEnvironmentsInternal();
std::vector<Configuration::ConfigurationEnvironment> GetUnitEnvironmentsInternal();
#endif

hstring Name();
Expand Down Expand Up @@ -68,7 +68,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
Windows::Foundation::Uri SchemaUri();
void SchemaUri(const Windows::Foundation::Uri& value);

Windows::Foundation::Collections::IVector<IConfigurationEnvironmentView> GetUnitEnvironments();
Windows::Foundation::Collections::IVector<Configuration::ConfigurationEnvironment> GetUnitEnvironments();

HRESULT STDMETHODCALLTYPE SetLifetimeWatcher(IUnknown* watcher);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,5 @@ namespace winrt::Microsoft::Management::Configuration::implementation
static void WriteYamlStringValueIfNotEmpty(AppInstaller::YAML::Emitter& emitter, ConfigurationField key, hstring value);

std::wstring_view GetSchemaVersionCommentPrefix();

private:

};
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
return result;
}

Windows::Foundation::Collections::ValueSet CreateValueSetFromStringMap(const Windows::Foundation::Collections::IMapView<hstring, hstring>& map)
Windows::Foundation::Collections::ValueSet CreateValueSetFromStringMap(const Windows::Foundation::Collections::IMap<hstring, hstring>& map)
{
Windows::Foundation::Collections::ValueSet result;
if (map)
Expand All @@ -62,10 +62,10 @@ namespace winrt::Microsoft::Management::Configuration::implementation
Windows::Foundation::Collections::ValueSet& metadata,
SecurityContext context,
hstring processor,
Windows::Foundation::Collections::IMapView<hstring, hstring> properties,
Windows::Foundation::Collections::IMap<hstring, hstring> properties,
SecurityContext defaultContext = SecurityContext::Current,
hstring defaultProcessor = {},
Windows::Foundation::Collections::IMapView<hstring, hstring> defaultProperties = nullptr)
Windows::Foundation::Collections::IMap<hstring, hstring> defaultProperties = nullptr)
{
if (context != defaultContext)
{
Expand Down Expand Up @@ -106,7 +106,7 @@ namespace winrt::Microsoft::Management::Configuration::implementation
{
if (environment)
{
AddEnvironmentToMetadata(metadata, environment->Context(), environment->ProcessorIdentifier(), environment->ProcessorPropertiesView());
AddEnvironmentToMetadata(metadata, environment->Context(), environment->ProcessorIdentifier(), environment->ProcessorProperties());
}
}

Expand All @@ -116,8 +116,8 @@ namespace winrt::Microsoft::Management::Configuration::implementation
const Configuration::ConfigurationEnvironment& commonEnvironment)
{
AddEnvironmentToMetadata(metadata,
environment.Context(), environment.ProcessorIdentifier(), environment.ProcessorProperties().GetView(),
commonEnvironment.Context(), commonEnvironment.ProcessorIdentifier(), commonEnvironment.ProcessorProperties().GetView());
environment.Context(), environment.ProcessorIdentifier(), environment.ProcessorProperties(),
commonEnvironment.Context(), commonEnvironment.ProcessorIdentifier(), commonEnvironment.ProcessorProperties());
}
}

Expand Down
Loading

0 comments on commit 5b65fd7

Please sign in to comment.