summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
Diffstat (limited to 'ucb')
-rw-r--r--ucb/Library_ucpftp1.mk1
-rw-r--r--ucb/qa/complex/tdoc/CheckContentProvider.java8
-rw-r--r--ucb/qa/complex/tdoc/CheckTransientDocumentsContent.java2
-rw-r--r--ucb/qa/complex/tdoc/CheckTransientDocumentsContentProvider.java2
-rw-r--r--ucb/qa/complex/ucb/UCB.java28
-rw-r--r--ucb/source/core/ucb.cxx39
-rw-r--r--ucb/source/core/ucb.hxx1
-rw-r--r--ucb/source/ucp/expand/ucpexpand.cxx5
-rw-r--r--ucb/source/ucp/ext/ucpext_content.cxx4
-rw-r--r--ucb/source/ucp/ext/ucpext_datasupplier.cxx2
-rw-r--r--ucb/source/ucp/ftp/ftpcontentprovider.cxx24
-rw-r--r--ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java1
12 files changed, 56 insertions, 61 deletions
diff --git a/ucb/Library_ucpftp1.mk b/ucb/Library_ucpftp1.mk
index 69e938ce9d8d..e588649e2f30 100644
--- a/ucb/Library_ucpftp1.mk
+++ b/ucb/Library_ucpftp1.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_Library_set_componentfile,ucpftp1,ucb/source/ucp/ftp/ucpftp1))
$(eval $(call gb_Library_use_sdk_api,ucpftp1))
$(eval $(call gb_Library_use_libraries,ucpftp1,\
+ comphelper \
cppu \
cppuhelper \
sal \
diff --git a/ucb/qa/complex/tdoc/CheckContentProvider.java b/ucb/qa/complex/tdoc/CheckContentProvider.java
index b41f04e656d3..7e82ba795a08 100644
--- a/ucb/qa/complex/tdoc/CheckContentProvider.java
+++ b/ucb/qa/complex/tdoc/CheckContentProvider.java
@@ -122,7 +122,7 @@ public class CheckContentProvider {
XContentProvider xContentProvider =
UnoRuntime.queryInterface(XContentProvider.class, o);
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
// create a content identifier from the ucb for tdoc
@@ -185,7 +185,7 @@ public class CheckContentProvider {
Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
XContentProvider xContentProvider =
UnoRuntime.queryInterface(XContentProvider.class, o);
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
// create a content identifier from the ucb for tdoc
@@ -220,7 +220,7 @@ public class CheckContentProvider {
Object o = xMSF.createInstance("com.sun.star.comp.ucb.TransientDocumentsContentProvider");
XContentProvider xContentProvider =
UnoRuntime.queryInterface(XContentProvider.class, o);
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
// create a content identifier from the ucb for tdoc
@@ -255,7 +255,7 @@ public class CheckContentProvider {
XContentProvider xContentProvider =
UnoRuntime.queryInterface(XContentProvider.class, o);
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
// create a content identifier from the ucb for tdoc
diff --git a/ucb/qa/complex/tdoc/CheckTransientDocumentsContent.java b/ucb/qa/complex/tdoc/CheckTransientDocumentsContent.java
index 2898792eca18..7ad0dc07e59a 100644
--- a/ucb/qa/complex/tdoc/CheckTransientDocumentsContent.java
+++ b/ucb/qa/complex/tdoc/CheckTransientDocumentsContent.java
@@ -74,7 +74,7 @@ public class CheckTransientDocumentsContent {
*/
@Test public void checkTransientDocumentsContent() {
try {
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
XContentProvider xContentProvider =
diff --git a/ucb/qa/complex/tdoc/CheckTransientDocumentsContentProvider.java b/ucb/qa/complex/tdoc/CheckTransientDocumentsContentProvider.java
index 29059e0ce3d1..6697709180c2 100644
--- a/ucb/qa/complex/tdoc/CheckTransientDocumentsContentProvider.java
+++ b/ucb/qa/complex/tdoc/CheckTransientDocumentsContentProvider.java
@@ -85,7 +85,7 @@ public class CheckTransientDocumentsContentProvider {
XContentProvider xContentProvider =
UnoRuntime.queryInterface(XContentProvider.class, o);
- // create the ucb
+ // create unconfigured ucb
XContentIdentifierFactory xContentIdentifierFactory =
UnoRuntime.queryInterface(XContentIdentifierFactory.class, xMSF.createInstance("com.sun.star.ucb.UniversalContentBroker"));
// create a content identifier from the ucb for tdoc
diff --git a/ucb/qa/complex/ucb/UCB.java b/ucb/qa/complex/ucb/UCB.java
index 95cc501b5270..2296b7530037 100644
--- a/ucb/qa/complex/ucb/UCB.java
+++ b/ucb/qa/complex/ucb/UCB.java
@@ -29,7 +29,6 @@ import java.util.List;
import java.util.ArrayList;
import com.sun.star.beans.Property;
-import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sdbc.XResultSet;
import com.sun.star.sdbc.XRow;
// import com.sun.star.uno.XComponentContext;
@@ -54,20 +53,14 @@ import static org.junit.Assert.*;
* It should be always: dir,filename.
*/
public class UCB {
- private Object ucb;
+ private XUniversalContentBroker ucb;
// public String[] getTestMethodNames() {
// return new String[] {"checkWrongFtpConnection"};
// }
- public void init(XMultiServiceFactory xmsf) throws Exception {
- String[] keys = new String[2];
- keys[0] = "Local";
- keys[1] = "Office";
- ucb =
- xmsf.createInstanceWithArguments(
- "com.sun.star.ucb.UniversalContentBroker",
- keys);
+ public void init() throws Exception {
+ ucb = UniversalContentBroker.create(connection.getComponentContext());
}
public void delete(String filename) throws Exception {
@@ -193,8 +186,8 @@ public class UCB {
public Object getContent(String path) throws Exception
{
- XContentIdentifier id = (UnoRuntime.queryInterface(XContentIdentifierFactory.class, ucb)).createContentIdentifier(path);
- return (UnoRuntime.queryInterface(XContentProvider.class, ucb)).queryContent(id);
+ XContentIdentifier id = ucb.createContentIdentifier(path);
+ return ucb.queryContent(id);
}
public static interface Verifier {
@@ -204,10 +197,9 @@ public class UCB {
@Test public void checkWrongFtpConnection() {
//localhost ;Lo-1.Germany.sun.com; 10.16.65.155
try {
- XMultiServiceFactory xLocMSF = getMSF();
String acountUrl = "ftp://noname:nopasswd@nohost";
System.out.println(acountUrl);
- init(xLocMSF);
+ init();
Object content = getContent(acountUrl);
OpenCommandArgument2 aArg = new OpenCommandArgument2();
@@ -232,14 +224,6 @@ public class UCB {
// System.exit(0);
}
-
-
- private XMultiServiceFactory getMSF()
- {
- final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
- return xMSF1;
- }
-
// setup and close connections
@BeforeClass public static void setUpConnection() throws Exception {
System.out.println("setUpConnection()");
diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx
index 4d454c2e4f30..c3ad4337460f 100644
--- a/ucb/source/core/ucb.cxx
+++ b/ucb/source/core/ucb.cxx
@@ -372,17 +372,34 @@ void SAL_CALL UniversalContentBroker::initialize(
throw( com::sun::star::uno::Exception,
com::sun::star::uno::RuntimeException )
{
- //@@@ At the moment, there's a problem when one (non-one-instance) factory
- // 'wraps' another (one-instance) factory, causing this method to be
- // called several times:
- m_aArguments = aArguments;
-
- oslInterlockedCount nCount = osl_incrementInterlockedCount(&m_nInitCount);
- if (nCount == 1)
- configureUcb();
- else
- osl_decrementInterlockedCount(&m_nInitCount);
- // make the possibility of overflow less likely...
+ {
+ osl::MutexGuard aGuard(m_aMutex);
+ if (m_aArguments.getLength() != 0)
+ {
+ if (aArguments.getLength() != 0
+ && !(m_aArguments.getLength() == 2
+ && aArguments.getLength() == 2
+ && m_aArguments[0] == aArguments[0]
+ && m_aArguments[1] == aArguments[1]))
+ {
+ throw IllegalArgumentException(
+ "UCB reinitialized with different arguments",
+ static_cast< cppu::OWeakObject * >(this), 0);
+ }
+ return;
+ }
+ if (aArguments.getLength() == 0)
+ {
+ m_aArguments.realloc(2);
+ m_aArguments[0] <<= OUString("Local");
+ m_aArguments[1] <<= OUString("Office");
+ }
+ else
+ {
+ m_aArguments = aArguments;
+ }
+ }
+ configureUcb();
}
//=========================================================================
diff --git a/ucb/source/core/ucb.hxx b/ucb/source/core/ucb.hxx
index f12386fe94ab..8cd61e413f0a 100644
--- a/ucb/source/core/ucb.hxx
+++ b/ucb/source/core/ucb.hxx
@@ -57,6 +57,7 @@ class UniversalContentBroker :
public com::sun::star::ucb::XUniversalContentBroker,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::lang::XServiceInfo,
+ public com::sun::star::lang::XInitialization,
public com::sun::star::util::XChangesListener
{
public:
diff --git a/ucb/source/ucp/expand/ucpexpand.cxx b/ucb/source/ucp/expand/ucpexpand.cxx
index 3f75376e1249..4e2aadef6843 100644
--- a/ucb/source/ucp/expand/ucpexpand.cxx
+++ b/ucb/source/ucp/expand/ucpexpand.cxx
@@ -63,6 +63,7 @@ typedef ::cppu::WeakComponentImplHelper2<
//==============================================================================
class ExpandContentProviderImpl : protected MutexHolder, public t_impl_helper
{
+ uno::Reference< uno::XComponentContext > m_xComponentContext;
uno::Reference< util::XMacroExpander > m_xMacroExpander;
OUString expandUri(
uno::Reference< ucb::XContentIdentifier > const & xIdentifier ) const;
@@ -75,6 +76,7 @@ public:
inline ExpandContentProviderImpl(
uno::Reference< uno::XComponentContext > const & xComponentContext )
: t_impl_helper( m_mutex ),
+ m_xComponentContext( xComponentContext ),
m_xMacroExpander(
xComponentContext->getValueByName(
OUSTR("/singletons/com.sun.star.util.theMacroExpander") ),
@@ -216,7 +218,8 @@ uno::Reference< ucb::XContent > ExpandContentProviderImpl::queryContent(
::ucbhelper::Content ucb_content;
if (::ucbhelper::Content::create(
- uri, uno::Reference< ucb::XCommandEnvironment >(), ucb_content ))
+ uri, uno::Reference< ucb::XCommandEnvironment >(),
+ m_xComponentContext, ucb_content ))
{
return ucb_content.get();
}
diff --git a/ucb/source/ucp/ext/ucpext_content.cxx b/ucb/source/ucp/ext/ucpext_content.cxx
index 6e47cad61aa9..290a49570c6d 100644
--- a/ucb/source/ucp/ext/ucpext_content.cxx
+++ b/ucb/source/ucp/ext/ucpext_content.cxx
@@ -286,7 +286,7 @@ namespace ucb { namespace ucp { namespace ext
if ( aOpenCommand.Sink.is() )
{
const ::rtl::OUString sPhysicalContentURL( getPhysicalURL() );
- ::ucbhelper::Content aRequestedContent( sPhysicalContentURL, i_rEvironment );
+ ::ucbhelper::Content aRequestedContent( sPhysicalContentURL, i_rEvironment, comphelper::ComponentContext(m_xSMgr).getUNOContext() );
aRet = aRequestedContent.executeCommand( ::rtl::OUString( "open" ), makeAny( aOpenCommand ) );
}
}
@@ -502,7 +502,7 @@ namespace ucb { namespace ucp { namespace ext
case E_EXTENSION_CONTENT:
{
const ::rtl::OUString sPhysicalContentURL( getPhysicalURL() );
- ::ucbhelper::Content aRequestedContent( sPhysicalContentURL, i_rEnv );
+ ::ucbhelper::Content aRequestedContent( sPhysicalContentURL, i_rEnv, comphelper::ComponentContext(m_xSMgr).getUNOContext() );
// translate the property request
Sequence< ::rtl::OUString > aPropertyNames( i_rProperties.getLength() );
diff --git a/ucb/source/ucp/ext/ucpext_datasupplier.cxx b/ucb/source/ucp/ext/ucpext_datasupplier.cxx
index 29356a7e68e5..aec7058c1f24 100644
--- a/ucb/source/ucp/ext/ucpext_datasupplier.cxx
+++ b/ucb/source/ucp/ext/ucpext_datasupplier.cxx
@@ -178,7 +178,7 @@ namespace ucb { namespace ucp { namespace ext
case E_EXTENSION_CONTENT:
{
const ::rtl::OUString sPackageLocation( m_pImpl->m_xContent->getPhysicalURL() );
- ::ucbhelper::Content aWrappedContent( sPackageLocation, getResultSet()->getEnvironment() );
+ ::ucbhelper::Content aWrappedContent( sPackageLocation, getResultSet()->getEnvironment(), comphelper::ComponentContext(m_pImpl->m_xSMgr).getUNOContext() );
// obtain the properties which our result set is set up for from the wrapped content
Sequence< ::rtl::OUString > aPropertyNames(1);
diff --git a/ucb/source/ucp/ftp/ftpcontentprovider.cxx b/ucb/source/ucp/ftp/ftpcontentprovider.cxx
index a7b281129e62..7d9db3d8b582 100644
--- a/ucb/source/ucp/ftp/ftpcontentprovider.cxx
+++ b/ucb/source/ucp/ftp/ftpcontentprovider.cxx
@@ -33,7 +33,8 @@
*************************************************************************/
-#include <ucbhelper/contentbroker.hxx>
+#include <com/sun/star/ucb/UniversalContentBroker.hpp>
+#include <comphelper/componentcontext.hxx>
#include <osl/socket.hxx>
#include "ftpcontentprovider.hxx"
#include "ftpcontent.hxx"
@@ -258,23 +259,10 @@ FTPContentProvider::getHttpProvider()
throw(RuntimeException)
{
// used for access to ftp-proxy
- ucbhelper::ContentBroker *pBroker = ucbhelper::ContentBroker::get();
-
- if(pBroker) {
- Reference<XContentProviderManager > xManager(
- pBroker->getContentProviderManagerInterface());
-
- if(xManager.is())
- return
- xManager->queryContentProvider(
- rtl::OUString("http:"));
- else
- throw RuntimeException(
- rtl::OUString( "bad ucbhelper::ContentBroker"),
- *this);
- } else
- return 0;
-
+ return
+ UniversalContentBroker::create(
+ comphelper::ComponentContext(m_xSMgr).getUNOContext())->
+ queryContentProvider("http:");
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java b/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java
index 7017bec2ed25..a84516e0f4a4 100644
--- a/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java
+++ b/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java
@@ -64,6 +64,7 @@ public final class GlobalTransfer_Test extends ComplexTestCase {
XMultiServiceFactory xMSF = (XMultiServiceFactory)param.getMSF();
oObj
= xMSF.createInstance( "com.sun.star.ucb.UniversalContentBroker" );
+ // unconfigured instance
}
catch(com.sun.star.uno.Exception e) {
e.printStackTrace((PrintWriter)log);