Package org.pentaho.platform.api.engine

Examples of org.pentaho.platform.api.engine.IPluginManager


  @Path( "/{pluginId}/setting/{settingName}" )
  @Produces( { APPLICATION_JSON } )
  @Facet ( name = "Unsupported" )
  public String getPluginSetting( @PathParam( "pluginId" ) String pluginId,
      @PathParam( "settingName" ) String settingName ) {
    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, PentahoSessionHolder.getSession() ); //$NON-NLS-1$
    return (String) pluginManager.getPluginSetting( pluginId, settingName, null );
  }
View Full Code Here


    if ( !NEW_TOOLBAR_BUTTON_SETTING.equals( settingName ) ) {
      if ( !canAdminister() ) {
        return Response.status( UNAUTHORIZED ).build();
      }
    }
    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, PentahoSessionHolder.getSession() ); //$NON-NLS-1$
    ArrayList<Setting> settings = new ArrayList<Setting>();
    for ( String id : pluginManager.getRegisteredPlugins() ) {
      Setting s = new Setting( id, (String) pluginManager.getPluginSetting( id, settingName, null ) );
      if ( !StringUtils.isEmpty( s.getValue() ) ) {
        settings.add( s );
      }
    }
    return Response.ok( new JaxbList<Setting>( settings ), MediaType.APPLICATION_JSON ).build();
View Full Code Here

   *           Invalid plugin Id
   * @throws java.util.MissingResourceException
   *           Invalid resource bundle name
   */
  protected ResourceBundle getBundle( String pluginId, String name ) {
    IPluginManager pm = PentahoSystem.get( IPluginManager.class );
    ClassLoader pluginClassLoader = pm.getClassLoader( pluginId );

    if ( pluginClassLoader == null ) {
      throw new IllegalArgumentException( Messages.getInstance().getErrorString(
          "LocalizationServlet.ERROR_0001_INVALID_PLUGIN_ID", pluginId ) ); //$NON-NLS-1$
    }
View Full Code Here

  }

  private void printResourcesForContext( String contextName, OutputStream out, HttpServletRequest request,
      boolean printCssOnly ) throws IOException {

    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class );
    Encoder encoder = ESAPI.encoder();

    HttpServletRequest req = ( (HttpServletRequest) request );
    String reqStr = "";
    Map paramMap = req.getParameterMap();

    // Fix for BISERVER-7613, BISERVER-7614, BISERVER-7615
    // Make sure that parameters in the URL are encoded for Javascript safety since they'll be
    // added to Javascript fragments that get executed.
    if ( paramMap.size() > 0 ) {
      StringBuilder sb = new StringBuilder();
      Map.Entry<String, String[]> me = null;
      char sep = '?'; // first separator is '?'
      Iterator<Map.Entry<String, String[]>> it = paramMap.entrySet().iterator();
      int i;
      while ( it.hasNext() ) {
        me = it.next();
        for ( i = 0; i < me.getValue().length; i++ ) {
          sb.append( sep ).append( encoder.encodeForJavaScript( me.getKey().toString() ) ).append( "=" ).append(
            encoder.encodeForJavaScript( me.getValue()[ i ] ) );
        }
        if ( sep == '?' ) {
          sep = '&'; // change the separator
        }
      }
      reqStr = sb.toString(); // get the request string.
    }

    List<String> externalResources = pluginManager.getExternalResourcesForContext( contextName );
    out.write( ( "<!-- Injecting web resources defined in by plugins as external-resources for: "
      + encoder.encodeForHTML(
          contextName ) + "-->\n" ).getBytes() ); //$NON-NLS-1$ //$NON-NLS-2$
    if ( externalResources != null ) {
View Full Code Here

    }

    Element node;
    String id;
    Object plugin;
    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class );

    for ( int i = 0; i < nodes.size(); i++ ) {
      node = nodes.get( i );
      id = node.attribute( "id" ).getText(); //$NON-NLS-1$
      pluginMap.put( id, node.attribute( "class" ).getText() ); //$NON-NLS-1$

      // Now let's see if there is a plugin overriding this engine...
      if ( ( null != pluginManager ) && ( pluginManager.isBeanRegistered( id ) ) ) {
        try {
          plugin = pluginManager.getBean( id );
          pluginMap.put( id, plugin );
        } catch ( PluginBeanException e ) {
          Logger.warn( ChartBeansSystemListener.class.getName(), Messages.getInstance().getString(
              "ChartBeansSystemListener.ERROR_0002_PLUGINMANAGER_BEAN_MISSING", id ), //$NON-NLS-1$
              e );
View Full Code Here

public class PentahoSystemReadyListener implements ServletContextListener {

  @Override
  public void contextInitialized( ServletContextEvent servletContextEvent ) {
    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class );

    IPentahoSession session = PentahoSessionHolder.getSession();
    IPluginProvider pluginProvider = PentahoSystem.get( IPluginProvider.class, "IPluginProvider", session );
    try {
      List<IPlatformPlugin> providedPlugins = pluginProvider.getPlugins( session );
      for ( IPlatformPlugin plugin : providedPlugins ) {
        try {
          if ( !StringUtils.isEmpty( plugin.getLifecycleListenerClassname() ) ) {
            ClassLoader loader = pluginManager.getClassLoader( plugin.getId() );
            Object listener = loader.loadClass( plugin.getLifecycleListenerClassname() ).newInstance();
            if ( IPlatformReadyListener.class.isAssignableFrom( listener.getClass() ) ) {
              ( (IPlatformReadyListener) listener ).ready();
            }
          }
View Full Code Here

  @Produces ( { APPLICATION_JSON, APPLICATION_XML } )
  public List<Setting> getAdminContent() {

    ArrayList<Setting> settings = new ArrayList<Setting>();
    try {
      IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, UserConsoleService.getPentahoSession() );
      List<String> pluginIds = pluginManager.getRegisteredPlugins();
    nextPlugin:
      for ( String pluginId : pluginIds ) {
        String adminContentInfo = (String) pluginManager.getPluginSetting( pluginId, "admin-content-info", null );
        String exceptionMessage = (String) pluginManager.getPluginSetting( pluginId, "exception-message", null );
        if ( adminContentInfo != null ) {
          StringTokenizer nameValuePairs = new StringTokenizer( adminContentInfo, ";" );
          while ( nameValuePairs.hasMoreTokens() ) {
            String currentToken = nameValuePairs.nextToken().trim();
            if ( currentToken.startsWith( "conditional-logic-validator=" ) ) {
              String validatorName = currentToken.substring( "conditional-logic-validator=".length() );
              Class<?> validatorClass = pluginManager.getClassLoader( pluginId ).loadClass( validatorName );
              IAdminContentConditionalLogic validator = (IAdminContentConditionalLogic) validatorClass.newInstance();
              int status = validator.validate();
              if ( status == IAdminContentConditionalLogic.DISPLAY_ADMIN_CONTENT ) {
                settings.add( new Setting( "admin-content-info", adminContentInfo ) );
              }
View Full Code Here

    if ( ( overrideNewReportCommmand != null ) && ( overrideNewReportTitle != null ) ) {
      settings.add( new Setting( "new-report-command-url", overrideNewReportCommmand ) ); //$NON-NLS-1$
      settings.add( new Setting( "new-report-command-title", overrideNewReportTitle ) ); //$NON-NLS-1$
    }

    IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, UserConsoleService.getPentahoSession() ); //$NON-NLS-1$
    if ( pluginManager != null ) {
      // load content types from IPluginSettings
      int i = 0;
      for ( String contentType : pluginManager.getContentTypes() ) {
        IContentInfo info = pluginManager.getContentTypeInfo( contentType );
        if ( info != null ) {
          settings.add( new Setting( "plugin-content-type-" + i, "." + contentType ) ); //$NON-NLS-1$ //$NON-NLS-2$
          settings.add( new Setting( "plugin-content-type-icon-" + i, info.getIconUrl() ) ); //$NON-NLS-1$
          int j = 0;
          for ( IPluginOperation operation : info.getOperations() ) {
View Full Code Here

      if ( PentahoSystem.debug ) {
        debug( "GenericServlet contentGeneratorId=" + contentGeneratorId ); //$NON-NLS-1$
        debug( "GenericServlet urlPath=" + urlPath ); //$NON-NLS-1$
      }
      IPentahoSession session = getPentahoSession( request );
      IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, session );
      if ( pluginManager == null ) {
        OutputStream out = response.getOutputStream();
        String message =
          Messages.getInstance().getErrorString(
            "GenericServlet.ERROR_0001_BAD_OBJECT", IPluginManager.class.getSimpleName() ); //$NON-NLS-1$
        error( message );
        out.write( message.getBytes() );
        return;
      }

      // TODO make doing the HTTP headers configurable per content generator
      SimpleParameterProvider headerParams = new SimpleParameterProvider();
      Enumeration names = request.getHeaderNames();
      while ( names.hasMoreElements() ) {
        String name = (String) names.nextElement();
        String value = request.getHeader( name );
        headerParams.setParameter( name, value );
      }

      String pluginId = pluginManager.getServicePlugin( pathInfo );

      if ( pluginId != null && pluginManager.isStaticResource( pathInfo ) ) {
        boolean cacheOn = "true".equals( pluginManager
          .getPluginSetting( pluginId, "settings/cache", "false" ) ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
        String maxAge = (String) pluginManager.getPluginSetting( pluginId, "settings/max-age", null ); //$NON-NLS-1$
        allowBrowserCache( maxAge, pathParams );

        String mimeType = MimeHelper.getMimeTypeFromFileName( pathInfo );
        if ( mimeType != null ) {
          response.setContentType( mimeType );
        }
        OutputStream out = response.getOutputStream();

        // do we have this resource cached?
        ByteArrayOutputStream byteStream = null;

        if ( cacheOn ) {
          byteStream = (ByteArrayOutputStream) cache.getFromRegionCache( CACHE_FILE, pathInfo );
        }

        if ( byteStream != null ) {
          IOUtils.write( byteStream.toByteArray(), out );
          return;
        }
        InputStream resourceStream = pluginManager.getStaticResource( pathInfo );
        if ( resourceStream != null ) {
          try {
            byteStream = new ByteArrayOutputStream();
            IOUtils.copy( resourceStream, byteStream );

            // if cache is enabled, drop file in cache
            if ( cacheOn ) {
              cache.putInRegionCache( CACHE_FILE, pathInfo, byteStream );
            }

            // write it out
            IOUtils.write( byteStream.toByteArray(), out );
            return;
          } finally {
            IOUtils.closeQuietly( resourceStream );
          }
        }
        logger.error( Messages.getInstance().getErrorString(
          "GenericServlet.ERROR_0004_RESOURCE_NOT_FOUND", pluginId, pathInfo ) ); //$NON-NLS-1$
        response.sendError( 404 );
        return;
      }

      // content generators defined in plugin.xml are registered with 2 aliases, one is the id, the other is type
      // so, we can still retrieve a content generator by id, even though this is not the correct way to find
      // it. the correct way is to look up a content generator by pluginManager.getContentGenerator(type,
      // perspectiveName)
      IContentGenerator contentGenerator = (IContentGenerator) pluginManager.getBean( contentGeneratorId );
      if ( contentGenerator == null ) {
        OutputStream out = response.getOutputStream();
        String message =
          Messages.getInstance().getErrorString(
            "GenericServlet.ERROR_0002_BAD_GENERATOR",
            ESAPI.encoder().encodeForHTML( contentGeneratorId ) ); //$NON-NLS-1$
        error( message );
        out.write( message.getBytes() );
        return;
      }

      // set the classloader of the current thread to the class loader of
      // the plugin so that it can load its libraries
      // Note: we cannot ask the contentGenerator class for it's classloader, since the cg may
      // actually be a proxy object loaded by main the WebAppClassloader
      Thread.currentThread().setContextClassLoader( pluginManager.getClassLoader( pluginId ) );

      // String proxyClass = PentahoSystem.getSystemSetting( module+"/plugin.xml" ,
      // "plugin/content-generators/"+contentGeneratorId,
      // "content generator not found");
      IParameterProvider requestParameters = new HttpRequestParameterProvider( request );
View Full Code Here

@Path("/saiku/api/{username}/tags")
public class PentahoTagRepositoryResource extends BasicTagRepositoryResource {
 
  @Override
  public void setPath(String path) throws Exception {
    final IPluginManager pluginManager = (IPluginManager) PentahoSystem.get(IPluginManager.class, PentahoSessionHolder.getSession());
    final PluginClassLoader pluginClassloader = (PluginClassLoader)pluginManager.getClassLoader(PluginConfig.PLUGIN_NAME);
    File pluginDir = pluginClassloader.getPluginDir();
    String absolute = "file:" +pluginDir.getAbsolutePath();
    if (!absolute.endsWith("" + File.separatorChar)) {
       absolute += File.separatorChar;
    }
View Full Code Here

TOP

Related Classes of org.pentaho.platform.api.engine.IPluginManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.