generated UNO code for service constructors

Stephan Bergmann sbergman at redhat.com
Fri Feb 15 01:47:13 PST 2013


On 02/15/2013 10:35 AM, Noel Grandin wrote:
> Then how about this?
> Split the logic so we can differentiate the cases.

It would grow more code, but if you absolutely feel like it...  :)

(In which case the "of type XFilePicker3" should arguably be removed 
from the original two throw expressions.)

> Also, we could reduce the compress the EXE size a little by moving all
> of this boilerplate into a central utility method somewhere.

Yeah, might be possible to abstract out some common code into one or 
more functions.

> static Reference< XFilePicker3 > createDefault(Reference<
> XComponentContext > const & the_context) {
>     assert(the_context.is());
>     Reference< XInterface > the_instance1;
>     try {
>       the_instance1 =
> the_context->getServiceManager()->createInstanceWithArgumentsAndContext(
>                          "com.sun.star.ui.dialogs.FilePicker" ,
>                          Sequence<Any>(),
>                          the_context),
>      } catch (RuntimeException &) {
>        throw;
>      } catch (Exception & the_exception) {
>        throw DeploymentException( "component context fails to supply
> service FilePicker of type XFilePicker3: "
>                        + the_exception.Message, the_context);
>      }
>      if (!the_instance1.is()) {
>           throw DeploymentException( "component context fails to supply
> service FilePicker of type XFilePicker3" ), the_context);
>      }
>      Reference< XFilePicker3 > the_instance2( the_instance1, UNO_QUERY );
>      if (!the_instance2.is()) {
>          throw DeploymentException( "component context supplied a
> service FilePicker, but the service does not implement interface
> XFilePicker3" ), the_context);     }
>      return the_instance;
> }

Stephan


More information about the LibreOffice mailing list