core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SDKCacheUtils.java
author timkelly
Tue, 17 Aug 2010 15:50:47 -0700
branchC3_BUILDER_WORK
changeset 1847 5a696c4ef747
parent 1808 88695467fd04
child 1871 4d38e1ac1cff
permissions -rw-r--r--
more Linux related fixes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1621
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     1
/*******************************************************************************
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia and others.
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     3
 * All rights reserved. This program and the accompanying materials
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     4
 * are made available under the terms of the Eclipse Public License v1.0
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     5
 * which accompanies this distribution, and is available at
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     6
 * http://www.eclipse.org/legal/epl-v10.html
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     7
 *
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     8
 * Contributors:
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
     9
 * Nokia - Initial API and implementation
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    10
 *******************************************************************************/
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    11
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    12
package com.nokia.carbide.cpp.internal.api.sdk;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    13
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    14
import java.io.FileInputStream;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    15
import java.io.IOException;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    16
import java.io.ObjectInputStream;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    17
import java.io.ObjectStreamClass;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    18
1847
5a696c4ef747 more Linux related fixes
timkelly
parents: 1808
diff changeset
    19
import javax.swing.filechooser.FileSystemView;
5a696c4ef747 more Linux related fixes
timkelly
parents: 1808
diff changeset
    20
1621
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    21
import org.eclipse.core.runtime.IPath;
1808
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    22
import org.eclipse.core.runtime.Path;
1621
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    23
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    24
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    25
import com.nokia.cpp.internal.api.utils.core.CacheUtils;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    26
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    27
public class SDKCacheUtils extends CacheUtils {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    28
1808
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    29
	private static final String CACHE_FOLDER_NAME = "CarbideSDKCache"; //$NON-NLS-1$
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    30
	private static SDKCacheUtils cache;
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    31
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    32
	public static SDKCacheUtils getCache() {
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    33
		if (cache == null)
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    34
		{
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    35
			IPath path = new Path(System.getProperty("user.home"));
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    36
			cache = new SDKCacheUtils(path.append(CACHE_FOLDER_NAME));
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    37
		}
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    38
		return cache;
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    39
	}
88695467fd04 Removed SDKCacheUtils type from public API.
stechong
parents: 1621
diff changeset
    40
1621
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    41
	public SDKCacheUtils(IPath defaultLocation) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    42
		super(defaultLocation);
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    43
	}
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    44
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    45
	protected CacheEntry loadCachedData(IPath location, String cacheIdentifier) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    46
		IPath flushPath = location.append(Integer.toString(cacheIdentifier.hashCode())).addFileExtension("txt");
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    47
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    48
		if (flushPath.toFile().exists()) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    49
			try {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    50
				final ClassLoader classLoader = SDKCorePlugin.getDefault().getClass().getClassLoader();
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    51
				FileInputStream fis = new FileInputStream(flushPath.toFile());
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    52
				ObjectInputStream ois = new ObjectInputStream(fis) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    53
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    54
					@Override
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    55
					protected Class<?> resolveClass(ObjectStreamClass desc)
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    56
					throws IOException, ClassNotFoundException {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    57
						String name = desc.getName();
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    58
						try {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    59
							return classLoader.loadClass(name);
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    60
						} catch (ClassNotFoundException e) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    61
							return super.resolveClass(desc);
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    62
						}
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    63
					}};
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    64
					return new CacheEntry(ois);
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    65
			} catch (Exception e) {
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    66
				e.printStackTrace();
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    67
			}
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    68
		}
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    69
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    70
		return null;
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    71
	}
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    72
393b985a50f3 Raptor scanner discovery on top of new Raptor Query API.
stechong
parents:
diff changeset
    73
}