Index: com/sun/star/comp/loader/JavaLoader.java =================================================================== --- com/sun/star/comp/loader/JavaLoader.java (revision 262619) +++ com/sun/star/comp/loader/JavaLoader.java (working copy) @@ -59,6 +59,7 @@ import com.sun.star.uno.XComponentContext; import com.sun.star.beans.XPropertySet; +import com.sun.star.uri.ExternalUriReferenceTranslator; import com.sun.star.util.XMacroExpander; import com.sun.star.uno.XInterface; @@ -104,29 +105,28 @@ private XMacroExpander m_xMacroExpander = null; private static final String EXPAND_PROTOCOL_PREFIX = "vnd.sun.star.expand:"; - /** Expands macrofied url using the macro expander singleton. - */ - private String expand_url( String url ) throws RuntimeException + private String translateUri( String url ) throws RuntimeException { - if (url != null && url.startsWith( EXPAND_PROTOCOL_PREFIX )) +/*SB*/System.err.println("translateUri("+url+"):"); + try { - try + XPropertySet xProps = (XPropertySet) + UnoRuntime.queryInterface( + XPropertySet.class, multiServiceFactory ); + if (xProps == null) { + throw new com.sun.star.uno.RuntimeException( + "service manager does not support XPropertySet!", + this ); + } + XComponentContext xContext = (XComponentContext) + AnyConverter.toObject( + new Type( XComponentContext.class ), + xProps.getPropertyValue( "DefaultContext" ) ); + if (url.startsWith( EXPAND_PROTOCOL_PREFIX )) + { if (m_xMacroExpander == null) { - XPropertySet xProps = (XPropertySet) - UnoRuntime.queryInterface( - XPropertySet.class, multiServiceFactory ); - if (xProps == null) - { - throw new com.sun.star.uno.RuntimeException( - "service manager does not support XPropertySet!", - this ); - } - XComponentContext xContext = (XComponentContext) - AnyConverter.toObject( - new Type( XComponentContext.class ), - xProps.getPropertyValue( "DefaultContext" ) ); m_xMacroExpander = (XMacroExpander)AnyConverter.toObject( new Type( XMacroExpander.class ), xContext.getValueByName( @@ -139,27 +139,28 @@ url.substring( EXPAND_PROTOCOL_PREFIX.length() ), '+', "%2B" ) ); // expand macro string - String ret = m_xMacroExpander.expandMacros( macro ); - if (DEBUG) - { - System.err.println( - "JavaLoader.expand_url(): " + url + " => " + - macro + " => " + ret ); - } - return ret; + url = m_xMacroExpander.expandMacros( macro ); } - catch (com.sun.star.uno.Exception exc) - { + String res = ExternalUriReferenceTranslator.create(xContext). + translateToExternal(url); + if (res.length() == 0 && url.length() != 0) { throw new com.sun.star.uno.RuntimeException( - exc.getMessage(), this ); + ("com.sun.star.uri.ExternalUriReferenceTranslator" + + ".translateToExternal(" + url + ") failed"), + this); } - catch (java.lang.Exception exc) - { - throw new com.sun.star.uno.RuntimeException( - exc.getMessage(), this ); - } +/*SB*/System.err.println(" gives ("+res+"):"); + return res; } - return url; + catch (com.sun.star.uno.RuntimeException exc) + { + throw exc; + } + catch (com.sun.star.uno.Exception exc) + { + throw new com.sun.star.uno.RuntimeException( + exc.getMessage(), this ); + } } /** default constructor @@ -277,8 +278,6 @@ throws CannotActivateFactoryException, com.sun.star.uno.RuntimeException { - locationUrl = expand_url( locationUrl ); - Object returnObject = null; Class clazz = null; @@ -293,7 +292,7 @@ try { if ( locationUrl != null ) { // 1. - clazz = RegistrationClassFinder.find( locationUrl ); + clazz = RegistrationClassFinder.find(translateUri(locationUrl)); } else { // 2. @@ -424,7 +423,7 @@ throws CannotRegisterImplementationException, com.sun.star.uno.RuntimeException { - locationUrl = expand_url( locationUrl ); + locationUrl = translateUri( locationUrl ); boolean success = false; @@ -447,7 +446,7 @@ success = ((Boolean) oRet).booleanValue(); } catch (Exception e) { - throw new CannotRegisterImplementationException( e.getMessage()); + throw new CannotRegisterImplementationException(e.toString()); } return success;