directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r708915 - in /directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap: codec/ message/ message/spi/
Date Wed, 29 Oct 2008 14:28:02 GMT
Author: elecharny
Date: Wed Oct 29 07:28:01 2008
New Revision: 708915

URL: http://svn.apache.org/viewvc?rev=708915&view=rev
Log:
o Removed the TransformerSpi interface
o Transformed the TwixTransformer to be a static class, with static methods
o All the method in this class are now public, so they can be used outside of this package

Removed:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/TransformerSpi.java
Modified:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixProvider.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageEncoder.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/Provider.java

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixProvider.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixProvider.java?rev=708915&r1=708914&r2=708915&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixProvider.java
(original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixProvider.java
Wed Oct 29 07:28:01 2008
@@ -24,7 +24,6 @@
 import org.apache.directory.shared.ldap.message.spi.ProviderDecoder;
 import org.apache.directory.shared.ldap.message.spi.ProviderEncoder;
 import org.apache.directory.shared.ldap.message.spi.ProviderException;
-import org.apache.directory.shared.ldap.message.spi.TransformerSpi;
 
 
 
@@ -37,17 +36,12 @@
  */
 public class TwixProvider extends Provider
 {
-    /** The Transformer for this provider */
-    private final TwixTransformer transformer;
-
-
     /**
      * Creates an instance of a Twix based LDAP BER Provider.
      */
     private TwixProvider()
     {
         super( "Twix LDAP BER Provider", "Apache Directory Project" );
-        transformer = new TwixTransformer( this );
     }
 
     /** the singleton TwixProvider instance */
@@ -95,17 +89,4 @@
     {
         return new TwixDecoder( this, binaryAttributeDetector );
     }
-
-
-    /**
-     * Gets the transformer associated with this provider.
-     * 
-     * @return the provider's transformer.
-     * @throws org.apache.directory.shared.ldap.message.spi.ProviderException
-     *             if the provider or its transformer cannot be found
-     */
-    public TransformerSpi getTransformer() throws ProviderException
-    {
-        return transformer;
-    }
 }

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java?rev=708915&r1=708914&r2=708915&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
(original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/TwixTransformer.java
Wed Oct 29 07:28:01 2008
@@ -107,8 +107,6 @@
 import org.apache.directory.shared.ldap.message.control.PersistentSearchControl;
 import org.apache.directory.shared.ldap.message.control.SubentriesControl;
 import org.apache.directory.shared.ldap.message.extended.GracefulShutdownRequest;
-import org.apache.directory.shared.ldap.message.spi.Provider;
-import org.apache.directory.shared.ldap.message.spi.TransformerSpi;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.util.LdapURL;
 import org.apache.directory.shared.ldap.util.StringTools;
@@ -122,7 +120,7 @@
  * @author <a href="mailto:dev@directory.apache.org"> Apache Directory Project</a>
  * @version $Rev$, $Date$, 
  */
-public class TwixTransformer implements TransformerSpi
+public class TwixTransformer
 {
     /** The logger */
     private static Logger log = LoggerFactory.getLogger( TwixTransformer.class );
@@ -130,31 +128,6 @@
     /** A speedup for logger */
     private static final boolean IS_DEBUG = log.isDebugEnabled();
     
-    /** the provider this transformer is part of */
-    private final Provider provider;
-
-
-    /**
-     * Creates a passthrough transformer that really does nothing at all.
-     * 
-     * @param provider the provider for this transformer
-     */
-    public TwixTransformer(Provider provider)
-    {
-        this.provider = provider;
-    }
-
-
-    /**
-     * Gets the Provider associated with this SPI implementation object.
-     * 
-     * @return Provider.
-     */
-    public Provider getProvider()
-    {
-        return provider;
-    }
-
 
     /**
      * Transform an AbandonRequest message from a TwixMessage to a
@@ -164,7 +137,7 @@
      * @param messageId The message Id
      * @return A Snickers AbandonRequestImpl
      */
-    private Message transformAbandonRequest( LdapMessage twixMessage, int messageId )
+    public static Message transformAbandonRequest( LdapMessage twixMessage, int messageId
)
     {
         AbandonRequestImpl snickersMessage = new AbandonRequestImpl( messageId );
         AbandonRequest abandonRequest = twixMessage.getAbandonRequest();
@@ -183,7 +156,7 @@
      * @param messageId The message Id
      * @return A Snickers AddRequestImpl
      */
-    private Message transformAddRequest( LdapMessage twixMessage, int messageId )
+    public static Message transformAddRequest( LdapMessage twixMessage, int messageId )
     {
         AddRequestImpl snickersMessage = new AddRequestImpl( messageId );
         AddRequest addRequest = twixMessage.getAddRequest();
@@ -205,7 +178,7 @@
      * @param messageId The message Id
      * @return A Snickers BindRequestImpl
      */
-    private Message transformBindRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformBindRequest( LdapMessage twixMessage, int messageId )
     {
         BindRequestImpl snickersMessage = new BindRequestImpl( messageId );
         BindRequest bindRequest = twixMessage.getBindRequest();
@@ -248,7 +221,7 @@
      * @param messageId The message Id
      * @return a Snickers BindResponseImpl
      */
-    private Message transformBindResponse( LdapMessage twixMessage, int messageId )
+    public static  Message transformBindResponse( LdapMessage twixMessage, int messageId
)
     {
         BindResponseImpl snickersMessage = new BindResponseImpl( messageId );
         BindResponse bindResponse = twixMessage.getBindResponse();
@@ -268,7 +241,7 @@
      * @param twixResult the Twix LdapResult representation
      * @param snickersResult the Snickers LdapResult representation
      */
-    private void transformLdapResultTwixToSnickers( LdapResult twixResult, 
+    public static  void transformLdapResultTwixToSnickers( LdapResult twixResult, 
         org.apache.directory.shared.ldap.message.LdapResult snickersResult )
     {
         snickersResult.setErrorMessage( twixResult.getErrorMessage() );
@@ -312,7 +285,7 @@
      * @param messageId The message Id
      * @return A Snickers CompareRequestImpl
      */
-    private Message transformCompareRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformCompareRequest( LdapMessage twixMessage, int messageId
)
     {
         CompareRequestImpl snickersMessage = new CompareRequestImpl( messageId );
         CompareRequest compareRequest = twixMessage.getCompareRequest();
@@ -344,7 +317,7 @@
      * @param messageId The message Id
      * @return A Snickers DeleteRequestImpl
      */
-    private Message transformDelRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformDelRequest( LdapMessage twixMessage, int messageId )
     {
         DeleteRequestImpl snickersMessage = new DeleteRequestImpl( messageId );
         DelRequest delRequest = twixMessage.getDelRequest();
@@ -364,7 +337,7 @@
      * @param messageId The message Id
      * @return A Snickers ExtendedRequestImpl
      */
-    private Message transformExtendedRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformExtendedRequest( LdapMessage twixMessage, int messageId
)
     {
         ExtendedRequest extendedRequest = twixMessage.getExtendedRequest();
         ExtendedRequestImpl snickersMessage;
@@ -396,7 +369,7 @@
      * @param messageId The message Id
      * @return A Snickers ModifyDNRequestImpl
      */
-    private Message transformModifyDNRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformModifyDNRequest( LdapMessage twixMessage, int messageId
)
     {
         ModifyDnRequestImpl snickersMessage = new ModifyDnRequestImpl( messageId );
         ModifyDNRequest modifyDNRequest = twixMessage.getModifyDNRequest();
@@ -424,7 +397,7 @@
      * @param messageId The message Id
      * @return A Snickers ModifyRequestImpl
      */
-    private Message transformModifyRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformModifyRequest( LdapMessage twixMessage, int messageId
)
     {
         ModifyRequestImpl snickersMessage = new ModifyRequestImpl( messageId );
         ModifyRequest modifyRequest = twixMessage.getModifyRequest();
@@ -447,12 +420,12 @@
 
 
     /**
-     * Transform the Filter part of a SearchRequest to en ExprNode
+     * Transform the Filter part of a SearchRequest to an ExprNode
      * 
      * @param twixFilter The filter to be transformed
      * @return An ExprNode
      */
-    private ExprNode transformFilter( Filter twixFilter )
+    public static  ExprNode transformFilter( Filter twixFilter )
     {
         if ( twixFilter != null )
         {
@@ -613,7 +586,7 @@
      * @param messageId The message Id
      * @return A Snickers SearchRequestImpl
      */
-    private Message transformSearchRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformSearchRequest( LdapMessage twixMessage, int messageId
)
     {
         SearchRequestImpl snickersMessage = new SearchRequestImpl( messageId );
         SearchRequest searchRequest = twixMessage.getSearchRequest();
@@ -687,7 +660,7 @@
      * @param messageId The message Id
      * @return A Snickers UnBindRequestImpl
      */
-    private Message transformUnBindRequest( LdapMessage twixMessage, int messageId )
+    public static  Message transformUnBindRequest( LdapMessage twixMessage, int messageId
)
     {
         return new UnbindRequestImpl( messageId );
     }
@@ -699,7 +672,7 @@
      * @param obj the object to transform
      * @return the object transformed
      */
-    public Message transform( Object obj )
+    public static  Message transform( Object obj )
     {
         LdapMessage twixMessage = ( LdapMessage ) obj;
         int messageId = twixMessage.getMessageId();
@@ -859,7 +832,7 @@
      * @param snickersLdapResult the Snickers LdapResult to transform
      * @return A Twix LdapResult
      */
-    private LdapResult transformLdapResult( LdapResultImpl snickersLdapResult )
+    public static  LdapResult transformLdapResult( LdapResultImpl snickersLdapResult )
     {
         LdapResult twixLdapResult = new LdapResult();
 
@@ -906,7 +879,7 @@
      * @param twixMessage The Twix AddResponse to produce
      * @param snickersMessage The incoming Snickers AddResponse
      */
-    private void transformAddResponse( LdapMessage twixMessage, Message snickersMessage )
+    public static  void transformAddResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         AddResponseImpl snickersAddResponse = ( AddResponseImpl ) snickersMessage;
 
@@ -926,7 +899,7 @@
      * @param twixMessage The Twix BindResponse to produce
      * @param snickersMessage The incoming Snickers BindResponse
      */
-    private void transformBindResponse( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformBindResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         BindResponseImpl snickersBindResponse = ( BindResponseImpl ) snickersMessage;
 
@@ -955,7 +928,7 @@
      * @param twixMessage The Twix BindRequest to produce
      * @param snickersMessage The incoming Snickers BindRequest
      */
-    private void transformBindRequest( LdapMessage twixMessage, Message snickersMessage )
+    public static  void transformBindRequest( LdapMessage twixMessage, Message snickersMessage
)
     {
         BindRequestImpl snickersBindRequest = ( BindRequestImpl ) snickersMessage;
 
@@ -990,7 +963,7 @@
      * @param twixMessage The Twix CompareResponse to produce
      * @param snickersMessage The incoming Snickers CompareResponse
      */
-    private void transformCompareResponse( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformCompareResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         CompareResponseImpl snickersCompareResponse = ( CompareResponseImpl ) snickersMessage;
 
@@ -1011,7 +984,7 @@
      * @param twixMessage The Twix DelResponse to produce
      * @param snickersMessage The incoming Snickers DelResponse
      */
-    private void transformDelResponse( LdapMessage twixMessage, Message snickersMessage )
+    public static  void transformDelResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         DeleteResponseImpl snickersDelResponse = ( DeleteResponseImpl ) snickersMessage;
 
@@ -1031,7 +1004,7 @@
      * @param twixMessage The Twix ExtendedResponse to produce
      * @param snickersMessage The incoming Snickers ExtendedResponse
      */
-    private void transformExtendedResponse( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformExtendedResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         ExtendedResponseImpl snickersExtendedResponse = ( ExtendedResponseImpl ) snickersMessage;
         ExtendedResponse extendedResponse = new ExtendedResponse();
@@ -1065,7 +1038,7 @@
      * @param twixMessage The Twix ModifyResponse to produce
      * @param snickersMessage The incoming Snickers ModifyResponse
      */
-    private void transformModifyResponse( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformModifyResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         ModifyResponseImpl snickersModifyResponse = ( ModifyResponseImpl ) snickersMessage;
 
@@ -1085,7 +1058,7 @@
      * @param twixMessage The Twix ModifyDNResponse to produce
      * @param snickersMessage The incoming Snickers ModifyDNResponse
      */
-    private void transformModifyDNResponse( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformModifyDNResponse( LdapMessage twixMessage, Message snickersMessage
)
     {
         ModifyDnResponseImpl snickersModifyDNResponse = ( ModifyDnResponseImpl ) snickersMessage;
 
@@ -1106,7 +1079,7 @@
      * @param twixMessage The Twix SearchResultDone to produce
      * @param snickersMessage The incoming Snickers SearchResponseDone
      */
-    private void transformSearchResultDone( LdapMessage twixMessage, Message snickersMessage
)
+    public static void transformSearchResultDone( LdapMessage twixMessage, Message snickersMessage
)
     {
         SearchResponseDoneImpl snickersSearchResponseDone = ( SearchResponseDoneImpl ) snickersMessage;
         SearchResultDone searchResultDone = new SearchResultDone();
@@ -1126,7 +1099,7 @@
      * @param twixMessage The Twix SearchResultEntry to produce
      * @param snickersMessage The incoming Snickers SearchResponseEntry
      */
-    private void transformSearchResultEntry( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformSearchResultEntry( LdapMessage twixMessage, Message snickersMessage
)
     {
         SearchResponseEntryImpl snickersSearchResultResponse = ( SearchResponseEntryImpl
) snickersMessage;
         SearchResultEntry searchResultEntry = new SearchResultEntry();
@@ -1150,7 +1123,7 @@
      * @param twixMessage The Twix SearchResultReference to produce
      * @param snickersMessage The incoming Snickers SearchResponseReference
      */
-    private void transformSearchResultReference( LdapMessage twixMessage, Message snickersMessage
)
+    public static  void transformSearchResultReference( LdapMessage twixMessage, Message
snickersMessage )
     {
         SearchResponseReferenceImpl snickersSearchResponseReference = ( SearchResponseReferenceImpl
) snickersMessage;
         SearchResultReference searchResultReference = new SearchResultReference();
@@ -1191,7 +1164,7 @@
      * @param msg the message to transform
      * @return the msg transformed
      */
-    public Object transform( Message msg )
+    public static Object transform( Message msg )
     {
         if ( IS_DEBUG )
         {
@@ -1272,7 +1245,7 @@
      * @param twixMessage the Twix message
      * @param msg the Snickers message
      */
-    private void transformControlsTwixToSnickers( LdapMessage twixMessage, Message msg )
+    public static void transformControlsTwixToSnickers( LdapMessage twixMessage, Message
msg )
     {
         if ( twixMessage.getControls() == null )
         {
@@ -1291,7 +1264,7 @@
      * @param twixMessage The Twix SearchResultReference to produce
      * @param msg The incoming Snickers SearchResponseReference
      */
-    private void transformControls( LdapMessage twixMessage, Message msg )
+    public static void transformControls( LdapMessage twixMessage, Message msg )
     {
         for ( javax.naming.ldap.Control control:msg.getControls().values() )
         {

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java?rev=708915&r1=708914&r2=708915&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
(original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageDecoder.java
Wed Oct 29 07:28:01 2008
@@ -26,10 +26,10 @@
 import org.apache.directory.shared.asn1.codec.stateful.DecoderMonitor;
 import org.apache.directory.shared.asn1.codec.stateful.StatefulDecoder;
 import org.apache.directory.shared.ldap.codec.ResponseCarryingException;
+import org.apache.directory.shared.ldap.codec.TwixTransformer;
 import org.apache.directory.shared.ldap.message.spi.BinaryAttributeDetector;
 import org.apache.directory.shared.ldap.message.spi.Provider;
 import org.apache.directory.shared.ldap.message.spi.ProviderDecoder;
-import org.apache.directory.shared.ldap.message.spi.TransformerSpi;
 
 import java.io.InputStream;
 import java.util.Hashtable;
@@ -50,9 +50,6 @@
     /** the ASN.1 provider's decoder */
     private final ProviderDecoder decoder;
 
-    /** the ASN.1 provider's transformer */
-    private final TransformerSpi transformer;
-
     /** the Message decode operation callback */
     private DecoderCallback cb;
 
@@ -71,14 +68,13 @@
         
         this.provider = Provider.getProvider( providerEnv );
         this.decoder = this.provider.getDecoder( binaryAttributeDetector );
-        this.transformer = this.provider.getTransformer();
         this.decoder.setCallback( new DecoderCallback()
         {
             public void decodeOccurred( StatefulDecoder decoder, Object decoded )
             {
                 if ( decoded instanceof Asn1Object )
                 {
-                    cb.decodeOccurred( decoder, transformer.transform( decoded ) );
+                    cb.decodeOccurred( decoder, TwixTransformer.transform( decoded ) );
                 }
                 else
                 {
@@ -130,7 +126,7 @@
         }
 
         // Call on transformer to convert stub based PDU into Message based PDU
-        return transformer.transform( providerEnvelope );
+        return TwixTransformer.transform( providerEnvelope );
     }
 
 

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageEncoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageEncoder.java?rev=708915&r1=708914&r2=708915&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageEncoder.java
(original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/MessageEncoder.java
Wed Oct 29 07:28:01 2008
@@ -26,10 +26,10 @@
 import org.apache.directory.shared.asn1.codec.EncoderException;
 import org.apache.directory.shared.asn1.codec.stateful.EncoderCallback;
 import org.apache.directory.shared.asn1.codec.stateful.EncoderMonitor;
+import org.apache.directory.shared.ldap.codec.TwixTransformer;
 import org.apache.directory.shared.ldap.message.spi.Provider;
 import org.apache.directory.shared.ldap.message.spi.ProviderEncoder;
 import org.apache.directory.shared.ldap.message.spi.ProviderException;
-import org.apache.directory.shared.ldap.message.spi.TransformerSpi;
 
 
 /**
@@ -47,9 +47,6 @@
     /** the provider's encoder */
     private final ProviderEncoder encoder;
 
-    /** the provider's transformer */
-    private final TransformerSpi transformer;
-
 
     /**
      * Creates a MessageEncoder using default properties for enabling a BER
@@ -61,7 +58,6 @@
     {
         this.provider = Provider.getProvider( Provider.getEnvironment() );
         this.encoder = provider.getEncoder();
-        this.transformer = provider.getTransformer();
     }
 
 
@@ -75,7 +71,7 @@
     public void encodeBlocking( Object lock, OutputStream out, Object obj ) throws ProviderException
     {
         // transform to build provider specific intermediate envelope
-        Object providerEnvelope = transformer.transform( ( Message ) obj );
+        Object providerEnvelope = TwixTransformer.transform( ( Message ) obj );
 
         // now encode provider's intermediate stub into a PDU onto stream
         this.encoder.encodeBlocking( lock, out, providerEnvelope );
@@ -88,7 +84,7 @@
     public ByteBuffer encodeBlocking( Object obj ) throws ProviderException
     {
         // transform to build provider specific intermediate envelope
-        Object providerEnvelope = transformer.transform( ( Message ) obj );
+        Object providerEnvelope = TwixTransformer.transform( ( Message ) obj );
 
         // now encode provider's intermediate stub into PDU in a byte buffer
         return this.encoder.encodeBlocking( providerEnvelope );
@@ -122,7 +118,7 @@
     public void encode( Object obj ) throws EncoderException
     {
         // transform to build provider specific intermediate envelope
-        Object providerEnvelope = transformer.transform( ( Message ) obj );
+        Object providerEnvelope = TwixTransformer.transform( ( Message ) obj );
 
         // now give intermediate envelope to provider's encoder
         this.encoder.encode( providerEnvelope );

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/Provider.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/Provider.java?rev=708915&r1=708914&r2=708915&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/Provider.java
(original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/spi/Provider.java
Wed Oct 29 07:28:01 2008
@@ -181,16 +181,6 @@
             throws ProviderException;
 
 
-    /**
-     * Gets the transformer associated with this provider.
-     * 
-     * @return the provider's transformer.
-     * @throws ProviderException
-     *             if the provider or its transformer cannot be found
-     */
-    public abstract TransformerSpi getTransformer() throws ProviderException;
-
-
     // ------------------------------------------------------------------------
     // Factory/Environment Methods
     // ------------------------------------------------------------------------



Mime
View raw message