<s> package org . eclipse . jdt . internal . core ; import org . eclipse . core . runtime . CoreException ; import org . eclipse . core . runtime . IPath ; import org . eclipse . jdt . core . ClasspathContainerInitializer ; import org . eclipse . jdt . core . IClasspathContainer ; import org . eclipse . jdt . core . IJavaProject ; import org . eclipse . jdt . core . JavaCore ; import org . eclipse . jdt . internal . core . util . Util ; public class UserLibraryClasspathContainerInitializer extends ClasspathContainerInitializer { public boolean canUpdateClasspathContainer ( IPath containerPath , IJavaProject project ) { return isUserLibraryContainer ( containerPath ) ; } public Object getComparisonID ( IPath containerPath , IJavaProject project ) { return containerPath ; } public String getDescription ( IPath containerPath , IJavaProject project ) { if ( isUserLibraryContainer ( containerPath ) ) { return containerPath . segment ( 1 ) ; } return super . getDescription ( containerPath , project ) ; } public void initialize ( IPath containerPath , IJavaProject project ) throws CoreException { if ( isUserLibraryContainer ( containerPath ) ) { String userLibName = containerPath . segment ( 1 ) ; UserLibrary userLibrary = JavaModelManager . getUserLibraryManager ( ) . getUserLibrary ( userLibName ) ; if ( userLibrary != null ) { UserLibraryClasspathContainer container = new UserLibraryClasspathContainer ( userLibName ) ; JavaCore . setClasspathContainer ( containerPath , new IJavaProject [ ] { project } , new IClasspathContainer [ ] { container } , null ) ; } else if ( JavaModelManager . CP_RESOLVE_VERBOSE || JavaModelManager . CP_RESOLVE_VERBOSE_FAILURE ) { verbose_no_user_library_found ( project , userLibName ) ; } } else if ( JavaModelManager . CP_RESOLVE_VERBOSE || JavaModelManager . CP_RESOLVE_VERBOSE_FAILURE ) { verbose_not_a_user_library ( project , containerPath ) ; } } private boolean isUserLibraryContainer ( IPath path ) { return path != null && path . segmentCount ( ) == 2 && JavaCore . USER_LIBRARY_CONTAINER_ID . equals ( path . segment ( 0 ) ) ; } public void requestClasspathContainerUpdate ( IPath containerPath , IJavaProject project , IClasspathContainer containerSuggestion ) throws CoreException { if ( isUserLibraryContainer ( containerPath ) ) { String name = containerPath . segment ( 1 ) ; if ( containerSuggestion != null ) { JavaModelManager . getUserLibraryManager ( ) . setUserLibrary ( name , containerSuggestion . getClasspathEntries ( ) , containerSuggestion . getKind ( ) == IClasspathContainer . K_SYSTEM ) ; } else { JavaModelManager . getUserLibraryManager ( ) . removeUserLibrary ( name ) ; } } } private void verbose_no_user_library_found ( IJavaProject project , String userLibraryName ) { Util . verbose ( "" + "tproject: " + project . getElementName ( ) + '\n' + "" + userLibraryName ) ; } private void verbose_not_a_user_library ( IJavaProject project , IPath containerPath ) { Util . verbose ( "" + "tproject: " + project . getElementName ( ) + '\n' + "" + containerPath ) ; } } </s>