framework/source/services/substitutepathvars.cxx |  560 -----------------------
 1 file changed, 560 deletions(-)

New commits:
commit 47f7e30f3584cbccd02cf3748399079778facd0d
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Tue Sep 27 18:10:32 2016 +0200

    tdf#102630: [API CHANGE] Remove SharePoints support from PathSubstitution
    
    ...apparently unused and broken (see issue)
    
    Change-Id: Ic20d287b59d3317fecdba03a3edf8f51611c91ba

diff --git a/framework/source/services/substitutepathvars.cxx 
b/framework/source/services/substitutepathvars.cxx
index 4d02998..b26dc9d 100644
--- a/framework/source/services/substitutepathvars.cxx
+++ b/framework/source/services/substitutepathvars.cxx
@@ -61,103 +61,6 @@ using namespace framework;
 
 namespace {
 
-// Must be zero value based
-enum EnvironmentType
-{
-        ET_HOST = 0             ,
-        ET_YPDOMAIN             ,
-        ET_DNSDOMAIN    ,
-        ET_NTDOMAIN             ,
-        ET_OS                   ,
-        ET_UNKNOWN              ,
-        ET_COUNT
-};
-
-// Must be zero value based
-enum OperatingSystem
-{
-        OS_WINDOWS = 0,
-        OS_UNIX         ,
-        OS_SOLARIS      ,
-        OS_LINUX        ,
-        OS_UNKNOWN      ,
-        OS_COUNT
-};
-
-struct SubstituteRule
-{
-    SubstituteRule()
-        : aEnvType(ET_UNKNOWN)
-    {}
-
-    SubstituteRule( const OUString& aVarName,
-                    const OUString& aValue,
-                    const css::uno::Any& aVal,
-                    EnvironmentType aType )
-        : aSubstVariable(aVarName)
-        , aSubstValue(aValue)
-        , aEnvValue(aVal)
-        , aEnvType(aType)
-    {}
-
-    OUString            aSubstVariable;
-    OUString            aSubstValue;
-    css::uno::Any       aEnvValue;
-    EnvironmentType     aEnvType;
-};
-
-typedef std::unordered_map<OUString, SubstituteRule, OUStringHash>
-    SubstituteVariables;
-
-typedef std::vector< SubstituteRule > SubstituteRuleVector;
-class SubstitutePathVariables_Impl : public utl::ConfigItem
-{
-    public:
-        SubstitutePathVariables_Impl();
-        virtual ~SubstitutePathVariables_Impl() override;
-
-        static OperatingSystem GetOperatingSystemFromString( const OUString& );
-        static EnvironmentType GetEnvTypeFromString( const OUString& );
-
-        void                   GetSharePointsRules( SubstituteVariables& 
aSubstVarMap );
-
-        /** is called from the ConfigManager before application ends or from 
the
-            PropertyChangeListener if the sub tree broadcasts changes. */
-        virtual void Notify( const css::uno::Sequence< OUString >& 
aPropertyNames ) override;
-
-    private:
-
-        virtual void ImplCommit() override;
-
-        // Wrapper methods for low-level functions
-        const OUString&    GetYPDomainName();
-        const OUString&    GetDNSDomainName();
-        const OUString&    GetNTDomainName();
-        const OUString&    GetHostName();
-
-        bool  FilterRuleSet(const SubstituteRuleVector& aRuleSet, 
SubstituteRule& aActiveRule);
-
-        void  ReadSharePointsFromConfiguration(css::uno::Sequence< OUString >& 
aSharePointsSeq);
-        void  ReadSharePointRuleSetFromConfiguration(const OUString& 
aSharePointName,
-                  const OUString& aSharePointNodeName,
-                  SubstituteRuleVector& aRuleSet);
-
-        // Stored values for domains and host
-        bool      m_bYPDomainRetrieved;
-        OUString  m_aYPDomain;
-        bool      m_bDNSDomainRetrieved;
-        OUString  m_aDNSDomain;
-        bool      m_bNTDomainRetrieved;
-        OUString  m_aNTDomain;
-        bool      m_bHostRetrieved;
-        OUString  m_aHost;
-
-        const OUString    m_aSharePointsNodeName;
-        const OUString    m_aDirPropertyName;
-        const OUString    m_aEnvPropertyName;
-        const OUString    m_aLevelSep;
-};
-
 enum PreDefVariable
 {
     PREDEFVAR_INST,
@@ -238,18 +141,6 @@ struct ReSubstFixedVarOrder
     }
 };
 
-struct ReSubstUserVarOrder
-{
-    sal_Int32       nVarValueLength;
-    OUString   aVarName;
-
-    bool operator< ( const ReSubstUserVarOrder& aUserVarOrder ) const
-    {
-        // Reverse operator< to have high to low ordering
-        return ( nVarValueLength > aUserVarOrder.nVarValueLength );
-    }
-};
-
 typedef ::cppu::WeakComponentImplHelper<
     css::util::XStringSubstitution,
     css::lang::XServiceInfo > SubstitutePathVariables_BASE;
@@ -257,8 +148,6 @@ typedef ::cppu::WeakComponentImplHelper<
 class SubstitutePathVariables : private cppu::BaseMutex,
                                 public SubstitutePathVariables_BASE
 {
-friend class SubstitutePathVariables_Impl;
-
 public:
     explicit SubstitutePathVariables(const css::uno::Reference< 
css::uno::XComponentContext >& xContext);
     virtual ~SubstitutePathVariables() override;
@@ -314,408 +203,16 @@ private:
         VarNameToIndexMap;
 
     VarNameToIndexMap            m_aPreDefVarMap;         // Mapping from 
pre-def variable names to enum for array access
-    SubstituteVariables          m_aSubstVarMap;          // Active rule set 
map indexed by variable name!
     PredefinedPathVariables      m_aPreDefVars;           // All predefined 
variables
-    SubstitutePathVariables_Impl m_aImpl;                 // Implementation 
class that access the configuration
     std::list<ReSubstFixedVarOrder> m_aReSubstFixedVarOrder; // To speed up 
resubstitution fixed variables (order for lookup)
-    std::list<ReSubstUserVarOrder> m_aReSubstUserVarOrder;  // To speed up 
resubstitution user variables
     css::uno::Reference< css::uno::XComponentContext > m_xContext;
 };
 
-struct TableEntry
-{
-    const char* pOSString;
-    sal_Int32   nStrLen;
-};
-
-// Table with valid operating system strings
-// Name of the os as char* and the length
-// of the string
-static const TableEntry aOSTable[OS_COUNT] =
-{
-    { RTL_CONSTASCII_STRINGPARAM("WINDOWS") },
-    { RTL_CONSTASCII_STRINGPARAM("UNIX") },
-    { RTL_CONSTASCII_STRINGPARAM("SOLARIS") },
-    { RTL_CONSTASCII_STRINGPARAM("LINUX") },
-    { RTL_CONSTASCII_STRINGPARAM("") } // unknown
-};
-
-// Table with valid environment variables
-// Name of the environment type as a char* and
-// the length of the string.
-static const TableEntry aEnvTable[ET_COUNT] =
-{
-    { RTL_CONSTASCII_STRINGPARAM("HOST") },
-    { RTL_CONSTASCII_STRINGPARAM("YPDOMAIN") },
-    { RTL_CONSTASCII_STRINGPARAM("DNSDOMAIN") },
-    { RTL_CONSTASCII_STRINGPARAM("NTDOMAIN") },
-    { RTL_CONSTASCII_STRINGPARAM("OS") },
-    { RTL_CONSTASCII_STRINGPARAM("") } // unknown
-};
-
-// Priority table for the environment types. Lower numbers define
-// a higher priority. Equal numbers has the same priority that means
-// that the first match wins!!
-static const sal_Int16 aEnvPrioTable[ET_COUNT] =
-{
-    1,      // ET_HOST
-    2,      // ET_IPDOMAIN
-    2,      // ET_DNSDOMAIN
-    2,      // ET_NTDOMAIN
-    3,      // ET_OS
-    99,     // ET_UNKNOWN
-};
-
-//      Implementation helper classes
-
-OperatingSystem SubstitutePathVariables_Impl::GetOperatingSystemFromString( 
const OUString& aOSString )
-{
-    for ( int i = 0; i < OS_COUNT; i++ )
-    {
-        if ( aOSString.equalsIgnoreAsciiCaseAsciiL( aOSTable[i].pOSString, 
aOSTable[i].nStrLen ))
-            return (OperatingSystem)i;
-    }
-
-    return OS_UNKNOWN;
-}
-
-EnvironmentType SubstitutePathVariables_Impl::GetEnvTypeFromString( const 
OUString& aEnvTypeString )
-{
-    for ( int i = 0; i < ET_COUNT; i++ )
-    {
-        if ( aEnvTypeString.equalsIgnoreAsciiCaseAsciiL( 
aEnvTable[i].pOSString, aEnvTable[i].nStrLen ))
-            return (EnvironmentType)i;
-    }
-
-    return ET_UNKNOWN;
-}
-
-SubstitutePathVariables_Impl::SubstitutePathVariables_Impl() :
-    utl::ConfigItem( OUString( "Office.Substitution" )),
-    m_bYPDomainRetrieved( false ),
-    m_bDNSDomainRetrieved( false ),
-    m_bNTDomainRetrieved( false ),
-    m_bHostRetrieved( false ),
-    m_aSharePointsNodeName( OUString( "SharePoints" )),
-    m_aDirPropertyName( OUString( "/Directory" )),
-    m_aEnvPropertyName( OUString( "/Environment" )),
-    m_aLevelSep( OUString(  "/" ))
-{
-    // Enable notification mechanism
-    // We need it to get information about changes outside these class on our 
configuration branch
-    Sequence<OUString> aNotifySeq { "SharePoints" };
-    EnableNotification( aNotifySeq, true );
-}
-
-SubstitutePathVariables_Impl::~SubstitutePathVariables_Impl()
-{
-}
-
-void SubstitutePathVariables_Impl::GetSharePointsRules( SubstituteVariables& 
aSubstVarMap )
-{
-    Sequence< OUString > aSharePointNames;
-    ReadSharePointsFromConfiguration( aSharePointNames );
-
-    if ( aSharePointNames.getLength() > 0 )
-    {
-        sal_Int32 nSharePoints = 0;
-
-        // Read SharePoints container from configuration
-        while ( nSharePoints < aSharePointNames.getLength() )
-        {
-            OUString aSharePointNodeName( m_aSharePointsNodeName );
-            aSharePointNodeName += "/";
-            aSharePointNodeName += aSharePointNames[ nSharePoints ];
-
-            SubstituteRuleVector aRuleSet;
-            ReadSharePointRuleSetFromConfiguration( aSharePointNames[ 
nSharePoints ], aSharePointNodeName, aRuleSet );
-            if ( !aRuleSet.empty() )
-            {
-                // We have at minimum one rule. Filter the correct rule out of 
the rule set
-                // and put into our SubstituteVariable map
-                SubstituteRule aActiveRule;
-                if ( FilterRuleSet( aRuleSet, aActiveRule ))
-                {
-                    // We have found an active rule
-                    aActiveRule.aSubstVariable = aSharePointNames[ 
nSharePoints ];
-                    aSubstVarMap.insert( SubstituteVariables::value_type(
-                    aActiveRule.aSubstVariable, aActiveRule ));
-                }
-            }
-            ++nSharePoints;
-        }
-    }
-}
-
-void SubstitutePathVariables_Impl::Notify( const css::uno::Sequence< OUString 
>& /*aPropertyNames*/ )
-{
-    // NOT implemented yet!
-}
-
-void SubstitutePathVariables_Impl::ImplCommit()
-{
-}
-
-inline OperatingSystem GetOperatingSystem()
-{
-#ifdef SOLARIS
-    return OS_SOLARIS;
-#elif defined LINUX
-    return OS_LINUX;
-#elif defined WIN32
-    return OS_WINDOWS;
-#elif defined UNIX
-    return OS_UNIX;
-#else
-    return OS_UNKNOWN;
-#endif
-}
-
-const OUString& SubstitutePathVariables_Impl::GetYPDomainName()
-{
-    if ( !m_bYPDomainRetrieved )
-    {
-        m_aYPDomain = NetworkDomain::GetYPDomainName().toAsciiLowerCase();
-        m_bYPDomainRetrieved = true;
-    }
-
-    return m_aYPDomain;
-}
-
-const OUString& SubstitutePathVariables_Impl::GetDNSDomainName()
-{
-    if ( !m_bDNSDomainRetrieved )
-    {
-        OUString   aTemp;
-        osl::SocketAddr aSockAddr;
-        oslSocketResult aResult;
-
-        OUString aHostName = GetHostName();
-        osl::SocketAddr::resolveHostname( aHostName, aSockAddr );
-        aTemp = aSockAddr.getHostname( &aResult );
-
-        // DNS domain name begins after the first "."
-        sal_Int32 nIndex = aTemp.indexOf( '.' );
-        if ( nIndex >= 0 && aTemp.getLength() > nIndex+1 )
-            m_aDNSDomain = aTemp.copy( nIndex+1 ).toAsciiLowerCase();
-        else
-            m_aDNSDomain.clear();
-
-        m_bDNSDomainRetrieved = true;
-    }
-
-    return m_aDNSDomain;
-}
-
-const OUString& SubstitutePathVariables_Impl::GetNTDomainName()
-{
-    if ( !m_bNTDomainRetrieved )
-    {
-        m_aNTDomain = NetworkDomain::GetNTDomainName().toAsciiLowerCase();
-        m_bNTDomainRetrieved = true;
-    }
-
-    return m_aNTDomain;
-}
-
-const OUString& SubstitutePathVariables_Impl::GetHostName()
-{
-    if (!m_bHostRetrieved)
-    {
-        oslSocketResult aSocketResult;
-        m_aHost = osl::SocketAddr::getLocalHostname( &aSocketResult 
).toAsciiLowerCase();
-        m_bHostRetrieved = true;
-    }
-
-    return m_aHost;
-}
-
-bool SubstitutePathVariables_Impl::FilterRuleSet( const SubstituteRuleVector& 
aRuleSet, SubstituteRule& aActiveRule )
-{
-    bool bResult = false;
-
-    if ( !aRuleSet.empty() )
-    {
-        const sal_uInt32 nCount = aRuleSet.size();
-
-        sal_Int16 nPrioCurrentRule = aEnvPrioTable[ ET_UNKNOWN ];
-        for ( sal_uInt32 nIndex = 0; nIndex < nCount; nIndex++ )
-        {
-            const SubstituteRule& aRule = aRuleSet[nIndex];
-            EnvironmentType eEnvType        = aRule.aEnvType;
-
-            // Check if environment type has a higher priority than current 
one!
-            if ( nPrioCurrentRule > aEnvPrioTable[eEnvType] )
-            {
-                switch ( eEnvType )
-                {
-                    case ET_HOST:
-                    {
-                        OUString aHost = GetHostName();
-                        OUString aHostStr;
-                        aRule.aEnvValue >>= aHostStr;
-                        aHostStr = aHostStr.toAsciiLowerCase();
-
-                        // Pattern match if domain environment match
-                        WildCard aPattern(aHostStr);
-                        bool bMatch = aPattern.Matches(aHost);
-                        if ( bMatch )
-                        {
-                            aActiveRule      = aRule;
-                            bResult          = true;
-                            nPrioCurrentRule = aEnvPrioTable[eEnvType];
-                        }
-                    }
-                    break;
-
-                    case ET_YPDOMAIN:
-                    case ET_DNSDOMAIN:
-                    case ET_NTDOMAIN:
-                    {
-                        OUString   aDomain;
-                        OUString   aDomainStr;
-                        aRule.aEnvValue >>= aDomainStr;
-                        aDomainStr = aDomainStr.toAsciiLowerCase();
-
-                        // Retrieve the correct domain value
-                        if ( eEnvType == ET_YPDOMAIN )
-                            aDomain = GetYPDomainName();
-                        else if ( eEnvType == ET_DNSDOMAIN )
-                            aDomain = GetDNSDomainName();
-                        else
-                            aDomain = GetNTDomainName();
-
-                        // Pattern match if domain environment match
-                        WildCard aPattern(aDomainStr);
-                        bool bMatch = aPattern.Matches(aDomain);
-                        if ( bMatch )
-                        {
-                            aActiveRule      = aRule;
-                            bResult          = true;
-                            nPrioCurrentRule = aEnvPrioTable[eEnvType];
-                        }
-                    }
-                    break;
-
-                    case ET_OS:
-                    {
-                        // No pattern matching for OS type
-                        OperatingSystem eOSType = GetOperatingSystem();
-
-                        sal_Int16 nValue = 0;
-                        aRule.aEnvValue >>= nValue;
-
-                        bool            bUnix = ( eOSType == OS_LINUX ) || ( 
eOSType == OS_SOLARIS );
-                        OperatingSystem eRuleOSType = (OperatingSystem)nValue;
-
-                        // Match if OS identical or rule is set to UNIX and OS 
is LINUX/SOLARIS!
-                        if (( eRuleOSType == eOSType ) || ( eRuleOSType == 
OS_UNIX && bUnix ))
-                        {
-                            aActiveRule      = aRule;
-                            bResult          = true;
-                            nPrioCurrentRule = aEnvPrioTable[eEnvType];
-                        }
-                    }
-                    break;
-
-                    case ET_UNKNOWN: // nothing to do
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-        }
-    }
-
-    return bResult;
-}
-
-void SubstitutePathVariables_Impl::ReadSharePointsFromConfiguration( Sequence< 
OUString >& aSharePointsSeq )
-{
-    //returns all the names of all share point nodes
-    aSharePointsSeq = GetNodeNames( m_aSharePointsNodeName );
-}
-
-void SubstitutePathVariables_Impl::ReadSharePointRuleSetFromConfiguration(
-        const OUString& aSharePointName,
-        const OUString& aSharePointNodeName,
-        SubstituteRuleVector& rRuleSet )
-{
-    Sequence< OUString > aSharePointMappingsNodeNames = GetNodeNames( 
aSharePointNodeName, utl::CONFIG_NAME_LOCAL_PATH );
-
-    sal_Int32 nSharePointMapping = 0;
-    while ( nSharePointMapping < aSharePointMappingsNodeNames.getLength() )
-    {
-        OUString aSharePointMapping( aSharePointNodeName );
-        aSharePointMapping += m_aLevelSep;
-        aSharePointMapping += aSharePointMappingsNodeNames[ nSharePointMapping 
];
-
-        // Read SharePointMapping
-        OUString aDirValue;
-        OUString aDirProperty( aSharePointMapping );
-        aDirProperty += m_aDirPropertyName;
-
-        // Read only the directory property
-        Sequence<OUString> aDirPropertySeq { aDirProperty };
-
-        Sequence< Any > aValueSeq = GetProperties( aDirPropertySeq );
-        if ( aValueSeq.getLength() == 1 )
-            aValueSeq[0] >>= aDirValue;
-
-        // Read the environment setting
-        OUString aEnvUsed;
-        OUString aEnvProperty( aSharePointMapping );
-        aEnvProperty += m_aEnvPropertyName;
-        Sequence< OUString > aEnvironmentVariable = GetNodeNames( aEnvProperty 
);
-
-        // Filter the property which has a value set
-        Sequence< OUString > aEnvUsedPropertySeq( 
aEnvironmentVariable.getLength() );
-
-        OUString aEnvUsePropNameTemplate( aEnvProperty );
-        aEnvUsePropNameTemplate += m_aLevelSep;
-
-        for ( sal_Int32 nProperty = 0; nProperty < 
aEnvironmentVariable.getLength(); nProperty++ )
-            aEnvUsedPropertySeq[nProperty] = aEnvUsePropNameTemplate + 
aEnvironmentVariable[nProperty];
-
-        Sequence< Any > aEnvUsedValueSeq;
-        aEnvUsedValueSeq = GetProperties( aEnvUsedPropertySeq );
-
-        OUString aEnvUsedValue;
-        for ( sal_Int32 nIndex = 0; nIndex < aEnvironmentVariable.getLength(); 
nIndex++ )
-        {
-            if ( aEnvUsedValueSeq[nIndex] >>= aEnvUsedValue )
-            {
-                aEnvUsed = aEnvironmentVariable[nIndex];
-                break;
-            }
-        }
-
-        // Decode the environment and optional the operating system settings
-        Any                             aEnvValue;
-        EnvironmentType eEnvType = GetEnvTypeFromString( aEnvUsed );
-        if ( eEnvType == ET_OS )
-        {
-            OperatingSystem eOSType = GetOperatingSystemFromString( 
aEnvUsedValue );
-            aEnvValue <<= (sal_Int16)eOSType;
-        }
-        else
-            aEnvValue <<= aEnvUsedValue;
-
-        // Create rule struct and push it into the rule set
-        SubstituteRule aRule( aSharePointName, aDirValue, aEnvValue, eEnvType 
);
-        rRuleSet.push_back( aRule );
-
-        ++nSharePointMapping;
-    }
-}
-
 SubstitutePathVariables::SubstitutePathVariables( const Reference< 
XComponentContext >& xContext ) :
     SubstitutePathVariables_BASE(m_aMutex),
     m_xContext( xContext )
 {
     SetPredefinedPathVariables();
-    m_aImpl.GetSharePointsRules( m_aSubstVarMap );
 
     // Init the predefined/fixed variable to index hash map
     for ( int i = 0; i < PREDEFVAR_COUNT; i++ )
@@ -744,16 +241,6 @@ SubstitutePathVariables::SubstitutePathVariables( const 
Reference< XComponentCon
         }
     }
     m_aReSubstFixedVarOrder.sort();
-
-    // Sort user variables to path length
-    for (auto const & i: m_aSubstVarMap)
-    {
-        ReSubstUserVarOrder aUserOrderVar;
-        aUserOrderVar.aVarName = "$(" + i.second.aSubstVariable + ")";
-        aUserOrderVar.nVarValueLength = i.second.aSubstVariable.getLength();
-        m_aReSubstUserVarOrder.push_back( aUserOrderVar );
-    }
-    m_aReSubstUserVarOrder.sort();
 }
 
 SubstitutePathVariables::~SubstitutePathVariables()
@@ -927,18 +414,6 @@ throw ( NoSuchElementException, RuntimeException )
                     nReplaceLength = nLength;
                 }
             }
-            else
-            {
-                // Extract the variable name and try to find in the user 
defined variable set
-                OUString aVarName = aSubString.copy( 2, nLength-3 );
-                SubstituteVariables::const_iterator pIter = 
m_aSubstVarMap.find( aVarName );
-                if ( pIter != m_aSubstVarMap.end() )
-                {
-                    // Found.
-                    aReplacement = pIter->second.aSubstValue;
-                    nReplaceLength = nLength;
-                }
-            }
 
             // Have we found something to replace?
             if ( nReplaceLength > 0 )
@@ -1125,19 +600,6 @@ throw ( RuntimeException )
             }
         }
 
-        // This part can be iterated more than one time as variables can 
contain variables again!
-        for (auto const & i: m_aReSubstUserVarOrder)
-        {
-            OUString aVarValue = i.aVarName;
-            sal_Int32 nPos = aURL.indexOf( aVarValue );
-            if ( nPos >= 0 )
-            {
-                aURL = aURL.replaceAt(
-                    nPos, aVarValue.getLength(), "$(" + aVarValue + ")");
-                bVariableFound = true;  // Resubstitution not finished yet!
-            }
-        }
-
         if ( !bVariableFound )
         {
             return aURL;
@@ -1168,28 +630,6 @@ throw ( NoSuchElementException, RuntimeException )
     }
     else
     {
-        // Prepare variable name before hash map access
-        if ( nPos >= 0 )
-        {
-            if ( rVariable.getLength() > 3 )
-                aVariable = rVariable.copy( 2, rVariable.getLength() - 3 );
-            else
-            {
-                OUString aExceptionText("Unknown variable!");
-                throw NoSuchElementException(aExceptionText, 
static_cast<cppu::OWeakObject *>(this));
-            }
-        }
-        else
-            aVariable = rVariable;
-
-        // User defined variable
-        SubstituteVariables::const_iterator pIter = m_aSubstVarMap.find( 
aVariable );
-        if ( pIter != m_aSubstVarMap.end() )
-        {
-            // found!
-            return pIter->second.aSubstValue;
-        }
-
         OUString aExceptionText("Unknown variable!");
         throw NoSuchElementException(aExceptionText, 
static_cast<cppu::OWeakObject *>(this));
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to