4 import java.io.IOException;
5 import java.lang.reflect.Constructor;
7 import java.net.URLDecoder;
8 import java.nio.charset.Charset;
9 import java.nio.file.*;
10 import java.util.ArrayList;
11 import java.util.Enumeration;
12 import java.util.jar.JarEntry;
13 import java.util.jar.JarFile;
15 import javax.xml.xpath.XPathExpressionException;
17 import okw.exceptions.OKWFrameObjectParentNotFoundException;
18 import okw.gui.AnyChildwindow;
19 import okw.gui.OKWLocator;
20 import okw.log.Logger_Sngltn;
64 return findClass( fpsClassName, OKW_GuiAdapteNameSpace );
93 public static String
findClass( String fpsClassName, String fpsNameSpace )
95 String returnGUIAdapter =
"";
99 ArrayList<String> allAdapter = getClasses( fpsNameSpace );
101 for ( String Adapter : allAdapter )
103 if ( Adapter.matches(
".*" + fpsClassName ) )
105 returnGUIAdapter = Adapter;
110 catch (XPathExpressionException | IOException e)
120 return returnGUIAdapter;
124 public static ArrayList<String> getClasses( String fpsPackage )
throws IOException, XPathExpressionException
126 ArrayList<String> lvAsReturn =
new ArrayList<String>();
130 ArrayList<String> lvClassPathes =
getClassPaths( fpsPackage );
134 for ( String lvClassPath : lvClassPathes )
137 lvClassPath = URLDecoder.decode( lvClassPath, Charset.defaultCharset().name());
139 if ( lvClassPath.startsWith(
"file:" ) )
144 lvClassPath = okw.OKW_Helper.getRightFromDelimiterNumber( lvClassPath,
"file:", 1 );
148 lvClassPath = okw.OKW_Helper.getLeftFromDelimiterNumber( lvClassPath,
"!", 1 );
152 File file =
new File( lvClassPath );
157 if ( lvClassPath.endsWith(
"jar" ) )
162 else if ( Files.isDirectory( Paths.get( file.toURI() ), LinkOption.NOFOLLOW_LINKS ) )
183 static public ArrayList<String>
getClassPaths( String packageName )
throws IOException
185 ArrayList<String> ReturnList =
new ArrayList<String>();
187 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
189 String path = packageName.replace(
'.',
'/' );
191 Enumeration<URL> resources = classLoader.getResources( path );
193 while ( resources.hasMoreElements() )
195 URL resource = resources.nextElement();
197 String replacedURL = resource.getPath();
202 ReturnList.add( replacedURL );
221 ArrayList<String> classes =
new ArrayList<String>();
223 File directory =
new File( fpsdirectory );
225 if ( directory.exists() )
228 File[] files = directory.listFiles();
230 for ( File file : files )
232 if ( file.isDirectory() )
237 else if ( file.getName().endsWith(
".class" ) )
240 classes.add( packageName +
'.' + file.getName().substring( 0, file.getName().length() - 6 ) );
258 private static ArrayList<String>
getClassesFromJar( String jarPath, String packageName )
throws IOException
260 JarFile jarFile =
null;
261 ArrayList<String> lvAL_Return =
new ArrayList<String>();
265 jarFile =
new JarFile( jarPath );
266 Enumeration<JarEntry> en = jarFile.entries();
267 while ( en.hasMoreElements() )
269 JarEntry entry = en.nextElement();
270 String entryName = entry.getName();
271 packageName = packageName.replace(
".",
"/" );
273 if ( entryName !=
null && entryName.endsWith(
".class" ) && entryName.startsWith( packageName ) )
277 Class<?> entryClass = Class.forName( entryName.substring( 0, entryName.length() - 6 ).replace(
"/",
"." ) );
279 if ( entryClass !=
null )
281 lvAL_Return.add( entryClass.getName() );
293 if ( jarFile !=
null )
302 public static Class<?> loadClass( String fpsClass )
304 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
305 Class<?> aClass =
null;
309 aClass = classLoader.loadClass( fpsClass );
311 catch (ClassNotFoundException e)
346 public static Object
createInstanceByType( Class<?> fpParentType )
throws InstantiationException, XPathExpressionException
348 Object lvo_Obj =
null;
351 Log.
LogFunctionStartDebug(
"FrameObjectDictionary.CreateInstanceByObjectName",
"fpParentClass", fpParentType.getName() );
357 lvo_Obj = fpParentType.newInstance();
362 catch (IllegalAccessException e)
411 public static ArrayList<Class<?>>
getListOfClasses( String fpsNamespace )
throws ClassNotFoundException, IOException, XPathExpressionException
414 ArrayList<Class<?>> lvALReturn =
new ArrayList<Class<?>>();
416 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
419 ArrayList<String> lvALClassNames =
OKW_GetJavaClass.getClasses( fpsNamespace );
423 for ( String lvsClass : lvALClassNames )
425 Class<?> aClass = classLoader.loadClass( lvsClass );
426 lvALReturn.add( aClass );
429 catch (ClassNotFoundException e)