litesoft
@ 939
litesoft / trunk / Java / core / Anywhere / src / org / litesoft / uispecification / UriFragmentIdParams.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.uispecification; import org.litesoft.commonfoundation.typeutils.*; import java.util.*; import org.litesoft.encryption.symmetric.*; import org.litesoft.logger.*; /** * Parameter object for initializing screens. We will have many screens, so it * is easier to add new parameters to subclasses than to modify every factory. */ public abstract class UriFragmentIdParams { public interface ScreenParamsFactory { UriFragmentIdParams create( ViewDef pTarget ); } public static final Logger LOGGER = LoggerFactory.getLogger( UriFragmentIdParams.class ); public static String toParamsString( UriFragmentIdParams pParams ) { return (pParams != null) ? pParams.toParamsString() : null; } public static UriFragmentIdParams fromParamsString( String pFromFragmentIdParams ) { if ( null == (pFromFragmentIdParams = Strings.noEmpty( pFromFragmentIdParams )) ) { return null; } String zClearText; try { zClearText = ENCRYPTOR.decrypt( pFromFragmentIdParams ); } catch ( SymmetricEncryptor.DecryptFailureException e ) { LOGGER.warn().log( e, "From: '", pFromFragmentIdParams, "'" ); return null; } int zAt = zClearText.lastIndexOf( ':' ); if ( zAt == -1 ) { LOGGER.warn().log( "No RegistrationID in: '", zClearText, "'" ); return null; } String zRegistrationID = zClearText.substring( zAt + 1 ); Factory zFactory = FACTORIES.get( zRegistrationID ); if ( zFactory == null ) { LOGGER.warn().log( "No Factory for RegistrationID (", zRegistrationID, ") in: '", zClearText, "'" ); return null; } try { return zFactory.create( zClearText.substring( 0, zAt ) ); } catch ( RuntimeException e ) { LOGGER.warn().log( e, "create Failed in ", zFactory.getClass(), " with: '", zClearText, "'" ); return null; } } public final String toParamsString() { return ENCRYPTOR.encrypt( Strings.deNull( LLtoParamsString() ) + ":" + getRegistrationID() ); } abstract protected String getRegistrationID(); abstract protected String LLtoParamsString(); public static abstract class Factory { private String mRegistrationID; protected Factory( String pRegistrationID ) { mRegistrationID = Strings.assertNotNullNotEmpty( "RegistrationID", pRegistrationID ); } public void register() { Factory zFactory = FACTORIES.get( mRegistrationID ); if ( this != zFactory ) { if ( zFactory != null ) { throw new IllegalStateException( "Duplicate Factory Registration for: " + mRegistrationID ); } FACTORIES.put( mRegistrationID, this ); } } public String getRegistrationID() { return mRegistrationID; } protected abstract UriFragmentIdParams create( String pLLtoParamsString ); } private static final Map<String, Factory> FACTORIES = new HashMap<String, Factory>(); private static final SymmetricEncryptor ENCRYPTOR = AlphaNumericConstrainedSymmetricEncryptor.INSTANCE; } |
Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/uispecification/UriFragmentIdParams.java
Revision | Author | Commited | Message |
---|---|---|---|
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
821 Diff | GeorgeS | Sun 19 Aug, 2012 00:08:41 +0000 | |
802 Diff | GeorgeS | Wed 15 Aug, 2012 04:04:47 +0000 | |
801 Diff | GeorgeS | Wed 15 Aug, 2012 03:59:02 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |