當前位置: 首頁>>代碼示例>>Java>>正文


Java Bundle.findEntries方法代碼示例

本文整理匯總了Java中org.osgi.framework.Bundle.findEntries方法的典型用法代碼示例。如果您正苦於以下問題:Java Bundle.findEntries方法的具體用法?Java Bundle.findEntries怎麽用?Java Bundle.findEntries使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.osgi.framework.Bundle的用法示例。


在下文中一共展示了Bundle.findEntries方法的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getConfigurations

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
public String[] getConfigurations(Bundle bundle) {
	String[] locations = ConfigUtils.getHeaderLocations(bundle.getHeaders());

	// if no location is specified in the header, try the defaults
	if (ObjectUtils.isEmpty(locations)) {
		// check the default locations if the manifest doesn't provide any info
		Enumeration defaultConfig = bundle.findEntries(CONTEXT_DIR, CONTEXT_FILES, false);
		if (defaultConfig != null && defaultConfig.hasMoreElements()) {
			return new String[] { DEFAULT_CONFIG };
		}
		else {
			return new String[0];
		}
	}
	else {
		return locations;
	}
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:19,代碼來源:DefaultConfigurationScanner.java

示例2: isResolved

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
private static boolean isResolved(Bundle b) {
    if (b.getState() == Bundle.INSTALLED) {
        // try to ask for a known resource which is known to resolve 
        // the bundle
        b.findEntries("META-INF", "MANIFEST.MF", false); // NOI18N
    }
    return b.getState() != Bundle.INSTALLED;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:9,代碼來源:Netigso.java

示例3: unpackBundle

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
public static void unpackBundle(Bundle bundle, File targetFolder) {
	// no need to use a recursive method since we get all resources directly
	Enumeration enm = bundle.findEntries(SLASH, null, true);
	while (enm != null && enm.hasMoreElements()) {

		// get only the path
		URL url = (URL) enm.nextElement();
		String entryPath = url.getPath();
		if (entryPath.startsWith(SLASH))
			entryPath = entryPath.substring(1);

		File targetFile = new File(targetFolder, entryPath);
		// folder are a special case, we have to create them rather then copy
		if (entryPath.endsWith("/"))
			targetFile.mkdirs();
		else {
			try {
				File parent = targetFile.getParentFile();
				if (!parent.exists()) {
					parent.mkdirs();
				}
				System.out.println(parent);

				OutputStream targetStream = new FileOutputStream(targetFile);
				System.err.println("Copying " + url + " to " + targetFile);
				FileCopyUtils.copy(url.openStream(), targetStream);
			}
			catch (IOException ex) {
				//
				System.err.println("Cannot copy resource " + entryPath + ex);
				throw (RuntimeException) new IllegalStateException("IO exception while unpacking bundle "
						+ OsgiStringUtils.nullSafeNameAndSymName(bundle)).initCause(ex);
			}
			// no need to close the streams - the utils already handles that
		}
	}
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:38,代碼來源:OSGI723Test.java

示例4: isSpringDMManaged

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
/**
 * Determines if the given bundle, is Spring DM managed or not. This method
 * is used at startup, for waiting on all Spring DM contexts to be properly
 * started and published.
 * 
 * @param bundle bundle to check
 * @return boolean true if spring managed or false.
 */
protected boolean isSpringDMManaged(Bundle bundle) {
	if (!ObjectUtils.isEmpty(ConfigUtils.getHeaderLocations(bundle.getHeaders()))) {
		return true;
       }
       // TODO: do we need to check for blueprint?
	Enumeration<URL> enm = bundle.findEntries("META-INF/spring", "*.xml", false);
	return (enm != null && enm.hasMoreElements());
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:17,代碼來源:AbstractSynchronizedOsgiTests.java

示例5: getTemplateURI

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
/**
 * Finds the template in the plug-in. Returns the template plug-in URI.
 * 
 * @param bundleID
 *            is the plug-in ID
 * @param relativePath
 *            is the relative path of the template in the plug-in
 * @return the template URI
 * @throws IOException
 * @generated
 */
@SuppressWarnings("unchecked")
private URI getTemplateURI(String bundleID, IPath relativePath) throws IOException {
	Bundle bundle = Platform.getBundle(bundleID);
	if (bundle == null) {
		// no need to go any further
		return URI.createPlatformResourceURI(new Path(bundleID).append(relativePath).toString(), false);
	}
	URL url = bundle.getEntry(relativePath.toString());
	if (url == null && relativePath.segmentCount() > 1) {
		Enumeration<URL> entries = bundle.findEntries("/", "*.emtl", true);
		if (entries != null) {
			String[] segmentsRelativePath = relativePath.segments();
			while (url == null && entries.hasMoreElements()) {
				URL entry = entries.nextElement();
				IPath path = new Path(entry.getPath());
				if (path.segmentCount() > relativePath.segmentCount()) {
					path = path.removeFirstSegments(path.segmentCount() - relativePath.segmentCount());
				}
				String[] segmentsPath = path.segments();
				boolean equals = segmentsPath.length == segmentsRelativePath.length;
				for (int i = 0; equals && i < segmentsPath.length; i++) {
					equals = segmentsPath[i].equals(segmentsRelativePath[i]);
				}
				if (equals) {
					url = bundle.getEntry(entry.getPath());
				}
			}
		}
	}
	URI result;
	if (url != null) {
		result = URI.createPlatformPluginURI(new Path(bundleID).append(new Path(url.getPath())).toString(), false);
	} else {
		result = URI.createPlatformResourceURI(new Path(bundleID).append(relativePath).toString(), false);
	}
	return result;
}
 
開發者ID:occiware,項目名稱:OCCI-Studio,代碼行數:49,代碼來源:GenerateAll.java

示例6: findBlueprintPaths

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
@SuppressWarnings({ "rawtypes", "unchecked" })
static List<Object> findBlueprintPaths(final Bundle bundle) {
    Enumeration<?> rntries = bundle.findEntries(BLUEPRINT_FILE_PATH, BLUEPRINT_FLE_PATTERN, false);
    if (rntries == null) {
        return Collections.emptyList();
    } else {
        return Collections.list((Enumeration)rntries);
    }
}
 
開發者ID:hashsdn,項目名稱:hashsdn-controller,代碼行數:10,代碼來源:BlueprintBundleTracker.java

示例7: testActivation

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
public void testActivation() throws Exception {
    ModuleSystem ms = Main.getModuleSystem();
    mgr = ms.getManager();
    mgr.mutexPrivileged().enterWriteAccess();
    Enumeration en;
    int checks = 0;
    
    System.setProperty("activated.checkentries", "/org/test/x.txt");
    try {
        m1 = mgr.create(simpleModule, null, false, false, false);
        mgr.enable(m1);

        Class<?> main = m1.getClassLoader().loadClass("org.activate.Main");
        Object s = main.getField("start").get(null);
        assertNotNull("Bundle started, its context provided", s);

        BundleContext bc = (BundleContext)s;
        StringBuilder sb = new StringBuilder();
        for (Bundle b : bc.getBundles()) {
            URL root = b.getEntry("/");
            if (root == null) {
                sb.append("No root URL for ").append(b.getSymbolicName()).append("\n");
            }
            
            en = b.findEntries("/", null, true);
            if (en == null) {
                sb.append("No entries for ").append(b.getSymbolicName()).append("\n");
                continue;
            }
            while (en.hasMoreElements()) {
                URL u = (URL) en.nextElement();
                final String ef = u.toExternalForm();
                int pref = ef.indexOf("/org/");
                int last = ef.lastIndexOf("/");
                if (pref != -1 && last != -1) {
                    String entry = ef.substring(pref + 1, last + 1);
                    assertTrue("/ is at the end", entry.endsWith("/"));
                    checks++;
                    final URL found = b.getEntry(entry);
                    assertNotNull("Entry found " + entry + " in " + b.getSymbolicName(), found);
                    
                    URL notFound = b.getEntry("non/existent/entry/");
                    assertNull("Entries for non-existing entries are not found", notFound);
                }
            }
        }
        if (sb.length() > 0) {
            fail(sb.toString());
        }
        if (checks == 0) {
            fail("There shall be some checks for entries");
        }
        String text = System.getProperty("activated.entry");
        assertEquals("Ahoj", text);

        String localURL = System.getProperty("activated.entry.local");
        assertNotNull("bundleentry read OK", localURL);
        assertTrue("external file is referred as file:/.... = " + localURL, localURL.startsWith("file:/"));
        assertEquals("Ahoj", readLine(localURL));

        String fileURL = System.getProperty("activated.entry.file");
        assertNotNull("fileURL found", fileURL);
        assertTrue("file:/..... = " + fileURL, fileURL.startsWith("file:/"));
        assertEquals("Ahoj", readLine(fileURL));

        mgr.disable(m1);

        Object e = main.getField("stop").get(null);
        assertNotNull("Bundle stopped, its context provided", e);
    } finally {
        mgr.mutexPrivileged().exitWriteAccess();
    }
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:74,代碼來源:ExternalDirectoryTest.java

示例8: getTemplateURI

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
/**
 * Finds the template in the plug-in. Returns the template plug-in URI.
 * 
 * @param bundleID
 *            is the plug-in ID
 * @param relativePath
 *            is the relative path of the template in the plug-in
 * @return the template URI
 * @throws IOException
 * @generated
 */
@SuppressWarnings ( "unused" )
private URI getTemplateURI ( final String bundleID, final IPath relativePath ) throws IOException
{
    final Bundle bundle = Platform.getBundle ( bundleID );
    if ( bundle == null )
    {
        // no need to go any further 
        return URI.createPlatformResourceURI ( new Path ( bundleID ).append ( relativePath ).toString (), false );
    }
    URL url = bundle.getEntry ( relativePath.toString () );
    if ( url == null && relativePath.segmentCount () > 1 )
    {
        final Enumeration<URL> entries = bundle.findEntries ( "/", "*.emtl", true );
        if ( entries != null )
        {
            final String[] segmentsRelativePath = relativePath.segments ();
            while ( url == null && entries.hasMoreElements () )
            {
                final URL entry = entries.nextElement ();
                IPath path = new Path ( entry.getPath () );
                if ( path.segmentCount () > relativePath.segmentCount () )
                {
                    path = path.removeFirstSegments ( path.segmentCount () - relativePath.segmentCount () );
                }
                final String[] segmentsPath = path.segments ();
                boolean equals = segmentsPath.length == segmentsRelativePath.length;
                for ( int i = 0; equals && i < segmentsPath.length; i++ )
                {
                    equals = segmentsPath[i].equals ( segmentsRelativePath[i] );
                }
                if ( equals )
                {
                    url = bundle.getEntry ( entry.getPath () );
                }
            }
        }
    }
    URI result;
    if ( url != null )
    {
        result = URI.createPlatformPluginURI ( new Path ( bundleID ).append ( new Path ( url.getPath () ) ).toString (), false );
    }
    else
    {
        result = URI.createPlatformResourceURI ( new Path ( bundleID ).append ( relativePath ).toString (), false );
    }
    return result;
}
 
開發者ID:eclipse,項目名稱:neoscada,代碼行數:60,代碼來源:GenerateAll.java

示例9: tstFindEntriesOnMetaInfEntryOnSystemBundle

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
public void tstFindEntriesOnMetaInfEntryOnSystemBundle() throws Exception {
	Bundle sysBundle = bundleContext.getBundle(0);
	Enumeration enm = sysBundle.findEntries("/", "META-INF", false);
	assertNotNull("system bundle doesn't return META-INF", enm);
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:6,代碼來源:BundleClassPathTest.java

示例10: maybeAddNamespaceHandlerFor

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
/**
 * Registers the namespace plugin handler if this bundle defines handler mapping or schema mapping resources.
 * 
 * <p/> This method considers only the bundle space and not the class space.
 * 
 * @param bundle target bundle
 * @param isLazyBundle indicator if the bundle analyzed is lazily activated
 */
public void maybeAddNamespaceHandlerFor(Bundle bundle, boolean isLazyBundle) {
	// Ignore system bundle
	if (OsgiBundleUtils.isSystemBundle(bundle)) {
		return;
	}

	// Ignore non-wired Spring DM bundles
	if ("org.eclipse.gemini.blueprint.core".equals(bundle.getSymbolicName())
			&& !bundle.equals(BundleUtils.getDMCoreBundle(context))) {
		return;
	}

	boolean debug = log.isDebugEnabled();
	boolean trace = log.isTraceEnabled();
	// FIXME: Blueprint uber bundle temporary hack
	// since embedded libraries are not discovered by findEntries and inlining them doesn't work
	// (due to resource classes such as namespace handler definitions)
	// we use getResource

	boolean hasHandlers = false, hasSchemas = false;

	if (trace) {
		log.trace("Inspecting bundle " + bundle + " for Spring namespaces");
	}
	// extender/RFC 124 bundle
	if (context.getBundle().equals(bundle)) {

		try {
			Enumeration<?> handlers = bundle.getResources(META_INF + SPRING_HANDLERS);
			Enumeration<?> schemas = bundle.getResources(META_INF + SPRING_SCHEMAS);

			hasHandlers = handlers != null;
			hasSchemas = schemas != null;

			if (hasHandlers && debug) {
				log.debug("Found namespace handlers: " + Collections.list(schemas));
			}
		} catch (IOException ioe) {
			log.warn("Cannot discover own namespaces", ioe);
		}
	} else {
		hasHandlers = bundle.findEntries(META_INF, SPRING_HANDLERS, false) != null;
		hasSchemas = bundle.findEntries(META_INF, SPRING_SCHEMAS, false) != null;
	}

	// if the bundle defines handlers
	if (hasHandlers) {

		if (trace)
			log.trace("Bundle " + bundle + " provides Spring namespace handlers...");

		if (isLazyBundle) {
			this.namespacePlugins.addPlugin(bundle, isLazyBundle, true);
		} else {
			// check type compatibility between the bundle's and spring-extender's spring version
			if (hasCompatibleNamespaceType(bundle)) {
				this.namespacePlugins.addPlugin(bundle, isLazyBundle, false);
			} else {
				if (debug)
					log.debug("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle)
							+ "] declares namespace handlers but is not compatible with extender [" + extenderInfo
							+ "]; ignoring...");
			}
		}
	} else {
		// bundle declares only schemas, add it though the handlers might not be compatible...
		if (hasSchemas) {
			this.namespacePlugins.addPlugin(bundle, isLazyBundle, false);
			if (trace)
				log.trace("Bundle " + bundle + " provides Spring schemas...");
		}
	}
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:82,代碼來源:NamespaceManager.java

示例11: checkBundleForClass

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
private static Version checkBundleForClass(Bundle bundle, String name, Version iversion) {
	String packageName = name.substring(0, name.lastIndexOf('.'));
	Version hasExport = hasExport(bundle, packageName);

	// log.info("Examining Bundle [" + bundle.getBundleId() + ": " + bname +
	// "]");
	// Check for version matching
	if (hasExport != null && !hasExport.equals(iversion)) {
		log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] exports [" + packageName
				+ "] as version [" + hasExport + "] but version [" + iversion + "] was required");
		return hasExport;
	}
	// Do more detailed checks
	String cname = name.substring(packageName.length() + 1) + ".class";
	Enumeration e = bundle.findEntries("/" + packageName.replace('.', '/'), cname, false);
	if (e == null) {
		if (hasExport != null) {
			URL url = checkBundleJarsForClass(bundle, name);
			if (url != null) {
				log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] contains [" + cname
						+ "] in embedded jar [" + url.toString() + "] but exports the package");
			}
			else {
				log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] does not contain ["
						+ cname + "] but exports the package");
			}
		}

		String root = "/";
		String fileName = packageName;
		if (packageName.lastIndexOf(".") >= 0) {
			root = root + packageName.substring(0, packageName.lastIndexOf(".")).replace('.', '/');
			fileName = packageName.substring(packageName.lastIndexOf(".") + 1).replace('.', '/');
		}
		Enumeration pe = bundle.findEntries(root, fileName, false);
		if (pe != null) {
			if (hasExport != null) {
				log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] contains package ["
						+ packageName + "] and exports it");
			}
			else {
				log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] contains package ["
						+ packageName + "] but does not export it");
			}

		}
	}
	// Found the resource, check that it is exported.
	else {
		if (hasExport != null) {
			log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] contains resource [" + cname
					+ "] and it is correctly exported as version [" + hasExport + "]");
			Class<?> c = null;
			try {
				c = bundle.loadClass(name);
			}
			catch (ClassNotFoundException e1) {
				// Ignored
			}
			log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] loadClass [" + cname
					+ "] returns [" + c + "]");
		}
		else {
			log.trace("Bundle [" + OsgiStringUtils.nullSafeNameAndSymName(bundle) + "] contains resource [" + cname
					+ "] but its package is not exported");
		}
	}
	return hasExport;
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:70,代碼來源:DebugUtils.java

示例12: doRetrieveMatchingBundleEntries

import org.osgi.framework.Bundle; //導入方法依賴的package包/類
/**
 * Searches each level inside the bundle for entries based on the search strategy chosen.
 * 
 * @param bundle the bundle to do the lookup
 * @param fullPattern matching pattern
 * @param dir directory inside the bundle
 * @param result set of results (used to concatenate matching sub dirs)
 * @param searchType the search strategy to use
 * @throws IOException
 */
private void doRetrieveMatchingBundleEntries(Bundle bundle, String fullPattern, String dir, Set<Resource> result,
		int searchType) throws IOException {

	Enumeration<?> candidates;

	switch (searchType) {
	case OsgiResourceUtils.PREFIX_TYPE_NOT_SPECIFIED:
	case OsgiResourceUtils.PREFIX_TYPE_BUNDLE_SPACE:
		// returns an enumeration of URLs
		candidates = bundle.findEntries(dir, null, false);
		break;
	case OsgiResourceUtils.PREFIX_TYPE_BUNDLE_JAR:
		// returns an enumeration of Strings
		candidates = bundle.getEntryPaths(dir);
		break;
	case OsgiResourceUtils.PREFIX_TYPE_CLASS_SPACE:
		// returns an enumeration of URLs
		throw new IllegalArgumentException("class space does not support pattern matching");
	default:
		throw new IllegalArgumentException("unknown searchType " + searchType);
	}

	// entries are relative to the root path - miss the leading /
	if (candidates != null) {
		boolean dirDepthNotFixed = (fullPattern.indexOf(FOLDER_WILDCARD) != -1);
		while (candidates.hasMoreElements()) {
			Object path = candidates.nextElement();
			String currPath;

			if (path instanceof String)
				currPath = handleString((String) path);
			else
				currPath = handleURL((URL) path);

			if (!currPath.startsWith(dir)) {
				// Returned resource path does not start with relative
				// directory:
				// assuming absolute path returned -> strip absolute path.
				int dirIndex = currPath.indexOf(dir);
				if (dirIndex != -1) {
					currPath = currPath.substring(dirIndex);
				}
			}

			if (currPath.endsWith(FOLDER_SEPARATOR)
					&& (dirDepthNotFixed || StringUtils.countOccurrencesOf(currPath, FOLDER_SEPARATOR) < StringUtils
							.countOccurrencesOf(fullPattern, FOLDER_SEPARATOR))) {
				// Search subdirectories recursively: we manually get the
				// folders on only one level

				doRetrieveMatchingBundleEntries(bundle, fullPattern, currPath, result, searchType);
			}
			if (getPathMatcher().match(fullPattern, currPath)) {
				if (path instanceof URL)
					result.add(new UrlContextResource((URL) path, currPath));
				else
					result.add(new OsgiBundleResource(bundle, currPath));

			}
		}
	}
}
 
開發者ID:eclipse,項目名稱:gemini.blueprint,代碼行數:73,代碼來源:OsgiBundleResourcePatternResolver.java


注:本文中的org.osgi.framework.Bundle.findEntries方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。