@Override
    public IndexerPostProcessor addingService(
        ServiceReference<IndexerPostProcessor> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      IndexerPostProcessor indexerPostProcessor = registry.getService(serviceReference);

      List<String> indexerClassNames =
          StringPlus.asList(serviceReference.getProperty("indexer.class.name"));

      for (String indexerClassName : indexerClassNames) {
        Indexer indexer = IndexerRegistryUtil.getIndexer(indexerClassName);

        if (indexer == null) {
          _log.error("No indexer for " + indexerClassName + " was found");

          continue;
        }

        indexer.registerIndexerPostProcessor(indexerPostProcessor);
      }

      return indexerPostProcessor;
    }
  @Test
  public void testMBeanBySuffix() throws Exception {
    Registry registry = RegistryUtil.getRegistry();

    MBeanServer mBeanServer = registry.getService(MBeanServer.class);

    ObjectName objectName = new ObjectName(JMXWhiteboardByInterfaceMBean.OBJECT_NAME);

    MBeanInfo mBeanInfo = mBeanServer.getMBeanInfo(objectName);

    Assert.assertNotNull(mBeanInfo);

    MBeanOperationInfo[] operations = mBeanInfo.getOperations();

    MBeanOperationInfo mBeanOperationInfo = operations[0];

    MBeanParameterInfo[] signatureParameters = mBeanOperationInfo.getSignature();

    String[] sinature = new String[signatureParameters.length];

    for (int i = 0; i < signatureParameters.length; i++) {
      MBeanParameterInfo mBeanParameterInfo = signatureParameters[i];

      sinature[i] = mBeanParameterInfo.getType();
    }

    Object result =
        mBeanServer.invoke(
            objectName, mBeanOperationInfo.getName(), new Object[] {"Hello!"}, sinature);

    Assert.assertEquals("{Hello!}", result);
  }
    @Override
    public SchedulerEntry addingService(ServiceReference<SchedulerEntry> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      SchedulerEntry schedulerEntry = registry.getService(serviceReference);

      StorageType storageType = StorageType.MEMORY_CLUSTERED;

      if (schedulerEntry instanceof StorageTypeAware) {
        StorageTypeAware storageTypeAware = (StorageTypeAware) schedulerEntry;

        storageType = storageTypeAware.getStorageType();
      }

      addTrigger(schedulerEntry, serviceReference);

      String portletId = (String) serviceReference.getProperty("javax.portlet.name");

      try {
        SchedulerEngineHelperUtil.schedule(schedulerEntry, storageType, portletId, 0);

        return schedulerEntry;
      } catch (SchedulerException e) {
        _log.error(e, e);
      }

      return null;
    }
            @Override
            public void map(
                ServiceReference<ModelAdapterBuilder> serviceReference, Emitter<String> emitter) {

              Registry registry = RegistryUtil.getRegistry();

              ModelAdapterBuilder modelAdapterBuilder = registry.getService(serviceReference);

              Type genericInterface =
                  ReflectionUtil.getGenericInterface(
                      modelAdapterBuilder, ModelAdapterBuilder.class);

              if ((genericInterface == null) || !(genericInterface instanceof ParameterizedType)) {

                return;
              }

              ParameterizedType parameterizedType = (ParameterizedType) genericInterface;

              Type[] typeArguments = parameterizedType.getActualTypeArguments();

              if (ArrayUtil.isEmpty(typeArguments) || (typeArguments.length != 2)) {

                return;
              }

              try {
                Class adapteeModelClass = (Class) typeArguments[0];
                Class adaptedModelClass = (Class) typeArguments[1];

                emitter.emit(getKey(adapteeModelClass, adaptedModelClass));
              } catch (ClassCastException cce) {
                return;
              }
            }
    @Override
    public ResourceBundle addingService(ServiceReference<ResourceBundle> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      ResourceBundle resourceBundle = registry.getService(serviceReference);

      String languageId =
          GetterUtil.getString(serviceReference.getProperty("language.id"), StringPool.BLANK);
      Map<String, String> languageMap = new HashMap<>();
      Locale locale = null;

      if (Validator.isNotNull(languageId)) {
        locale = LocaleUtil.fromLanguageId(languageId, true);
      } else {
        locale = new Locale(StringPool.BLANK);
      }

      Enumeration<String> keys = resourceBundle.getKeys();

      while (keys.hasMoreElements()) {
        String key = keys.nextElement();

        String value = ResourceBundleUtil.getString(resourceBundle, key);

        languageMap.put(key, value);
      }

      Map<String, String> oldLanguageMap = _putLanguageMap(locale, languageMap);

      _oldLanguageMaps.put(serviceReference, oldLanguageMap);

      return resourceBundle;
    }
            @Override
            public void map(ServiceReference<Editor> serviceReference, Emitter<String> emitter) {

              Registry registry = RegistryUtil.getRegistry();

              Editor editor = registry.getService(serviceReference);

              emitter.emit(editor.getName());
            }
    @Override
    public XStreamAlias addingService(ServiceReference<XStreamAlias> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      XStreamAlias xStreamAlias = registry.getService(serviceReference);

      _xstreamAliases.put(xStreamAlias.getClazz(), xStreamAlias.getName());

      return xStreamAlias;
    }
    @Override
    public Object addingService(ServiceReference<Object> serviceReference) {
      List<String> authTokenIgnoreActions =
          StringPlus.asList(serviceReference.getProperty(PropsKeys.AUTH_TOKEN_IGNORE_ACTIONS));

      _portletCSRFWhitelistActions.addAll(authTokenIgnoreActions);

      Registry registry = RegistryUtil.getRegistry();

      return registry.getService(serviceReference);
    }
    @Override
    public ResourceBundle addingService(ServiceReference<ResourceBundle> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      ResourceBundle resourceBundle = registry.getService(serviceReference);

      String languageId = (String) serviceReference.getProperty("language.id");

      _resourceBundles.put(languageId, resourceBundle);

      return resourceBundle;
    }
            @Override
            public void map(
                ServiceReference<DLProcessor> serviceReference, Emitter<String> emitter) {

              Registry registry = RegistryUtil.getRegistry();

              DLProcessor dlProcessor = registry.getService(serviceReference);

              try {
                emitter.emit(dlProcessor.getType());
              } finally {
                registry.ungetService(serviceReference);
              }
            }
    @Override
    public Object addingService(ServiceReference<Object> serviceReference) {
      synchronized (_serviceDependencies) {
        Registry registry = RegistryUtil.getRegistry();

        Object service = registry.getService(serviceReference);

        _serviceDependency.fulfilled(serviceReference);

        verifyDependencies();

        return service;
      }
    }
Esempio n. 12
0
    @Override
    public WebDAVStorage addingService(ServiceReference<WebDAVStorage> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      WebDAVStorage webDAVStorage = registry.getService(serviceReference);

      if (webDAVStorage.getToken() == null) {
        return null;
      }

      _storageMap.put(webDAVStorage.getToken(), webDAVStorage);

      return webDAVStorage;
    }
    @Override
    public Indexer<?> addingService(ServiceReference<Indexer<?>> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      Indexer<?> indexer = registry.getService(serviceReference);

      Class<?> clazz = indexer.getClass();

      _indexers.put(clazz.getName(), indexer);

      _indexers.put(indexer.getClassName(), indexer);

      return indexer;
    }
    @Override
    public T addingService(ServiceReference<T> serviceReference) {
      Registry registry = RegistryUtil.getRegistry();

      T displayContextFactory = registry.getService(serviceReference);

      DisplayContextFactoryReference<T> displayContextFactoryReference =
          new DisplayContextFactoryReference<>(displayContextFactory, serviceReference);

      _displayContextFactoryReferences.add(displayContextFactoryReference);

      _displayContextFactoryReferencesMap.put(
          displayContextFactory, displayContextFactoryReference);

      return displayContextFactory;
    }
    @Override
    public synchronized void removedService(
        ServiceReference<InvokerPortletFactory> serviceReference,
        InvokerPortletFactory invokerPortletFactory) {

      Registry registry = RegistryUtil.getRegistry();

      registry.ungetService(serviceReference);

      serviceReference = registry.getServiceReference(InvokerPortletFactory.class);

      if (serviceReference != null) {
        _invokerPortletFactory = registry.getService(serviceReference);

        _serviceRanking = GetterUtil.getLong(serviceReference.getProperty("service.ranking"));
      }
    }
    @Override
    public synchronized InvokerPortletFactory addingService(
        ServiceReference<InvokerPortletFactory> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      InvokerPortletFactory invokerPortletFactory = registry.getService(serviceReference);

      long serviceRanking = GetterUtil.getLong(serviceReference.getProperty("service.ranking"));

      if ((_invokerPortletFactory == null) || (serviceRanking > _serviceRanking)) {

        _invokerPortletFactory = invokerPortletFactory;
        _serviceRanking = serviceRanking;
      }

      return invokerPortletFactory;
    }
    @Override
    public AtomCollectionAdapter<?> addingService(
        ServiceReference<AtomCollectionAdapter<?>> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      AtomCollectionAdapter<?> atomCollectionAdapter = registry.getService(serviceReference);

      if (_atomCollectionAdapters.containsKey(atomCollectionAdapter.getCollectionName())) {

        if (_log.isWarnEnabled()) {
          _log.warn("Duplicate collection name " + atomCollectionAdapter.getCollectionName());
        }

        return null;
      }

      _atomCollectionAdapters.put(atomCollectionAdapter.getCollectionName(), atomCollectionAdapter);

      return atomCollectionAdapter;
    }
    @Override
    public CustomJspBag addingService(ServiceReference<CustomJspBag> serviceReference) {

      Registry registry = RegistryUtil.getRegistry();

      CustomJspBag customJspBag = registry.getService(serviceReference);

      List<String> customJsps = customJspBag.getCustomJsps();

      if (customJsps.isEmpty()) {
        getCustomJsps(
            customJspBag.getURLContainer(),
            customJspBag.getCustomJspDir(),
            customJspBag.getCustomJsps());

        customJsps = customJspBag.getCustomJsps();

        if (customJsps.isEmpty()) {
          return null;
        }
      }

      if (_log.isDebugEnabled()) {
        StringBundler sb = new StringBundler(customJsps.size() * 2);

        sb.append("Custom JSP files:\n");

        for (int i = 0; i < customJsps.size(); i++) {
          String customJsp = customJsps.get(0);

          sb.append(customJsp);

          if ((i + 1) < customJsps.size()) {
            sb.append(StringPool.NEW_LINE);
          }
        }

        Log log = SanitizerLogWrapper.allowCRLF(_log);

        log.debug(sb.toString());
      }

      String contextId = GetterUtil.getString(serviceReference.getProperty("context.id"));

      if (customJspBag.isCustomJspGlobal() && !_customJspBagsMap.isEmpty()) {

        try {
          verifyCustomJsps(contextId, customJspBag);
        } catch (DuplicateCustomJspException e) {
          return null;
        }
      }

      _customJspBagsMap.put(serviceReference, customJspBag);

      String contextName = GetterUtil.getString(serviceReference.getProperty("context.name"));

      try {
        initCustomJspBag(contextId, contextName, customJspBag);
      } catch (Exception e) {
        return null;
      }

      return customJspBag;
    }